at89c51时钟闹钟程序.docx

上传人:b****5 文档编号:8787162 上传时间:2023-05-15 格式:DOCX 页数:26 大小:16.56KB
下载 相关 举报
at89c51时钟闹钟程序.docx_第1页
第1页 / 共26页
at89c51时钟闹钟程序.docx_第2页
第2页 / 共26页
at89c51时钟闹钟程序.docx_第3页
第3页 / 共26页
at89c51时钟闹钟程序.docx_第4页
第4页 / 共26页
at89c51时钟闹钟程序.docx_第5页
第5页 / 共26页
at89c51时钟闹钟程序.docx_第6页
第6页 / 共26页
at89c51时钟闹钟程序.docx_第7页
第7页 / 共26页
at89c51时钟闹钟程序.docx_第8页
第8页 / 共26页
at89c51时钟闹钟程序.docx_第9页
第9页 / 共26页
at89c51时钟闹钟程序.docx_第10页
第10页 / 共26页
at89c51时钟闹钟程序.docx_第11页
第11页 / 共26页
at89c51时钟闹钟程序.docx_第12页
第12页 / 共26页
at89c51时钟闹钟程序.docx_第13页
第13页 / 共26页
at89c51时钟闹钟程序.docx_第14页
第14页 / 共26页
at89c51时钟闹钟程序.docx_第15页
第15页 / 共26页
at89c51时钟闹钟程序.docx_第16页
第16页 / 共26页
at89c51时钟闹钟程序.docx_第17页
第17页 / 共26页
at89c51时钟闹钟程序.docx_第18页
第18页 / 共26页
at89c51时钟闹钟程序.docx_第19页
第19页 / 共26页
at89c51时钟闹钟程序.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

at89c51时钟闹钟程序.docx

《at89c51时钟闹钟程序.docx》由会员分享,可在线阅读,更多相关《at89c51时钟闹钟程序.docx(26页珍藏版)》请在冰点文库上搜索。

at89c51时钟闹钟程序.docx

at89c51时钟闹钟程序

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineshumaP1

#definewP3

sbitwei=P2^2;

sbitduan=P2^3;

sbitbeep=P2^1;

sbitk1=P0^0;

sbitk2=P0^1;

sbitk3=P0^2;

sbitk4=P0^3;

sbitk5=P0^4;

sbitled=P2^0;

ucharcodeduanma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

ucharcodeweekma[7]={0x80,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0};

ucharshi,fen,miao,tt;

ucharshi1,fen1,miao1;

ucharshi2,fen2,miao2;

ucharyue,ri,week;

uintnian;

ucharset1=1,set2=1;

voidchushi();//初始化

voiddisplay();//时钟显示

voiddisplay0();

voiddisplay1();//闹钟1显示

voiddisplay2();//闹钟2显示

voidnaozhong();//闹钟报时

voidbaoshi();//整点报时

voidset_shizhong();//时钟设置

voidset_naozhong1();//闹钟1设置

voidset_naozhong2();//闹钟2设置

voidset_riqi();

voidkey_change();//选择数码管显示的内容

voidkey_set();//选择修改的数码

ucharjia(uchar);

ucharjian(uchar);

voidxingqi();

voiddelay1(uintz);

voidmain()

{

chushi();

while

(1)

{

xingqi();

set_shizhong();

set_naozhong1();

set_naozhong2();

set_riqi();

key_change();

key_set();

if(set1==1)

display();

if(set1==2)

display0();

if(set1==3)

display1();

if(set1==4)

display2();

w=weekma[week%7];

baoshi();

naozhong();

}

}

voidchushi()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

shi=0;

fen=0;

miao=0;

shi1=1;

fen1=0;

miao1=0;

shi2=2;

fen2=0;

miao2=0;

nian=2011;

yue=4;

ri=12;

week=2;

tt=0;

beep=0;

}

voidtimer0()interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

tt++;

if(tt>=20)

{

tt=0;

miao++;

if(miao==60)

{

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(shi==24)

{

shi=0;

ri++;

week++;

if(ri==31)

{

ri=1;

yue++;

if(yue==13)

{

yue=1;

nian++;

}

}

}

}

}

}

}

