免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

1602顯示函數C語言 c++顯示函數

LCD1602用C語言編程如何顯示字符?

void delay(uint z);//延時,1微妙時間有點短

十載的高邑網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網站的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整高邑建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。創新互聯公司從事“高邑網站設計”,“高邑網站推廣”以來,每個客戶項目都認真落實執行。

你看看下面我做的程序,在2051+12M晶振通過你可以套用這個程序,不行的話就改長延時

/******************AT89S51使用12M晶振*******************/

//LCD腳接法,根據實際接法定義

#define LCM_D4_RS P3_2//第4腳數據/命令

#define LCM_D5_RW P3_5//第5腳讀/寫

#define LCM_D6_E P3_7//第6腳使能

#define LCM_D16_BLK P3_0//背光負極

#define LCM_D7_Data P1//第7-14腳數據

//LCD腳接法,根據實際接法定義

#define Busy 0x80 //用于檢測LCM狀態字中的Busy標識

#define _LCD_BIT_IS 4 //CPU與LCD1602間使用DB7-DB4這4根數據線進行傳輸

#include at89x51.h //頭文件

#include string.h //strlen()函數頭文件

void LCMInit(void); //LCM初始化化

void WriteDataLCM(unsigned char WDLCM); //寫數據

void WriteCommandLCM(unsigned char WCLCM,int BuysC); //寫指令

void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); //按指定位置顯示一個字符

void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);//按指定位置顯示一串字符

void Delay5Ms(void); //5ms延時

unsigned char ReadStatusLCM(void); //讀狀態

unsigned char code Greetings_Line1[] = {"Welcome Control"};

unsigned char code Greetings_Line2[] = {" ChuLong Make "};

data unsigned char cou = 0; // 定義軟計數器,放在程序最前面的寄存器定義部分

void main(void)

{

LCMInit(); //LCM初始化

LCM_D16_BLK = 0; //開背光燈

TMOD = 0x11; // 定時/計數器0,1工作于方式1 16位定時

TH0 = 0x3c; // 預置產生50ms時基信號

TL0 = 0xb0;

EA = 1; // 開總中斷

ET0 = 1; // 定時/計數器0允許中斷

TR0 = 1; // 開定時/計數器0

DisplayListChar(0, 0, Greetings_Line1);

DisplayListChar(0, 1, Greetings_Line2);

// while(1);

}

//

void LCMInit(void) //LCM初始化

{

WriteCommandLCM(0x38,0); //三次顯示模式設置,不檢測忙信號

Delay5Ms();

WriteCommandLCM(0x38,0);

Delay5Ms();

WriteCommandLCM(0x38,0);

#if(_LCD_BIT_IS == 8) //CPU與LCD1602間使用DB0-DB8這8根數據線進行傳輸

WriteCommandLCM(0x38,1); //顯示8位模式設置,開始要求每次檢測忙信號

#else //CPU與LCD1602間使用DB0-DB4這4根數據線進行傳輸

WriteCommandLCM(0x28,1); //顯示4位模式設置,開始要求每次檢測忙信號

#endif

WriteCommandLCM(0x08,1); //關閉顯示

WriteCommandLCM(0x01,1); //顯示清屏

WriteCommandLCM(0x06,1); // 顯示光標移動設置

WriteCommandLCM(0x0C,1); // 顯示開及光標設置

}

//寫數據

void WriteDataLCM(unsigned char WDLCM)

{

ReadStatusLCM(); //檢測忙

LCM_D4_RS = 1;

LCM_D5_RW = 0;

#if(_LCD_BIT_IS == 8) //CPU與LCD1602間使用DB0-DB8這8根數據線進行傳輸

{

LCM_D7_Data = WDLCM;

}

#else //CPU與LCD1602間使用DB0-DB4這4根數據線進行傳輸

{

LCM_D7_Data = 0x0f; //清高四位

LCM_D7_Data |= WDLCM 0xf0; //寫高四位

LCM_D6_E = 0;

LCM_D6_E = 1;

WDLCM = WDLCM 4; //低四位移到高四位

LCM_D7_Data = 0x0f; //清高四位

LCM_D7_Data |= WDLCM 0xf0; //寫低四位

}

#endif

LCM_D6_E = 0;

LCM_D6_E = 1;

}

//寫指令

void WriteCommandLCM(unsigned char WCLCM,int BuysC) //BuysC為0時忽略忙檢測

