液晶显示万年历程序

上传人:woxinch****an2018 文档编号:38975092 上传时间:2018-05-10 格式:DOCX 页数:11 大小:68.71KB
返回 下载 相关 举报
液晶显示万年历程序_第1页
第1页 / 共11页
液晶显示万年历程序_第2页
第2页 / 共11页
液晶显示万年历程序_第3页
第3页 / 共11页
液晶显示万年历程序_第4页
第4页 / 共11页
液晶显示万年历程序_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《液晶显示万年历程序》由会员分享,可在线阅读,更多相关《液晶显示万年历程序(11页珍藏版)》请在金锄头文库上搜索。

1、基于 STC89C51 单片机的 1602 液晶显示万年历程序/集成有时间显示,年月日显示,星期显示以及闹钟功能,并且会进行闰年判定 /K1 键是功能选择键 K2 功能加 K3 功能减 / zzuliwuzhipeng/基于 STC89C51 单片机的 1602 液晶显示万年历程序 /集成有时间显示,年月日显示,星期显示以及闹钟功能,并且会进行闰年判定 /K1 键是功能选择键 K2 功能加 K3 功能减 / zzuliwuzhipeng / /#include #define uchar unsigned char #define uint unsigned int uchar shi=17,

2、fen=34,miao=20,ri=9,week=5;yue=1,Z=12,Y=30,i,K1num,count=0; uint nian=2015; sbit rs=P20; sbit rw=P21; sbit lcden=P22; sbit K1=P30; sbit K2=P31; sbit K3=P32; sbit BEEP=P10; uchar table1=“LCD-CLOCK“; uchar table2=“wu zhi peng“;void delay(uint x) / 简单延时函数 uint a,b; for(a=x;a0;a-) for(b=10;b0;b-); bi(ui

3、nt t) /控制喇叭响铃时间 int c,n;for(c=0;c100)uchar a,b,c,d;a=t/1000+0x30; b=t/100%10+0x30;c=t/10%10+0x30;d=t%10+0x30;write_com(add);/ 显示年份(4 位数显示)write_date( a);write_date( b);write_date( c);write_date( d); elseuchar m=0,n=0;m=t/10+0x30;n=t%10+0x30;write_com(add);/显示时分秒月日(2 位数显示)write_date( m);write_date( n

4、); void xingqi(uchar w )/ 星期显示函数 write_com(0xc0+12);switch( w) case 1: write_date(M);write_date(o);write_date(n);break; case 2:write_date(T);write_date(u);write_date(e);break; case 3:write_date(W);write_date(e);write_date(d);break; case 4:write_date(T);write_date(h);write_date(u);break; case 5:write

5、_date(F);write_date(r);write_date(i);break; case 6:write_date(S);write_date(a);write_date(t);break; case 7:write_date(S);write_date(u);write_date(n);break; void kaiji() /开机画面 uchar i=0;write_com(0x80+2);i=0;while( table1i!=0)write_date(table1i); i+;write_com(0xc0+2);i=0;while( table2i!=0)write_date(

6、table2i); i+;delay(10000);write_com(0x01); void LCD_disp()/主显示函数。用于在 1602 液晶上指定位置显示时分秒年月日等 shijian(shi,0x80+0 ); write_com(0x80+2); write_date(0x3a); shijian(fen,0x80+3 ); write_date(0x3a); shijian(miao,0x80+6 ); write_date( 0x2d);write_date( 0x2d);write_date( 0x2d); shijian(Z,0x80+11 ); write_date(

7、0x3a); shijian(Y,0x80+14 );shijian(nian,0xc0+0 ); write_date( 0x2d); shijian(yue,0xc0+5 ); write_date( 0x2d); shijian(ri,0xc0+8 ); write_com(0xc0+12);xingqi(week) ; void init()/ 1602 液晶初始化 write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); void timer1_init()/ 定时器初始化 TMOD=0x01;TH0=0x

