51单片机LCD液晶屏按键电子时钟的设计.doc

上传人:白大夫 文档编号:3244752 上传时间:2019-08-05 格式:DOC 页数:11 大小:39.50KB
返回 下载 相关 举报
51单片机LCD液晶屏按键电子时钟的设计.doc_第1页
第1页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《51单片机LCD液晶屏按键电子时钟的设计.doc》由会员分享,可在线阅读,更多相关《51单片机LCD液晶屏按键电子时钟的设计.doc(11页珍藏版)》请在三一文库上搜索。

1、51单片机LCD液晶屏按键电子时钟的设计液晶屏为JM12864或FYD12864(带字库),我用这两种型号的屏没问题, 4行*8列汉字=32 串行通信 接/口P1.5-P1.7,可根据你的电路修改相应的接口。#include#define uchar unsigned charvoidLCD_ini();void ascii_change(void);void delay();void wri_add(uchar com);void wri_dat(uchar com1);void shan(void);void disp();void tkey(void);sbit cs=P1;sbit s

2、id=P1;sbit sclk=P1;bit flag=1;uchar dat,count,f=1;/f测试哪个单元为当前闪烁状态uchar data cLOCk3=23,45,12;uchar code clockname10=“北京时间:”;uchar data num6;/*主程序*/void main()lcd_ini();count=10;/机器周期为1us,每次定时50ms,此变量用来控制循环次数,在下面赋值为20,共定时1秒TMOD=0x01;TL0=0XB0;TH0=0X3C;EA=1;ET0=1;IT0=1;EX0=1;TR0=1;while(1)back:ascii_cha

3、nge();disp();delay();if(flag=1)goto back;tkey();shan();delay();/*lcd初始化*/void lcd_ini()wri_add(0x30);delay();wri_add(0x0c);delay();wri_add(0x01);delay();wri_add(0x06);delay();/*定时程序*/void timer1() interrupt 1 using 2TL0=0XB0;TH0=0X3C;count-;if(count=0)count=10;clock2+;/秒/elsegoto out;if(clock2=60)cl

4、ock2=0;clock1+;/分/if(clock1=60)clock1=0;clock0+;if(clock0=24)/时/clock0=0;out:_nop_();/*十位个位转换成ASCII码*/void ascii_change(void)num5=clock2-(clock2/10)*10+0x30;num4=clock2/10+0x30;num3=clock1-(clock1/10)*10+0x30;num2=clock1/10+0x30;num1=clock0-(clock0/10)*10+0x30;num0=clock0/10+0x30;/*廷时程序*/void delay(

5、)uchar i,j;for (i=250;i0;i-)for (j=250;j0;j-);/*Write address*/void wri_add(uchar com)uchar i,j,k;cs=0;cs=1;dat=0xf8;for(i=1;i=8;i+)sid=(bit)(datsclk=0;sclk=1;sclk=0;dat=dat1;dat=com;dat=datfor(j=1;j=8;j+)sid=(bit)(datsclk=0;sclk=1;sclk=0;dat=dat1;dat=com;dat=_cror_(dat,4);/ 此为高低四位交换dat=datfor(k=1;k

6、=8;k+)sid=(bit)(datsclk=0;sclk=1;sclk=0;dat=dat1;/*Write data*/void wri_dat(uchar com1)uchar i,j,k;cs=0;cs=1;dat=0xfa;for(i=1;i=8;i+)sid=(bit)(datsclk=0;sclk=1;sclk=0;dat=dat1;dat=com1;dat=datfor(j=1;j=8;j+)sid=(bit)(datsclk=0;sclk=1;sclk=0;dat=dat1;dat=com1;dat=_cror_(dat,4);/ 此为高低四位交换dat=datfor(k=

7、1;k=8;k+)sid=(bit)(datsclk=0;sclk=1;sclk=0;dat=dat1;/*display program*/void disp()uchar i,k=0;wri_add(0x80);for (i=1;i=9;i+)wri_dat(clocknamei-1);wri_add(0x90);for (i=1;i=6;i+)k+;if(k=3|k=5)wri_dat(clockname8);/时间之间的冒号。wri_dat(numi-1);/*闪烁程序*/void shan(void)uchar i,k=0;wri_add(0x90);if(f=1)num0= ;nu

8、m1= ;elsegoto next;for (i=1;i=6;i+)k+;if(k=3|k=5)wri_dat(clockname8);/时间之间的冒号。wri_dat(numi-1);goto return1;next: if(f=2)num2= ;num3= ;elsegoto next1;for (i=1;i=6;i+)k+;if(k=3|k=5)wri_dat(clockname8);/时间之间的冒号。wri_dat(numi-1);goto return1;next1: if(f=3)num4= ;num5= ;elsegoto return1;for (i=1;i=6;i+)k+

9、;if(k=3|k=5)wri_dat(clockname8);/时间之间的冒号。wri_dat(numi-1);return1:_nop_();/*外部中断*/void intr0() interrupt 0 using 2flag=flag;/判断是否闪烁位/TR0=TR0; /闪关定时否则开定时f=1;/*按键程序*/void tkey(void)uchar judcekey;judcekey=P1if(judcekey=0x0f)goto return2;/*移位键*/if (judcekey=0x0e)f+;if (f=4)f=1;/*加一键*/if(judcekey=0x0d)clockf-1+;if (f=1) if (clockf-1=24)clockf-1=0;else if (clockf-1=60)clockf-1=0;/*减一键*/if(judcekey=0x0b)clockf-1-;if (f=1) if (clockf-1=0xff)clockf-1=23;else if (clockf-1=0xff)clockf-1=59;return2:_nop_();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1