下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 89c51单片机数码管时钟例程

89c51单片机数码管时钟例程.doc

89c51单片机数码管时钟例程

不可预知的未来花园
2017-09-18 0人阅读 举报 0 0 暂无简介

简介:本文档为《89c51单片机数码管时钟例程doc》,可适用于高等教育领域

c单片机数码管时钟例程data:writer:wuxiandianfame:wannianlifunction:a时分秒的精确显示及设定b定时的精确显示及设定c定时时刻不影响时钟精确走时d当输入数值有误将蜂鸣报警且数值归或e可以进行定时时间的查看f可进行星期的设定及查看g可进行年月日的设定及查看h可进行平、闰年的分辨i拥有定时时间到报时分及整点提示显示不会闪烁j定时、调时为移位显示设定万年历为单显星期、定时、调时、年、月日分屏显示k可进行数码管和蜂鸣器的检验L当闹钟响起可随时关闭#include<atxh>voidcontrol(void)判断是否进行键盘操作voiddisplay(char,char)显示位控和段控voiddelayms(unsignedintx)延时voidcommon(void)定时、调时显示控制voidfixedtimes(void)定时进行时分秒输入。先按号键再按六位数字键自动返回运行voidswaptimes(void)调时进行时分秒输入。先按号键再按六位数字键自动返回运行voidfixedshow(void)全显示检查数码管和蜂鸣器好坏按零号键voidweek(void)星期设定返回voidweekshow(void)星期显示返回voidcalendarshow(void)日历显示显示年显示月日返回voidcalendar(void)日历设定显示年显示月日返回charkey(void)键盘voidinitial(void)初始化定时中断charhour=,hour=,min=,min=,sec=,sec=,n=,w=,v=,主显示全局变量n循环次数w星期显示v闹铃判断位fhour=,fhour=,fmin=,fmin=,fsec=,fsec=,定时、调时共用全局变量t=,t=,t=,t=,t=,t=,定时显示全局变量year=,year=,year=,year=,mouts=,mouts=,day=,day=年月日全局变量inta={,,,,,,,,,,,}平年inta={,,,,,,,,,,,}闰年int*p为aa设置指针********************************************************************定义和声明voidmain(void){initial()初始化while(){P=xfif(P!=xf)判位进入调控程序control()P=xffdisplay(,hour)主显示程序delayms()display(,hour)delayms()display(,min)delayms()display(,min)delayms()display(,sec)delayms()display(,sec)delayms()}}*************************************************判位操作显示voidcontrol(void){P=xbfif(P==xbe)显示数码管和蜂鸣器,自动返回{P=xP=xffdelayms()}elseif(P==xb)显示某年显示某月日返回calendarshow()elseif(P==xbb)定时年定时月日返回calendar()P=xefif(P==xeb)定时自动返回fixedtimes()elseif(P==xe)调时自动返回swaptimes()elseif(P==xed)显示定时返回fixedshow()P=xdfif(P==xd)星期设置返回week()elseif(P==xdd)星期显示返回weekshow()elseif(P==xde)关闭闹铃v=}******************************************************中断入口voidtime(void)interrupt定时中断{unsignedintqif(v==)盘闹铃是否工作P=elseP=q=year*year*year*year平、闰年判别if((q==q!=)||(q==))p=a闰年指针指向elsep=a平年指针指向TH=xbms定时TL=xn==n=:n循环次数if(n==)时分秒的进位{secif(sec==){sec=secif(sec==){sec=minif(hour==thour==tmin==tmin==t)判蜂鸣器响v=闹铃标志位else判蜂鸣器虽然雍杂但蜂鸣时数码管不闪烁v=if(min==){min=minif(min==){min=hourP=delayms()if(hour==){hour=hour}}}}}}if((hour==)(hour==))判是否大于点{hour=hour=wif(w>||w<)星期控制天w=if(day==)日的判断进位{day=day}if(day*day>*(p(mouts*mouts))){day=day=mouts}if(mouts==)月的判断进位{mouts=mouts}if(mouts*mouts>){mouts=mouts=year}if(year==)年的判断进位{year=yearif(year==){year=yearif(year==){year=yearif(year==){year=}}}}}}*****************************************************************显示程序voiddisplay(charm,charn){unsignedchary={xf,x,xb,xf,x,xd,xd,x,xf,xf}unsignedcharz={xfe,xfd,xfb,xf,xef,xdf}P=zmP=yn}*********************************************************************延时程序voiddelayms(unsignedintx){unsignedintyfor(y=y<xy)}****************************************************************键盘程序charkey(void){P=xfloop:if(P==xf)gotoloopdelayms()if(P==xf)gotoloopwhile(){P=xbfif(P==){while(P!=xbf)return}if(P==){while(P!=xbf)return}if(P==){while(P!=xbf)return}if(P==){while(P!=xbf)return}P=xdfif(P==){while(P!=xdf)return}if(P==){while(P!=xdf)return}if(P==){while(P!=xdf)return}if(P==){while(P!=xdf)return}P=xefif(P==){while(P!=xef)return}if(P==){while(P!=xef)return}}}*************************************************************定时时间程序voidfixedtimes(void){P=xfeP=xcommon()t=fhourt=fhourt=fmint=fmint=fsect=fsec}************************************************************调时程序voidswaptimes(void){P=xfeP=xdcommon()hour=fhourhour=fhourmin=fminmin=fminsec=fsecsec=fsec}************************************************************初始化程序voidinitial(void){TH=xbTL=xIE=xTMOD=xTR=}*******************************************调时、定时共用设定和显示程序voidcommon(void){charf=,j=,kfor(k=k<k){switch(f){case:{for(fsec=key()fsec>fsec=){P=delayms()}P=break}case:{fsec=fsecfor(fsec=key()fsec>=fsec>=fsec=){P=delayms()}P=break}case:{fmin=fsecfsec=fsecfor(fsec=key()fsec>fsec=){P=delayms()}P=break}case:{fmin=fminfmin=fsecfsec=fsecfsec=key()break}case:{fhour=fminfmin=fminfmin=fsecfsec=fsecfor(fsec=key()fsec>fsec=){P=delayms()}P=break}case:{fhour=fhourfhour=fminfmin=fminfmin=fsecfsec=fsecfsec=key()break}}for(P=xf(P==xf)(f<=)j=){if(j<=f){display(,fsec)delayms()if(j<=f){display(,fsec)delayms()if(j<=f){display(,fmin)delayms()if(j<=f){display(,fmin)delayms()if(j<=f){display(,fhour)delayms()if(j<=f){display(,fhour)delayms()}}}}}}}}}********************************************************定时显示程序voidfixedshow(void){do{P=xefdisplay(,t)delayms()display(,t)delayms()display(,t)delayms()display(,t)delayms()display(,t)delayms()display(,t)delayms()}while(P!=xee)}*****************************************星期设定程序voidweek(void){delayms()for(w=key()w>||w<w=)P=xdfdodisplay(,w)while(P!=xdb)P=xff}******************************************星期显示程序voidweekshow(void){P=xdfdodisplay(,w)while(P!=xde)P=xff}*****************************************万年历显示程序voidcalendarshow(void){do{display(,year)年显示delayms()display(,year)delayms()display(,year)delayms()display(,year)delayms()}while(P!=xbb)do{display(,mouts)月日显示delayms()display(,mouts)delayms()display(,day)delayms()display(,day)delayms()}while(P!=xbd)P=xff}*******************************************万年历设定程序voidcalendar(void){P=xfeP=xedo{}while(P==xbb)display(,year=key())年设定display(,year=key())display(,year=key())display(,year=key())do{P=xbf}while(P!=xbd)P=xfeP=xdo{}while(P==xbd)月日设定display(,mouts=key())display(,mouts=key())if(mouts*mouts>||mouts*mouts<){mouts=mouts=P=delayms()}P=display(,day=key())display(,day=key())if(day*day>*p||day*day<){day=day=P=delayms()}P=do{P=xbf}while(P!=xbe)P=xff}

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/18

89c51单片机数码管时钟例程

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利