8、4c;TL0=0x00;EA=1;ET0=1;TR0=1; void timer0() interrupt 1 using 0/ 中断程序 TH0=0x4c;TL0=0x00;count+;if (count=20 )count=0;miao+;if ( miao=60)miao=0;fen+;if ( fen=60)fen=0;shi+;if (shi=24)shi=0;if(yue=1|yue=3|yue=5|yue=7|yue=8|yue=10|yue=12)/这一部分是闰年判定以及每月 28、29、30、31 天的判定 ri+;if (ri=32) ri=1;yue+;if ( yue

9、=13) nian+;yue=1; else if(yue=4|yue=6|yue=9|yue=11) ri+;if (ri=31) ri=1;yue+; if ( yue=13) nian+;yue=1; else if(yue=2) if(!(nian%4)if (ri=30) ri=1; yue+; if ( yue=13) nian+;yue=1; else ri+;if (ri=29) ri=1; yue+; if ( yue=13) nian+;yue=1; week+; if (week=8) week=1; void keycan() /键盘处理函数 if( K1=0 ) K1

10、num+; delay(1); if( K1=0 ) while(!K1);bi(200);if( K1num=1 ) TR0=0; write_com(0x80+1); write_com(0x0f); / K1 功能选 择键if( K1num=2 ) write_com(0x80+4 );write_com(0x0f); if( K1num=3 ) write_com(0x80+7 );write_com(0x0f); if( K1num=4 ) write_com(0x80+12 );write_com(0x0f); if( K1num=5 ) write_com(0x80+15 );w

11、rite_com(0x0f);if( K1num=6 ) write_com(0xc0+3 );write_com(0x0f); if( K1num=7 ) write_com(0xc0+6 );write_com(0x0f); if( K1num=8 ) write_com(0xc0+9 );write_com(0x0f);if( K1num=9 ) write_com(0xc0+14 );write_com(0x0f);if( K1num=10) K1num=0; write_com(0x0c); TR0=1; if( K1num!=0 ) if( K2=0 ) delay(1);if(

12、K2=0) while(!K2);bi(200);if( K1num=1 ) shi+; if( shi=24 ) shi=0;shijian(shi,0x80+0 ); write_com(0x80+1); / K2 功能加 键 if( K1num=2 ) fen+; if( fen=60 ) fen=0; shijian(fen,0x80+3 );write_com(0x80+4); if( K1num=3 ) miao+; if( miao=60 ) miao=0;shijian(miao,0x80+6 );write_com(0x80+7); if( K1num=4 ) Z+; if(

13、 Z=24 ) Z=0;shijian(Z,0x80+11 ); write_com(0x80+12); if( K1num=5 ) Y+; if( Y=60 ) Y=0;shijian(Y,0x80+14); write_com(0x80+15); if( K1num=6 ) nian+; if( nian=2999) nian=2015; shijian(nian,0xc0+0 );write_com(0xc0+3); if( K1num=7 ) yue+; if( yue=13) yue=1; shijian(yue,0xc0+5 ); write_com(0xc0+6); if( K1

14、num=8 ) ri+; if(yue=1|yue=3|yue=5|yue=7|yue=8|yue=10|yue=12) if (ri=32) ri=1; else if(yue=4|yue=6|yue=9|yue=11) if (ri=31) ri=1; else if(yue=2) if(!(nian%4) else if (ri=29) ri=1; shijian(ri,0xc0+8); write_com(0xc0+9);if( K1num=9 ) week+; if (week=8) week=1; xingqi(week);write_com(0xc0+14); if(K1num!=0) if(K3=0 ) delay(1);if(K3=0 ) while(!K3); bi(200);if( K1num=1 ) shi-; if( shi=-1 ) shi=23;shijian(shi,0x80+0 );write_com(0x80+1); / K3 功能减 键if( K1num=2 ) fen-; if( fen=-1 ) fen=59; shijian(fen,0x80+3 );write_com(0x80+4); i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号