基于定时器的51单片机时钟程序.docx
- 文档编号:26435213
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:14
- 大小:15.19KB
基于定时器的51单片机时钟程序.docx
《基于定时器的51单片机时钟程序.docx》由会员分享,可在线阅读,更多相关《基于定时器的51单片机时钟程序.docx(14页珍藏版)》请在冰豆网上搜索。
基于定时器的51单片机时钟程序
基于定时器的51单片机时钟程序
51单片机时钟程序,基于定时器写出,同时还有定时、日历、键盘调节功能
#inelude
sbitwela=P2A7;
sbitkey1=P3A4;
sbitkey2=P3A5;
sbitluis=P3A6;
sbitkey4=P3A7;
#defineuintunsignedint#defineucharunsignedchar
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodetable2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
uchara,b,d,shis,ges,
shif,gef,shim,gem,shi,fen,miao,shiy,gey,shir,ger,yue,ri;
voiddisplay1(uchar,uchar,uchar,uchar,uchar,uchar);void
display2(uchar,uchar,uchar,uchar);
voidinit();
voidkeyscan1();
voidkeyscan2();
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);}
voidmain()
{
init();
a=0;
miao=0;
shi=0;
fen=0;
yue=1;
ri=1;
while
(1)
{
if(luis==1)
{
display1(shis,ges,shif,gef,shim,gem);
keyscan1();
}
else
{
display2(shiy,gey,shir,ger);
keyscan2();
}
voidinit()
{
d=0xaa;
P1=d;
TMOD=0x11;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
}
voiddisplay1(ucharshis,ucharges,ucharshif,uchargef,ucharshim,uchargem)
{
dula=1;
P0=table[shis];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay
(1);
dula=1;P0=table2[ges];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay
(1);
dula=1;
P0=table[shif];dula=0;
P0=0xff;
wela=1;
P0=0xfb;wela=0;
delay
(1);
dula=1;
P0=table2[gef];dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delay
(1);
dula=1;
P0=table[shim];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delay
(1);
dula=1;
P0=table[gem];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delay
(1);
}
voidr0()interrupt1{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;a++;
if(a==20)
{
a=0;miao++;
if(miao==60){miao=0;fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
{
if(yue==1)
{
ri++;
if(ri==32)
{
ri=0;
yue=yue+1;
}
if(yue==2)
{ri++;
if(ri==29)
{
ri=0;yue=yue+1;}
}
if(yue==3)
{ri++;
if(ri==32)
{
ri=0;yue=yue+1;
}
}
if(yue==4)
{ri++;
if(ri==31)
ri=0;
yue=yue+1;
}
}
if(yue==5)
{
ri++;
if(ri==32)
{
ri=0;yue=yue+1;
}
}
if(yue==6)
{
ri++;
if(ri==31)
{
ri=0;yue=yue+1;
}
}
if(yue==7)
ri++;
if(ri==31)
{
ri=0;yue=yue+1;
}
}
if(yue==8)
{
ri++;
if(ri==32)
{
ri=0;yue=yue+1;
}
}
if(yue==9)
{
ri++;
if(ri==31)
{
ri=0;
yue=yue+1;
}
if(yue==10){ri++;if(ri==32)
{
ri=0;yue=yue+1;
}
}
if(yue==11){ri++;
if(ri==31)
{
ri=0;yue=yue+1;
}
}if(yue==12)
{
ri++;
if(ri==32)
ri=0;
yue=1;
}
}
}
}
}
}
shiy=yue/10;
gey=yue%10;
shir=ri/10;
ger=ri%10;
shis=shi/10;
ges=shi%10;
shim=miao/10;
gem=miao%10;shif=fen/10;
gef=fen%10;
}
}
}
voidr1()interrupt3{
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
b++;
{
if(b==20)
{
b=0;
d=_crol_(d,1);
P1=d;
}
}
}
voidkeyscan1()
{
if(key1==0)
{
delay(5);if(key1==0);
{
shi++;if(shi==24)shi=0;
while(!
key1);
}
}
if(key2==0)
delay(5);if(key2==0);
{
fen++;if(fen==60)fen=0;
while(!
key2);
}
}if(key4==0)
{delay(5);
if(key4==0);
{
delay(5);while(!
key4);
TR0=~TR0;
}
}
}
voiddisplay2(ucharshiy,uchargey,ucharshir,ucharger)
{
dula=1;
P0=table[shiy];dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delay
(1);dula=1;
P0=table2[gey];dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delay
(1);dula=1;
P0=table[shir];dula=0;P0=0xff;wela=1;P0=0xfb;wela=0;
dula=1;
P0=table2[ger];
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delay
(1);
}
voidkeyscan2(){
if(key1==0)
{
delay(5);
if(key1==0);
{
yue++;
if(yue==13)
yue=1;
while(!
key1);
}
}
if(key2==0)
{
if(key2==0);{delay(5);
if(key2==0);{if(yue==1){ri++;if(ri==32){ri=1;
}
}if(yue==2)
{ri++;if(ri==29)
{ri=1;
}
}if(yue==3)
if(ri==32)
{
ri=1;
}
}
if(yue==4)
{
ri++;
if(ri==31)
{
ri=1;
}
}
if(yue==5)
{
ri++;if(ri==32)
{
ri=1;
if(ri==31)
{
ri=1;
}
}
if(yue==7)
{
ri++;
if(ri==31)
{
ri=1;
}
}
if(yue==8)
{
ri++;if(ri==32)
{
ri=1;
if(ri==31)
{
ri=1;
}
}
if(yue==10)
{
ri++;if(ri==32)
{
ri=1;
}
}
if(yue==11)
{
ri++;if(ri==31)
{
ri=1;
if(ri==32)
{
ri=1;
}while(!
key2);
}
while(!
key2);
}
while(!
key2);
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 定时器 51 单片机 时钟 程序