基于51数码管显示的万年历(仿真+程序【完整】)Word文件下载.docx
- 文档编号:728204
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:18
- 大小:75.41KB
基于51数码管显示的万年历(仿真+程序【完整】)Word文件下载.docx
《基于51数码管显示的万年历(仿真+程序【完整】)Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于51数码管显示的万年历(仿真+程序【完整】)Word文件下载.docx(18页珍藏版)》请在冰点文库上搜索。
ucharbuffer[22]={0};
/**********数据定义*********/
ucharadd_sub;
ucharkey_detection=0;
ucharcount=0;
typedefstruct
{
ucharyear[2];
ucharmonth;
ucharday;
ucharweek;
}date;
ucharhour;
ucharminute;
ucharsecond;
}moment;
datetoday={{14,20},7,25,5};
momentnow={16,52,45};
/**********延时子程序*************/
voiddelay()
uchari,j;
for(i=0;
i<
=8;
i++)
for(j=0;
j<
40;
j++);
}
/**********数码管显示子程序***********/
voidsmg_display()
uchari;
buffer[0]=now.second%10;
buffer[1]=now.second/10;
buffer[2]=10;
buffer[3]=now.minute%10;
buffer[4]=now.minute/10;
buffer[5]=10;
buffer[6]=now.hour%10;
buffer[7]=now.hour/10;
buffer[8]=today.week%10;
buffer[9]=today.week/10;
buffer[10]=10;
buffer[11]=today.day%10;
buffer[12]=today.day/10;
buffer[13]=10;
buffer[14]=today.month%10;
buffer[15]=today.month/10;
buffer[16]=10;
buffer[17]=today.year[0]%10;
buffer[18]=today.year[0]/10;
buffer[19]=today.year[1]%10;
buffer[20]=today.year[1]/10;
buffer[21]=10;
22;
{
P0=smg_table[buffer[i]];
P2=transcode[i];
delay();
P2=0xff;
}
/***********初始化子程序************/
voidinit()
TMOD=0X01;
TH0=55535/256;
TL0=55535%256;
EA=1;
ET0=1;
TR0=1;
P1=0XFF;
/**********按键扫描子程序********/
voidkey_scan()
key_detection=P1&
0xff;
add_sub=key_detection&
0x80;
switch(add_sub)
case0x80:
switch(key_detection)
{
case0xfe:
{EA=1;
EX0=1;
IT0=1;
}break;
case0xfd:
case0xfb:
case0xf7:
case0xef:
case0xdf:
case0xbf:
default:
{EA=1;
EX0=0;
TR0=1;
}break;
case0x00:
case0x7e:
case0x7d:
case0x7b:
case0x77:
case0x6f:
case0x5f:
case0x3f:
/***********闰年计算子程序***********/
ucharleap_year(uchara,ucharb)
ucharx,y;
x=a*100+b;
if((x%4==0)&
&
(x%100!
=0)||(x%400==0))
y=1;
else
y=0;
returny;
/***********主程序************/
voidmain()
init();
while
(1)
key_scan();
/**********T0中断服务子程序************/
voidT0_int()interrupt1using0
ucharl;
count++;
if(count==30)
count=0;
now.second++;
if(now.second>
=60)
{
now.second=0;
now.minute++;
if(now.minute>
{
now.minute=0;
now.hour++;
if(now.hour>
=24)
{
now.hour=0;
today.day++;
today.week++;
if(today.week>
=8)
{
today.week=1;
}
l=leap_year(today.year[1],today.year[0]);
if((l==1)&
(today.month==2))
if(today.day>
=30)
{
today.day=1;
today.month++;
}
else
if(today.day>
=months_days[today.month-1]+1)
today.day=1;
if(today.month>
=12)
{
today.month=1;
today.year[0]=today.year[0]+1;
if(today.year[0]>
=100)
{
today.year[0]=0;
today.year[1]=today.year[1]+1;
if(today.year[1]==100)
{
today.year[1]=0;
}
}
}
}
}
}
}
smg_display();
/*************INT0中断服务子程序*****************/
voidint0_int()interrupt0using1
uchark;
{
now.second++;
if(now.second>
=60) now.second=0;
smg_display();
}break;
{
now.minute++;
if(now.minute>
=60) now.minute=0;
now.hour++;
if(now.hour>
=24) now.hour=0;
today.week++;
if(today.week>
=8) today.week=1;
today.day++;
k=leap_year(today.year[1],today.year[0]);
if((k==1)&
{
if(today.day>
=30) today.day=1;
}
else
if(today.day>
=months_days[today.month-1])
today.day=1;
today.month++;
if(today.month>
=13)
today.month=1;
today.year[0]=today.year[0]+1;
if(today.year[0]>
today.year[0]=0;
today.year[1]=today.year[1]+1;
if(today.year[1]==100)
today.year[1]=0;
//now.second++;
0) now.second--;
elsenow.second=59;
//now.minute++;
0) now.minute--;
elsenow.minute=59;
//now.hour++;
0) now.hour--;
elsenow.hour=23;
//today.week++;
1) today.week--;
elsetoday.week=1;
//today.day++;
1) today.day--;
elsetoday.day=29;
else
elsetoday.day=months_days[today.month-1];
//today.month++;
1)
today.month--;
elsetoday.month=12;
//today.year[0]=today.year[0]+1;
0)
today.year[0]=today.year[0]-1;
else
today.year[0]=99;
today.year[1]=today.year[1]-1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 基于 51 数码管 显示 万年历 仿真 程序