成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

1602顯示函數(shù)C語言 c++顯示函數(shù)

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

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

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

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

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

//LCD腳接法,根據(jù)實際接法定義

#define LCM_D4_RS P3_2//第4腳數(shù)據(jù)/命令

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

#define LCM_D6_E P3_7//第6腳使能

#define LCM_D16_BLK P3_0//背光負(fù)極

#define LCM_D7_Data P1//第7-14腳數(shù)據(jù)

//LCD腳接法,根據(jù)實際接法定義

#define Busy 0x80 //用于檢測LCM狀態(tài)字中的Busy標(biāo)識

#define _LCD_BIT_IS 4 //CPU與LCD1602間使用DB7-DB4這4根數(shù)據(jù)線進(jìn)行傳輸

#include at89x51.h //頭文件

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

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

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

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); //讀狀態(tài)

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

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

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

void main(void)

{

LCMInit(); //LCM初始化

LCM_D16_BLK = 0; //開背光燈

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

TH0 = 0x3c; // 預(yù)置產(chǎn)生50ms時基信號

TL0 = 0xb0;

EA = 1; // 開總中斷

ET0 = 1; // 定時/計數(shù)器0允許中斷

TR0 = 1; // 開定時/計數(shù)器0

DisplayListChar(0, 0, Greetings_Line1);

DisplayListChar(0, 1, Greetings_Line2);

// while(1);

}

//

void LCMInit(void) //LCM初始化

{

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

Delay5Ms();

WriteCommandLCM(0x38,0);

Delay5Ms();

WriteCommandLCM(0x38,0);

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

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

#else //CPU與LCD1602間使用DB0-DB4這4根數(shù)據(jù)線進(jìn)行傳輸

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

#endif

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

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

WriteCommandLCM(0x06,1); // 顯示光標(biāo)移動設(shè)置

WriteCommandLCM(0x0C,1); // 顯示開及光標(biāo)設(shè)置

}

//寫數(shù)據(jù)

void WriteDataLCM(unsigned char WDLCM)

{

ReadStatusLCM(); //檢測忙

LCM_D4_RS = 1;

LCM_D5_RW = 0;

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

{

LCM_D7_Data = WDLCM;

}

#else //CPU與LCD1602間使用DB0-DB4這4根數(shù)據(jù)線進(jìn)行傳輸

{

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(); //根據(jù)需要檢測忙

LCM_D4_RS = 0;

LCM_D5_RW = 0;

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

{

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;

}

//讀狀態(tài)

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; //當(dāng)要顯示第二行時地址碼+0x40;

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

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

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++) //若到達(dá)字串尾則退出

{

if (X = 0xF) //X坐標(biāo)應(yīng)小于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中斷服務(wù)程序(產(chǎn)生50ms時基信號)

if(cou 60)

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

cou = 0; // 軟計數(shù)器清零

}

cou++; // 軟計數(shù)器加1

TH0 = 0x3c; // 重置定時常數(shù)

TL0 = 0xb0;

}

用C語言來編寫用1602來顯示的計數(shù)器

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

main()

{

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

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

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單片機(jī)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++);

}

/*

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

*?函數(shù)名稱:lcd1602_CheckBusy()

*?函數(shù)功能:狀態(tài)查詢

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

*/

void?lcd1602_CheckBusy()

{

do

{

lcd1602_busy=1;

lcd1602_rs=0;

lcd1602_rw=1;

lcd1602_e=0;

lcd1602_e=1;

}

while(lcd1602_busy);

}

/*

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

*?函數(shù)名稱:?lcd1602_WriteCmd()

*?函數(shù)功能:寫命令

*?入口參數(shù):命令字

*?出口參數(shù):無

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

*/

void?lcd1602_WriteCmd(const?uchar?cmd)

{

lcd1602_CheckBusy();

lcd1602_rs=0;

lcd1602_rw=0;

lcd1602_e=1;

LCD1602_PORT=cmd;

lcd1602_e=0;

}

/*

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

*?函數(shù)名稱:lcd1602_WriteData()

*?函數(shù)功能:寫數(shù)據(jù)

*?入口參數(shù):c--待寫數(shù)據(jù)

*?出口參數(shù):無

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

*/

void?lcd1602_WriteData(const?uchar?c)

{

lcd1602_CheckBusy();

lcd1602_rs=1;

lcd1602_rw=0;

lcd1602_e=1;

LCD1602_PORT=c;

lcd1602_e=0;

}

/*

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

*?函數(shù)名稱:lcd1602_Init()

*?函數(shù)功能:初始化LCD

*?入口參數(shù):無

*?出口參數(shù):無

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

*/

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

}

/*

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

*?函數(shù)名稱:lcd1602_Display()

*?函數(shù)功能:?字符顯示

*?入口參數(shù):ptr--字符或字符串指針

*?出口參數(shù):無

*?說????明:用戶可通過以下方式來調(diào)用:

*???????????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;??//發(fā)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單片機(jī)c語言 液晶顯示1602怎么顯示一個動態(tài)的數(shù)據(jù)?

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

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

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

{

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

? ? ? ? ? ? ? ? ? ? ? ? //假設(shè)是兩位

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

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

}

當(dāng)前名稱:1602顯示函數(shù)C語言 c++顯示函數(shù)
轉(zhuǎn)載注明:http://jinyejixie.com/article22/ddieocc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、動態(tài)網(wǎng)站品牌網(wǎng)站設(shè)計、電子商務(wù)網(wǎng)站策劃、用戶體驗

廣告

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

手機(jī)網(wǎng)站建設(shè)
牡丹江市| 蓝田县| 张家口市| 武冈市| 九台市| 南开区| 南京市| 蓬安县| 清徐县| 海盐县| 长沙市| 镇平县| 台前县| 若尔盖县| 维西| 民乐县| 兴业县| 祥云县| 广州市| 谷城县| 平定县| 黑龙江省| 屯门区| 昭觉县| 开封县| 普定县| 沛县| 额尔古纳市| 长阳| 垦利县| 呼图壁县| 四川省| 永泰县| 东安县| 乌拉特前旗| 洪湖市| 蒙自县| 安宁市| 山丹县| 泾川县| 特克斯县|