1、12864汉字液晶显示按键电子时钟程序12864汉字液晶显示按键电子时钟程序 12864汉字液晶显示-按键电子时钟程序12864汉字液晶显示-按键电子时钟程序(具有闪烁,移位,加一,减一功能)#include #include #define uchar unsigned charvoid lcd_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=P17;sb
2、it sid=P16;sbit sclk=P15;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:as
3、cii_change();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(clock
4、2=60)clock2=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;/*廷时程序*/voi
5、d delay()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)(dat&0x80);sclk=0;sclk=1;sclk=0;dat=dat1;dat=com;dat=dat&0xf0;for(j=1;j=8;j+)sid=(bit)(dat&0x80);sclk=0;sclk=1;sclk=0;dat=dat1;dat=com;dat=_cror_(dat,4
6、);/ 此为高低四位交换dat=dat&0xf0;for(k=1;k=8;k+)sid=(bit)(dat&0x80);sclk=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)(dat&0x80);sclk=0;sclk=1;sclk=0;dat=dat1;dat=com1;dat=dat&0xf0;for(j=1;j=8;j+)sid=(bit)(dat&0x80);sclk=0;sclk=1;sclk=
7、0;dat=dat1;dat=com1; dat=_cror_(dat,4);/ 此为高低四位交换dat=dat&0xf0;for(k=1;k=8;k+)sid=(bit)(dat&0x80);sclk=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_da
8、t(numi-1);/*闪烁程序*/void shan(void)uchar i,k=0;wri_add(0x90);if(f=1)num0= ;num1= ;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);g
9、oto return1;next1: if(f=3)num4= ;num5= ;elsegoto return1;for (i=1;i=6;i+)k+;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=P1&0x0f;if(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_();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1