日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀] 給STC89C51安一個LCD1602液晶顯示器。寫一段程序,使得STC89C51有計時、顯示功能。當(dāng)給STC89C51一個連續(xù)的高電平時,單片機開始計時,同時在顯示器上顯示計時的秒數(shù);當(dāng)結(jié)束高電平時,計時停止,但是顯

給STC89C51安一個LCD1602液晶顯示器。寫一段程序,使得STC89C51有計時、顯示功能。


當(dāng)給STC89C51一個連續(xù)的高電平時,單片機開始計時,同時在顯示器上顯示計時的秒數(shù);

當(dāng)結(jié)束高電平時,計時停止,但是顯示器上保留計時數(shù)值。


當(dāng)下一個高電平來到,顯示器接著上次的時間繼續(xù)計時。

簡單的講就是說顯示器顯示幾個間斷的高電平持續(xù)的時間之和。


再設(shè)一個腳實現(xiàn)清零。


這個題目,實際上就是設(shè)計一個采用液晶顯示的秒表。



LCD1602和51單片機的之間,如果采用常規(guī)接法,共需要11條線;


http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/eafb581918de515237fa4148.html


如果覺得LCD1602占用單片機的引腳太多,可以只用6條引線來實現(xiàn)對液晶屏的驅(qū)動。詳情可看下列的鏈接:

http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/32d640df73343d4bcdbf1ac8.html

------------------------------------


驅(qū)動LCD1602,很簡單,關(guān)鍵是要寫好“寫指令”和“寫數(shù)據(jù)”兩個函數(shù),其它的設(shè)置、顯示等等,就不難了。


晶振選用11.0592/12MHz,均可。


實現(xiàn)脈沖長度計時、顯示的程序如下:


#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineLCD_IOP2


sbitLCD_RS=P3^0;

sbitLCD_RW=P3^7;

sbitLCD_EN=P3^1;

sbitsw1=P3^2;

sbitsw2=P3^3;


ucharcount;

uintsec;

ucharcodeLCD_line1[]="PulseContinued:";

ucharcodeLCD_line2[]="00000s";

//---------------------------------------------------

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)for(y=10;y>0;y--);

}

//---------------------------------------------------

voidW_LCD_Com(ucharcom)//寫指令

{

LCD_RS=0;LCD_EN=0;//LCD_RS和R/W同時為低電平時,可以寫入指令

LCD_IO=com;delay(5);//下面用EN輸入一個高脈沖

LCD_EN=1;delay(5);LCD_EN=0;

}

//---------------------------------------------------

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

{

LCD_RS=1;LCD_EN=0;//LCD_RS為高,LCD_RW為低時,可以寫入數(shù)據(jù)

LCD_IO=dat;delay(5);//下面用EN輸入一個高脈沖

LCD_EN=1;delay(5);LCD_EN=0;

}

//---------------------------------------------------

voidW_LCD_STR(uchar*s)//寫字符串

{

while(*s>0){W_LCD_Dat(*s);s++;}

}

//---------------------------------------------------

voidinit()

{

W_LCD_Com(0x38);

W_LCD_Com(0x0c);

W_LCD_Com(0x06);

W_LCD_Com(0x01);

W_LCD_Com(0x80);W_LCD_STR(LCD_line1);

W_LCD_Com(0xC0);W_LCD_STR(LCD_line2);


TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

ET0=1;

EX0=1;

EX1=1;

PX1=1;

EA=1;

}

//---------------------------------------------------

voidW_LCD_X1_Dat(uintsec)

{

W_LCD_Com(0xc0+7);

W_LCD_Dat(0x30+sec/10000);

W_LCD_Dat(0x30+(sec%10000)/1000);

W_LCD_Dat(0x30+(sec%1000)/100);

W_LCD_Dat(0x30+(sec%100)/10);

W_LCD_Dat(0x30+sec%10);

}

//---------------------------------------------------

voidmain()

{

init();

while(1);

}

//-------------------------------------------

voidtimer0()interrupt1

{

TL0=(65536-50000)%256;

TH0=(65536-50000)/256;

count++;

if(count==20){

count=0;

sec++;

W_LCD_X1_Dat(sec);

}

}

//-------------------------------------------

voidX0_INT()interrupt0

{

while(sw1==0);

}

//-------------------------------------------

voidX1_INT()interrupt2

{

while(sw2==0);

count=0;

sec=0;

W_LCD_X1_Dat(sec);

}

================================================


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