您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于51单片机的简易电子表
基于51单片机的简易电子表/*****************************************************************阿斌独家制作:电子表1602液晶显示带有闹钟功能每天到指定时间后闹钟提醒闹钟响后按s4键关闭闹钟如果闹钟响后大约20秒未检测到s4键按下,则闹钟自动关闭******************************************************************/#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbitlcden=P2^2;sbitlcdrw=P2^1;sbitlcdrs=P2^0;sbits1=P3^0;sbits2=P3^1;sbits3=P3^2;sbits4=P3^3;sbitrd=P3^7;sbitbeep=P1^2;uintnian,a;ucharcount,s1num,i,xq,ri,yue,flag;charshi,fen,miao,shia,fena,miaoa;ucharcodetable[]=2012-11-19MON;ucharcodetable1[]=00:00:00;ucharcodexq1[]=MON;ucharcodexq2[]=TUE;ucharcodexq3[]=WED;ucharcodexq4[]=THU;ucharcodexq5[]=FRI;ucharcodexq6[]=SAT;ucharcodexq7[]=SUN;voiddelay(uintz){uintx,y;for(x=z;x0;x--)for(y=110;y0;y--);}voiddidi(){beep=1;delay(5);beep=0;delay(5);beep=1;delay(5);beep=0;delay(5);}voidwrite_com(ucharcom){lcdrs=0;lcden=0;lcdrw=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}voidwrite_date(uchardate){lcdrs=1;lcden=0;lcdrw=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}voidinit(){ucharnum;lcden=0;xq=1;ri=19;yue=11;nian=2012;a=1000;flag=0;shia=00;fena=00;miaoa=05;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num16;num++){write_date(table[num]);delay(5);}write_com(0x80+0x40);for(num=0;num12;num++){write_date(table1[num]);delay(5);}TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}voidwrite_sfm2(ucharadd,uintdate){ucharqian,bai,shi,ge;qian=date/1000;bai=date%1000/100;shi=date%100/10;ge=date%10;write_com(0x80+add);write_date(0x30+qian);write_date(0x30+bai);write_date(0x30+shi);write_date(0x30+ge);}voidwrite_sfm1(ucharadd,uchardate){ucharshi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_date(0x30+shi);write_date(0x30+ge);}voidwrite_sfm(ucharadd,uchardate){ucharshi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);}voidwrite_xq(){write_com(0x80+13);switch(xq){case1:for(i=0;i3;i++){write_date(xq1[i]);delay(5);}break;case2:for(i=0;i3;i++){write_date(xq2[i]);delay(5);}break;case3:for(i=0;i3;i++){write_date(xq3[i]);delay(5);}break;case4:for(i=0;i3;i++){write_date(xq4[i]);delay(5);}break;case5:for(i=0;i3;i++){write_date(xq5[i]);delay(5);}break;case6:for(i=0;i3;i++){write_date(xq6[i]);delay(5);}break;case7:for(i=0;i3;i++){write_date(xq7[i]);delay(5);}break;default:break;}}voidkeyscan1(){if(s4==0){delay(5);if(s4==0){while(!s4);flag=1;}}}voidkeyscan(){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){write_com(0x80+13);}if(s1num==5){write_com(0x80+10);}if(s1num==6){write_com(0x80+7);}if(s1num==7){write_com(0x80+2);}if(s1num==8){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(s1num==4){xq++;if(xq==8)xq=1;write_xq();write_com(0x80+13);}if(s1num==5){ri++;switch(yue){case1:case3:case5:case7:case8:case10:case12:if(ri==32)ri=1;break;case4:case6:case9:case11:if(ri==31)ri=1;break;case2:if(nian%4==0&&nian%100!=0||nian%400==0){if(ri==30)ri=0;}elseif(ri==29)ri=0;break;}write_sfm1(10,ri);write_com(0x80+10);}if(s1num==6){yue++;if(yue==13)yue=1;write_sfm1(7,yue);write_com(0x80+7);}if(s1num==7){nian++;if(nian==2100)nian=2000;write_sfm2(2,nian);write_com(0x80+2);}}}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);}if(s1num==4){xq--;if(xq==0)xq=7;write_xq();write_com(0x80+13);}if(s1num==5){ri--;switch(yue){case1:case3:case5:case7:case8:case10:case12:if(ri==0)ri=31;break;case4:case6:case9:case11:if(ri==0)ri=30;break;case2:if(nian%4==0&&nian%100!=0||nian%400==0){if(ri==0)ri=29;}elseif(ri==0)ri=28;break;}write_sfm1(10,ri);write_com(0x80+10);}if(s1num==6){yue--;if(yue==0)yue=12;write_sfm1(7,yue);write_com(0x80+7);}if(s1num==7){nian--;if(nian==1999)nian=2099;write_sfm2(2,nian);write_com(0x80+2);}}}}}voidset_alarm(){if(shi==shia&&fen==fena&&miao==miaoa){while(a--){didi();keyscan1();if(flag==1){flag=0;break;}}a=1000;}}voidmain(){init();while(1){keyscan();set_alarm();}}voidtimer0()interrupt1{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;xq++;if(xq=8){xq=1;}write_xq();ri++;switch(yue){case1:case3:case5:case7:case8:case10:case12:if(ri==32)ri=1;break;case4:case6:case9:case11:if(ri==31)ri=1;break;case2:if(nian%4==0&&nian%100!=0||nian%400==0){if(ri==30)ri=0;}elseif(ri==29)ri=0;break;default:break;}if(ri==31||ri==30||ri==29||ri==28){yue++;if(yue==13){yue=1;nian++;if(nian==209
本文标题:基于51单片机的简易电子表
链接地址:https://www.777doc.com/doc-2567891 .html