基于51单片机的简易电子表.docx

上传人:b****5 文档编号:30366903 上传时间:2023-08-13 格式:DOCX 页数:19 大小:16.68KB
下载 相关 举报
基于51单片机的简易电子表.docx_第1页
第1页 / 共19页
基于51单片机的简易电子表.docx_第2页
第2页 / 共19页
基于51单片机的简易电子表.docx_第3页
第3页 / 共19页
基于51单片机的简易电子表.docx_第4页
第4页 / 共19页
基于51单片机的简易电子表.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

基于51单片机的简易电子表.docx

《基于51单片机的简易电子表.docx》由会员分享,可在线阅读,更多相关《基于51单片机的简易电子表.docx(19页珍藏版)》请在冰豆网上搜索。

基于51单片机的简易电子表.docx

基于51单片机的简易电子表

基于51单片机的简易电子表

/*****************************************************************

阿斌独家制作:

电子表1602液晶显示带有闹钟功能

每天到指定时间后闹钟提醒闹钟响后按s4键关闭闹钟

如果闹钟响后大约20秒未检测到s4键按下,则闹钟自动关闭

******************************************************************/

主程序:

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitlcden=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;x>0;x--)

for(y=110;y>0;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;num<16;num++)

{

write_date(table[num]);

delay(5);

}

write_com(0x80+0x40);

for(num=0;num<12;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;i<3;i++)

{

write_date(xq1[i]);

delay(5);

}break;

case2:

for(i=0;i<3;i++)

{

write_date(xq2[i]);

delay(5);

}break;

case3:

for(i=0;i<3;i++)

{

write_date(xq3[i]);

delay(5);

}break;

case4:

for(i=0;i<3;i++)

{

write_date(xq4[i]);

delay(5);

}break;

case5:

for(i=0;i<3;i++)

{

write_date(xq5[i]);

delay(5);

}break;

case6:

for(i=0;i<3;i++)

{

write_date(xq6[i]);

delay(5);

}break;

case7:

for(i=0;i<3;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==2099)

nian=2000;

write_sfm2(2,nian);

}

write_sfm1(7,yue);

}

write_sfm1(10,ri);

}

write_sfm(4,shi);

}

write_sfm(7,fen);

}

write_sfm(10,miao);

}

}

 

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1