51单片机数码管电子时钟C程序Word格式.docx

上传人:b****5 文档编号:20183000 上传时间:2023-01-17 格式:DOCX 页数:14 大小:16.40KB
下载 相关 举报
51单片机数码管电子时钟C程序Word格式.docx_第1页
第1页 / 共14页
51单片机数码管电子时钟C程序Word格式.docx_第2页
第2页 / 共14页
51单片机数码管电子时钟C程序Word格式.docx_第3页
第3页 / 共14页
51单片机数码管电子时钟C程序Word格式.docx_第4页
第4页 / 共14页
51单片机数码管电子时钟C程序Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

51单片机数码管电子时钟C程序Word格式.docx

《51单片机数码管电子时钟C程序Word格式.docx》由会员分享,可在线阅读,更多相关《51单片机数码管电子时钟C程序Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

51单片机数码管电子时钟C程序Word格式.docx

voidjishi();

voidbaoshi();

voidalarm();

voidset_time();

voidset_alarm();

voidset_mdw();

voidkey_change();

voidkey_set();

voiddelay(intm)//延时程序,延时m*0.5ms

{

uinti;

uintj;

for(i=0;

i<

m;

i++)

{

for(j=0;

j<

500;

j++){}

}

}

voidtimer0()interrupt1

TMOD=0x01;

TH0=0x3c;

TL0=0xb1;

n++;

jishi();

main()

TR0=1;

EA=1;

ET0=1;

hh=12;

mm=00;

ss=00;

nhh=7;

nmm=30;

nss=0;

year=2012;

mon=01;

day=01;

week=7;

while

(1)

hhs=hh/10%10;

//时分秒

hhg=hh%10;

mms=mm/10%10;

mmg=mm%10;

sss=ss/10%10;

ssg=ss%10;

nhhs=nhh/10%10;

//闹钟

nhhg=nhh%10;

nmms=nmm/10%10;

nmmg=nmm%10;

nsss=nss/10%10;

nssg=nss%10;

days=day/10%10;

//月日

dayg=day%10;

mons=mon/10%10;

mong=mon%10;

key_change();

//k1按键扫描

key_set();

//k2按键扫描

set_time();

//设置时间

set_mdw();

//设置月日星期

set_alarm();

//设置闹钟

if(set1==1)//正常走时显示

dula=1;

P0=tab[hhs];

dula=0;

P0=0xff;

wela=1;

P0=0xfe;

delay

(1);

wela=0;

//时十位

P0=tab[hhg];

P0=0xfd;

//时个位

P0=tab[mms];

P0=0xfb;

//分十位

P0=tab[mmg];

P0=0xf7;

//分个位

P0=tab[sss];

P0=0xef;

//秒十位

P0=tab[ssg];

P0=0xdf;

//秒个位

if(ssg%2==0)

{

P0=tab[12];

P0=0xf5;

//..

}

if(set1==2)//设置时间

wela=0;

if(set1==3)//正常显示月日-星期

P0=tab[mons];

//月十位

P0=tab[mong];

//月个位

P0=tab[days];

//日十位

P0=tab[dayg];

//日个位

P0=tab[week];

//星期

if(set1==4)//设置月日-星期

//星期

if(set1==5)//正常显示定时

P0=tab[nhhs];

P0=tab[nhhg];

P0=tab[nmms];

P0=tab[nmmg];

P0=tab[nsss];

P0=tab[nssg];

P0=0xc0;

if(set1==6)//设置闹钟定时

baoshi();

//整点报时

alarm();

//闹钟

voidjishi()//计时函数

if(n==20)

{n=0;

ss++;

if(ss==60)

{ss=0;

mm++;

if(mm==60)

{mm=0;

hh++;

if(hh==24)

{hh=0;

day++;

week++;

if(week==8)

{week=0;

if(year%4==0&

&

year%100!

=0||year%400==0)//闰年

if(day==table1[mon]+1)

{day=0;

mon++;

if(mon==13)

{mon=0;

year++;

else//非闰年

if(day==table2[mon]+1)

ucharincone(ucharn)//加1函数

if(k3==0)

{delay(20);

while(!

k3);

n=anjian();

return(n);

uchardecone(ucharm)//减1函数

if(k4==0)

delay(20);

m--;

k4);

if(m<

0)

{m=0;

m=anjian();

return(m);

voidkey_change()//k1按键扫描

if(k1==0)

set1++;

k1);

if(set1==7)

{set1=1;

voidkey_set()//k2按键扫描

if(k2==0)

set2++;

k2);

if(set2==4)

{set2=1;

}

voidbaoshi()//整点报时函数

if(mm==00&

ss==00)

fm=0;

if(ss==1)

fm=1;

voidalarm()//闹钟函数

ucharx;

if(nhh==0)

gotoend;

if(hh==nhh&

mm==nmm&

ss==nss)

P0=0x7f;

dual=0;

for(x=0;

x<

6;

x++)

delay(30);

delay(180);

end:

;

voidset_time()//设置时间函数

if(set1==2)

if(set2==1)

hh=incone(hh);

if(hh==24)

{hh=0;

if(hh==-1)

{hh=23;

hh=decone(hh);

if(set2==2)

mm=incone(mm);

if(mm==60)

{mm=0;

if(mm==-1)

{mm=59;

mm=decone(mm);

if(set2==3)

ss=incone(ss);

if(ss==60)

{ss=0;

if(ss==-1)

{ss=59;

ss=decone(ss);

voidset_mdw()//设置月日星期函数

if(set1==4)

mon=incone(mon);

if(mon==13)

{mon=1;

mon=decone(mon);

if(mon==0)

{mon=12;

day=incone(day);

if(day==32)

{day=1;

day=decone(day);

if(day==0)

{day=31;

week=incone(week);

if(week==8)

{week=1;

week=decone(week);

if(week==0)

{week=7;

voidset_alarm()//设置闹钟函数

if(set1==6)

nhh=incone(nhh);

if(nhh==24)

{nhh=0;

if(nhh==-1)

{nhh=23;

nhh=decone(nhh);

nmm=incone(nmm);

if(nmm==60)

{nmm=0;

nmm=decone(nmm);

if(nmm==-1)

{nmm=59;

nss=incone(nss);

if(nss==60)

{nss=0;

nss=decone(nss);

if(nss==-1)

{nss=59;

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

当前位置:首页 > 高等教育 > 哲学

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

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