{

if(BuysC)

ReadStatusLCM(); //根據需要檢測忙

LCM_D4_RS = 0;

LCM_D5_RW = 0;

#if(_LCD_BIT_IS == 8) //CPU與LCD1602間使用DB7-DB4這4根數據線進行傳輸

{

LCM_D7_Data = WCLCM;

}

#else

{

LCM_D7_Data = 0x0f; //清高四位

LCM_D7_Data |= WCLCM 0xf0; //寫高四位

LCM_D6_E = 0;

LCM_D6_E = 1;

WCLCM = WCLCM 4; //低四位移到高四位

LCM_D7_Data = 0x0f; //清高四位

LCM_D7_Data |= WCLCM 0xf0; //寫低四位

}

#endif

LCM_D6_E = 0;

LCM_D6_E = 1;

}

//讀狀態

unsigned char ReadStatusLCM(void)

{

LCM_D7_Data = 0xff;

LCM_D4_RS = 0;

LCM_D5_RW = 1;

LCM_D6_E = 1;

while (LCM_D7_Data Busy); //檢測忙信號

return(LCM_D7_Data);

}

//按指定位置顯示一個字符

void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)

{

Y = 0x1;

X = 0xF; //限制X不能大于15,Y不能大于1

if (Y) X |= 0x40; //當要顯示第二行時地址碼+0x40;

X |= 0x80; //算出指令碼

WriteCommandLCM(X, 0); //這里不檢測忙信號,發送地址碼

WriteDataLCM(DData);

}

//按指定位置顯示一串字符

void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)

{

int ListLength;

Y = 0x1;

X = 0xF; //限制X不能大于15,Y不能大于1

for(ListLength = 0;ListLength strlen(DData);ListLength++) //若到達字串尾則退出

{

if (X = 0xF) //X坐標應小于0xF

{

DisplayOneChar(X, Y, DData[ListLength]); //顯示單個字符

X++;

}

}

}

//5ms延時

void Delay5Ms(void)

{

unsigned int TempCyc = 5552;

while(TempCyc--);

}

//10s延時

void tiem0(void) interrupt 1

{ // T/C0中斷服務程序(產生50ms時基信號)

if(cou 60)

{ // 計數值到1000(1s) (****時間為倒計時****)

cou = 0; // 軟計數器清零

}

cou++; // 軟計數器加1

TH0 = 0x3c; // 重置定時常數

TL0 = 0xb0;

}

用C語言來編寫用1602來顯示的計數器

我才學C。你說的我就能幫你搞個加減乘除運算了。以下是代碼。#includestdio.h

main()

{

int i=1,flag=0; float a,b,c; char v;

printf("輸入數字完成運算");

scanf("%f%c%f",a,v,b);

while(v!='#')

{ switch(v)

{ case '+':c=a+b;break;

case '-':c=a-b;break;

case '*':c=a*b;break;

case '/':

if(b==0) flag=1;

else c=a/b; break;

default: flag=2;

}

if(flag==0)

{

printf("%f%c%f=%f\n",a,v,b,c);

i++;

}

if(flag==1) printf("shucuole");

if(flag==2) printf("zifucuole");

printf("jixushuchu");

scanf("%f%c%f",a,v,b);

}

}我是個新手。但可以保證代碼的正確

51單片機1602怎么顯示一行字符,c語言的

#define?LCD1602_FLAG

#define?LCD1602_PORT?P0

#includereg51.h

#includestddef.h

#define?uchar?unsigned?char

sbit?lcd1602_rs=P2^0;

sbit?lcd1602_e=P2^2;

sbit?lcd1602_rw=P2^1;

sbit?lcd1602_busy=P0^7;

uchar?str[]="This?is?Key?Test";

uchar?keyval,keystr[16];

void?delay(uchar?a)

{

uchar?i;

while(a--)for(i=0;i120;i++);

}

/*

************************************

*?函數名稱:lcd1602_CheckBusy()

*?函數功能:狀態查詢

************************************

*/

void?lcd1602_CheckBusy()

{

do

{

lcd1602_busy=1;

lcd1602_rs=0;

lcd1602_rw=1;

lcd1602_e=0;

lcd1602_e=1;

}

while(lcd1602_busy);

}

/*

***************************************

*?函數名稱:?lcd1602_WriteCmd()

*?函數功能:寫命令

*?入口參數:命令字

*?出口參數:無

***************************************

*/

void?lcd1602_WriteCmd(const?uchar?cmd)

{

lcd1602_CheckBusy();

lcd1602_rs=0;

lcd1602_rw=0;

lcd1602_e=1;

LCD1602_PORT=cmd;

lcd1602_e=0;

}

/*

*******************************************

*?函數名稱:lcd1602_WriteData()

*?函數功能:寫數據

*?入口參數:c--待寫數據

*?出口參數:無

*********************************************

*/

void?lcd1602_WriteData(const?uchar?c)

{

lcd1602_CheckBusy();

lcd1602_rs=1;

lcd1602_rw=0;

lcd1602_e=1;

LCD1602_PORT=c;

lcd1602_e=0;

}