voiddisplay()

{

led=0;

duan=1;

shuma=duanma[shi/10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xfe;

wei=0;

delay1(3);

duan=1;

shuma=duanma[shi%10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xfd;

wei=0;

delay1(3);

duan=1;

shuma=0x40;

duan=0;

shuma=0xff;

wei=1;

shuma=0xfb;

wei=0;

delay1(3);

duan=1;

shuma=duanma[fen/10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xf7;

wei=0;

delay1(3);

duan=1;

shuma=duanma[fen%10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xef;

wei=0;

delay1(3);

duan=1;

shuma=0x40;

duan=0;

shuma=0xff;

wei=1;

shuma=0xdf;

wei=0;

delay1(3);

duan=1;

shuma=duanma[miao/10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xbf;

wei=0;

delay1(3);

duan=1;

shuma=duanma[miao%10];

duan=0;

shuma=0xff;

wei=1;

shuma=0x7f;

wei=0;

delay1(3);

}

voiddisplay0()

{

ucharnian1,nian2,nian3,nian4;

nian1=nian/1000;

nian2=nian%1000/100;

nian3=nian%1000%100/10;

nian4=nian%1000%100%10;

led=0;

duan=1;

shuma=duanma[nian1];

duan=0;

shuma=0xff;

wei=1;

shuma=0xfe;

wei=0;

delay1(3);

duan=1;

shuma=duanma[nian2];

duan=0;

shuma=0xff;

wei=1;

shuma=0xfd;

wei=0;

delay1(3);

duan=1;

shuma=duanma[nian3];

duan=0;

shuma=0xff;

wei=1;

shuma=0xfb;

wei=0;

delay1(3);

duan=1;

shuma=duanma[nian4];

duan=0;

shuma=0xff;

wei=1;

shuma=0xf7;

wei=0;

delay1(3);

duan=1;

shuma=duanma[yue/10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xef;

wei=0;

delay1(3);

duan=1;

shuma=duanma[yue%10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xdf;

wei=0;

delay1(3);

duan=1;

shuma=duanma[ri/10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xbf;

wei=0;

delay1(3);

duan=1;

shuma=duanma[ri%10];

duan=0;

shuma=0xff;

wei=1;

shuma=0x7f;

wei=0;

delay1(3);

}

voiddisplay1()

{

led=1;

duan=1;

shuma=duanma[shi1/10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xfe;

wei=0;

delay1(3);

duan=1;

shuma=duanma[shi1%10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xfd;

wei=0;

delay1(3);

duan=1;

shuma=0x40;

duan=0;

shuma=0xff;

wei=1;

shuma=0xfb;

wei=0;

delay1(3);

duan=1;

shuma=duanma[fen1/10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xf7;

wei=0;

delay1(3);

duan=1;

shuma=duanma[fen1%10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xef;

wei=0;

delay1(3);

duan=1;

shuma=0x40;

duan=0;

shuma=0xff;

wei=1;

shuma=0xdf;

wei=0;

delay1(3);

duan=1;

shuma=duanma[miao1/10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xbf;

wei=0;

delay1(3);

duan=1;

shuma=duanma[miao1%10];

duan=0;

shuma=0xff;

wei=1;

shuma=0x7f;

wei=0;

delay1(3);

}

voiddisplay2()

{

led=1;

duan=1;

shuma=duanma[shi2/10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xfe;

wei=0;

delay1(3);

duan=1;

shuma=duanma[shi2%10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xfd;

wei=0;

delay1(3);

duan=1;

shuma=0x40;

duan=0;

shuma=0xff;

wei=1;

shuma=0xfb;

wei=0;

delay1(3);

duan=1;

shuma=duanma[fen2/10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xf7;

wei=0;

delay1(3);

duan=1;

shuma=duanma[fen2%10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xef;

wei=0;

delay1(3);

duan=1;

shuma=0x40;

duan=0;

shuma=0xff;

wei=1;

shuma=0xdf;

wei=0;

delay1(3);

duan=1;

shuma=duanma[miao2/10];

duan=0;

shuma=0xff;

wei=1;

shuma=0xbf;

wei=0;

delay1(3);

duan=1;

shuma=duanma[miao2%10];

duan=0;

shuma=0xff;

wei=1;

shuma=0x7f;

wei=0;

delay1(3);

}

voiddelay1(uintz)//ms延时

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

ucharjia(ucharn)//加1函数

{

if(k3==0)

{

delay1(15);

if(k3==0)

{

n++;

while(!

k3);

}

}

return(n);

}

ucharjian(ucharm)//减1函数

{

if(k4==0)

{

delay1(15);

if(k4==0)

{

m--;

while(!

k4);

if(m<0)

{m=0;}

}

}

return(m);

}

voidxingqi()

{

if(k5==0)

{

delay1(15);

if(k5==0)

{

week++;

while(!

k5);

}

}

}

voidkey_change()//k1按键扫描

{

if(k1==0)

{

delay1(15);

if(k1==0)

{

set1++;

while(!

k1);

if(set1==5)

{set1=1;}

}

}

}

voidkey_set()//k2按键扫描

{

if(k2==0)

{

delay1(15);

if(k2==0)

{

set2++;

while(!

k2);

if(set2==5)

{set2=1;}

}

}

}

voidbaoshi()//整点报时函数

{

if(fen==00&&miao==00)

{

beep=1;

}

if(miao==4)

{

beep=0;

}

}

voidnaozhong()//闹钟函数

{

uintx;

if(shi==shi1&&fen==fen1&&miao==miao1)

{

for(x=0;x<800;x++)

{

beep=!

beep;

delay1(10);

}

}

if(shi==shi2&&fen==fen2&&miao==miao2)

{

for(x=0;x<800;x++)

{

beep=!

beep;

delay1(10);

}

}

}

voidset_riqi()

{

if(set1==2)

{

if(set2==2)

{

nian=jia(nian);

nian=jian(nian);

}

if(set2==3)

{

yue=jia(yue);

if(yue==13)

{yue=1;}

yue=jian(yue);

if(yue==-1)

{yue=12;}

}

if(set2==4)

{

ri=jia(ri);

if(ri==31)

{ri=1;}

ri=jian(ri);

if(ri==-1)

{ri=30;}

}

}

}

voidset_shizhong()

{

if(set1==1)

{

if(set2==2)

{

shi=jia(shi);

if(shi==24)

{shi=0;}

shi=jian(shi);

if(shi==-1)

{shi=23;}

}

if(set2==3)

{

fen=jia(fen);

if(fen==60)

{fen=0;}

fen=jian(fen);

if(fen==-1)

{fen=59;}

}

if(set2==4)

{

miao=jia(miao);

if(miao==60)

{miao=0;}

miao=jian(miao);

if(miao==-1)

{miao=59;}

}

}

}

voidset_naozhong1()

{

if(set1==3)

{

if(set2==2)

{

shi1=jia(shi1);

if(shi1==24)

{shi1=0;}

shi1=jian(shi1);

if(shi1==-1)

{shi1=23;}

}

if(set2==3)

{

fen1=jia(fen1);

if(fen1==60)

{fen1=0;}

fen1=jian(fen1);

if(fen1==-1)

{fen1=59;}

}

if(set2==4)

{

miao1=jia(miao1);

if(miao1==60)

{miao1=0;}

miao1=jian(miao1);

if(miao1==-1)

{miao1=59;}

}

}

}

voidset_naozhong2()

{

if(set1==4)

{

if(set2==2)

{

shi2=jia(shi2);

if(shi2==24)

{shi2=0;}

shi2=jian(shi2);

if(shi2==-1)

{shi2=23;}

}

if(set2==3)

{

fen2=jia(fen2);

if(fen2==60)

{fen2=0;}

fen2=jian(fen2);

if(fen2==-1)

{fen2=59;}

}

if(set2==4)

{

miao2=jia(miao2);

if(miao2==60)

{miao2=0;}

miao2=jian(miao2);

if(miao2==-1)

{miao2=59;}

}

}

}

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2