基于stc89c51单片机的1602液晶简易万年历.docx
- 文档编号:25287889
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:14
- 大小:75.08KB
基于stc89c51单片机的1602液晶简易万年历.docx
《基于stc89c51单片机的1602液晶简易万年历.docx》由会员分享,可在线阅读,更多相关《基于stc89c51单片机的1602液晶简易万年历.docx(14页珍藏版)》请在冰豆网上搜索。
基于stc89c51单片机的1602液晶简易万年历
基于stc89c51单片机的1602液晶简易万年历
基于stc89c51单片机的简易万年历
//基于stc89c51单片机的简易万年历设计
//zzuli-wuzhipeng
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharshi=0,fen=0,miao=0,ri=7,yue=1,Z=1,Y=1,i,K1num;
uintnian=2015;
ucharcount_10ms,K1num;
sbitrs=P2^0;
sbitrw=P2^1;
sbitlcden=P2^2;
sbitK1=P3^0;
sbitK2=P3^1;
sbitK3=P3^2;
sbitBEEP=P3^7;
voiddelay(uintx)//简单延时程序
{
uinta,b;
for(a=x;a>0;a--)
for(b=10;b>0;b--);
}
bi(uintt)//控制响铃时间程序
{
intc,n;
for(c=0;c { for(n=0;n<50;n++); BEEP=~BEEP; } return(t); } voidwrite_com(ucharcom)//1602液晶写指令 { P0=com; rs=0; rw=0; lcden=0; delay(10); lcden=1; delay(10); lcden=0; } voidwrite_date(uchardate)//1602液晶写数据 { P0=date; rs=1; rw=0; lcden=0; delay(10); lcden=1; delay(10); lcden=0; } voidbeep()//喇叭 { BEEP=0; delay(100); BEEP=1; delay(100); } voidnaozhong()//闹钟 { if((Z==shi)&(Y==fen)&(miao<10)) {bi(500);} } voidshijian(uintt,add) { if(t>100) { uchara,b,c,d; a=t/1000+0x30; b=t/100%10+0x30; c=t/10%10+0x30; d=t%10+0x30; write_com(add); write_date(a); write_date(b); write_date(c); write_date(d); } else { ucharm=0,n=0; m=t/10+0x30; n=t%10+0x30; write_com(add); write_date(m); write_date(n); } } voidLCD_disp() { 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(0x3a); shijian(Y,0x80+14); shijian(nian,0xc0+0); write_date(0x2d); shijian(yue,0xc0+5); write_date(0x2d); shijian(ri,0xc0+8); } voidinit()//1602液晶初始化 { write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); } voidtimer1_init()//定时器初始化 { TMOD=0x01; TH0=0x4c;TL0=0x00; EA=1;ET0=1; TR0=1; } voidtimer0()interrupt1using0//中断程序 { TH0=0x4c;TL0=0x00; count_10ms++; if(count_10ms==20) { count_10ms=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) {ri++;if(ri==32){ri=1;yue++;if(yue==13){nian++;yue=1;}}} elseif(yue==4||yue==6||yue==9||yue==11) {ri++;if(ri==31){ri=1;yue++;if(yue==13){nian++;yue=1;}}} elseif(yue==2) { if((! (nian%4)&&(nian%100))||! (nian%400)) {ri++;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;}}} } } } } } } voidkeycan()//键盘处理程序 { if(K1==0)//功能选择键 { K1num++;delay (1); if(K1==0) { while(! K1); bi(200); if(K1num==1){TR0=0;write_com(0x80+0);write_com(0x0f);} if(K1num==2){write_com(0x80+3);write_com(0x0f);} if(K1num==3){write_com(0x80+6);write_com(0x0f);} if(K1num==4){write_com(0x80+11);write_com(0x0f);} if(K1num==5){write_com(0x80+14);write_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){K1num=0;write_com(0x0c);TR0=1;} } } if(K1num! =0)//功能加 { if(K2==0) { delay (1); if(K2==0) { while(! K2); bi(200); if(K1num==1){shi++;if(shi==24)shi=0;shijian(shi,0x80+0);write_com(0x80);} if(K1num==2){fen++;if(fen==60)fen=0;shijian(fen,0x80+3);write_com(0x80+3);} if(K1num==3){miao++;if(miao==60)miao=0;shijian(miao,0x80+6);write_com(0x80+60);} if(K1num==4){Z++;if(Z==24)Z=0;shijian(Z,0x80+11);write_com(0x80+11);} if(K1num==5){Y++;if(Y==60)Y=0;shijian(Y,0x80+14);write_com(0x80+14);} if(K1num==6){nian++;if(nian==2999)nian=2015;shijian(nian,0xc0+0);write_com(0xc0+0);} if(K1num==7){yue++;if(yue==13)yue=1;shijian(yue,0xc0+5);write_com(0xc0+5);} if(K1num==8){ri++; if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12) {if(ri==32){ri=1;}} elseif(yue==4||yue==6||yue==9||yue==11) {if(ri==31){ri=1;}} elseif(yue==2) { if((! (nian%4)&&(nian%100))||! (nian%400)) {if(ri==30){ri=1;}} else {if(ri==29){ri=1;}} } shijian(ri,0xc0+8);write_com(0xc0+8); } } } } 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);} if(K1num==2){fen--;if(fen==-1)fen=59;shijian(fen,0x80+3);write_com(0x80+3);} if(K1num==3){miao--;if(miao==-1)miao=59;shijian(miao,0x80+6);write_com(0x80+6);} if(K1num==4){Z--;if(Z==-1)Z=23;shijian(Z,0x80+11);write_com(0x80+11); voidmain() { init(); timer1_init(); while (1) { keycan(); naozhong(); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 stc89c51 单片机 1602 液晶 简易 万年历