/*

***********************************************

*?函數名稱:lcd1602_Init()

*?函數功能:初始化LCD

*?入口參數:無

*?出口參數:無

***********************************************

*/

void?lcd1602_Init()

{

lcd1602_WriteCmd(0x38); //顯示模式為8位2行5*7點陣

lcd1602_WriteCmd(0x0c);?//display?enable,flag?enable,flash?enable,

lcd1602_WriteCmd(0x06);?//flag?move?to?right,screen?don't?move

lcd1602_WriteCmd(0x01);?//clear?screen

}

/*

************************************************

*?函數名稱:lcd1602_Display()

*?函數功能:?字符顯示

*?入口參數:ptr--字符或字符串指針

*?出口參數:無

*?說????明:用戶可通過以下方式來調用:

*???????????1)lcd1602_Display("Hello,world!");

*???????????2)?INT8U?存儲類型?txt[]="要顯示的字符串";

*??????????????或者?INT8U?存儲類型?txt[]={'t','x','t',..,'\0'};

*??????????????INT8U?*ptr;

*??????????????ptr=txt;

*??????????????lcd1602_Display(ptr);

*??????????????或?lcd1602_Display(txt);

*??????????????或?lcd1602_Display(txt);

************************************************

*/

void?lcd1602_Display(const?uchar?*ptr,uchar?line)

{

uchar?data?i=0;

uchar?*data?q;

q=ptr;

switch(line)

{

case?0:

lcd1602_WriteCmd(0x80);

while(q!=NULL??(*q!='\0')??i16)

{

lcd1602_WriteData(*q);

q++;

i++;

}

break;

case?1:

lcd1602_WriteCmd(0xc0);

while(q!=NULL??(*q!='\0')??i16)

{

lcd1602_WriteData(*q);

q++;

i++;

}

break;

}

}

uchar?kbscan(void)

{

unsigned?char?sccode,recode;

P3=0x0f;??//發0掃描,列線輸入

if?((P3??0x0f)?!=?0x0f)??//有鍵按下

{

delay(20);???//延時去抖動

if?((P30x0f)!=?0x0f)

{

sccode?=?0xef;????//逐行掃描初值

while((sccode0x01)!=0)

{

P3=sccode;

if((P30x0f)!=0x0f)

{

recode=(P30x0f)|0xf0;

while((P30x0f)!=0x0f);//等待鍵抬起

return((~sccode)+(~recode));

?}

else

sccode=(sccode1)|0x01;

}

}

}

return?0;??//無鍵按下,返回0

}

uchar?getkey(void)

{

uchar?key;

key=kbscan();

if(key==0){keyval=0xff;return(0);}

switch(key)

{

case?0x11:keyval=7;break;

case?0x12:keyval=4;break;

case?0x14:keyval=1;break;

case?0x18:keyval=10;break;

case?0x21:keyval=8;break;

case?0x22:keyval=5;break;

case?0x24:keyval=2;break;

case?0x28:keyval=0;break;

case?0x41:keyval=9;break;

case?0x42:keyval=6;break;

case?0x44:keyval=3;break;

case?0x48:keyval=11;break;

case?0x81:keyval=12;break;

case?0x82:keyval=13;break;

case?0x84:keyval=14;break;

case?0x88:keyval=15;break;

default:keyval=0xff;break;

}

if(keyval!=0xff)return(1);

else?return(0);

}

main()

{

uchar?num;

lcd1602_Init();

lcd1602_Display(str,0);

while(1)

{

if(getkey())

{

keystr[num]=keyval+0x30;

lcd1602_Display(keystr,1);

num++;

num%=16;

}

}

}

51單片機c語言 液晶顯示1602怎么顯示一個動態的數據?

51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8031單片機,后來隨著Flash rom技術的發展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用于工業測控系統之中。很多公司都有51系列的兼容機型推出,今后很長的一段時間內將占有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。需要注意的是52系列的單片機一般不具備自編程能力。

寫一個函數把整型數據每位提取出來,就可以顯示每位數據了。

void display_tem(x,y,int getdata) //getdata就是你采集來的數據吧~~?

{

display_char(x,y,getdata/10);//我不知道你的溫度是幾位的整數~ 這里我

? ? ? ? ? ? ? ? ? ? ? ? //假設是兩位

? ? ? ? ? ? ? ? ? ? ? ?//display_char用你自己的字符顯示函數替代 ?

display_char(x+1,y,getdata%10);

}

當前名稱:1602顯示函數C語言 c++顯示函數
轉載注明:http://m.newbst.com/article22/ddieocc.html

成都網站建設公司_創新互聯,為您提供移動網站建設動態網站品牌網站設計電子商務網站策劃用戶體驗

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設