×
嵌入式开发 > 详情

基于LM032L液晶的电子时钟显示程序

发布时间:2020-06-29 发布时间:
|

元器件:
Atmel89c51
LM032L液晶
Button

仿真已经测试通过,大家使用只需要自己修改液晶的端口即可.



C程序代码:
/*电子时钟 1062液晶显示
* @
*
*/

#includereg51.h
#define uchar unsigned char
#define uint unsigned intsbit LCD_EN=P3^4;
sbit LCD_RS=P3^5;sbit s1=P3^0;sbit s2=P3^1;
sbit s3=P3^2;sbit rd=P3^7;uchar count,s1num;
char miao,shi,fen;
uchar code table[]=" 2010-06-25 FIR";
uchar code table1[]="    20:25:00";
void delay(uint z){uint x,y;
for(x=z;x>0;x--)for(y=110;y>0;y--);}
void write_com(uchar com){LCD_RS=0;
P1=com;delay(5);LCD_EN=1;delay(5);
LCD_EN=0;}
void write_data(uchar date)
{LCD_RS=1;P1=date;delay(5);LCD_EN=1;delay(5);LCD_EN=0;}
void init(){uchar num; LCD_EN=0;write_com(0x38);write_com(0x0f);write_com(0x06);
write_com(0x01);write_com(0x80);for(num=0;num15;num++){write_data(table[num]);delay(5);}
write_com(0x80+0x40);for(num=0;num12;num++){write_data(table1[num]);delay(5);}
TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}
void write_sfm(uchar add,uchar date)
{uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);
write_data(0x30+shi);write_data(0x30+ge);}void keyscan(){rd=0;if(s1==0) 
{delay(5);if(s1==0){ s1num++;while(!s1);if(s1num==1){TR0=0;write_com(0x80+0x40+10);write_com(0x0f);}}
if(s1num==2){write_com(0x80+0x40+7);}if(s1num==3){write_com(0x80+0x40+4);}if(s1num==4){s1num=0;write_com(0x0c);TR0=1;}}if(s1num!=0){if(s2==0){delay(5);if(s2==0){while(!s2);if(s1num==1){miao++;if(miao==60)miao=0;write_sfm(10,miao);write_com(0x80+0x40+10);}if(s1num==2){fen++;if(fen==60)fen=0;write_sfm(7,fen);write_com(0x80+0x40+7);}if(s1num==3){shi++;if(shi==24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+4);}}}if(s3==0){delay(5);if(s3==0){while(!s3);if(s1num==1){miao--;if(miao==-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);}if(s1num==2){fen--;if(fen==-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40+7);}if(s1num==3){shi--;if(shi==-1)shi=23;write_sfm(4,shi);write_com(0x80+0x40+4);}}}}}void main(){init();while(1){keyscan();}}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==18){count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;}write_sfm(4,shi);}write_sfm(7,fen);}write_sfm(10,miao);} } 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
电子EDA技术的基础知识