共阴数码管时钟.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
共阴数码管时钟

共阴数码管时钟 #includereg52.h #define uchar unsigned char #define a unsigned int #define uint unsigned int sbit k0=P1^0;//进入设置 sbit k1=P1^1;//时间显示 sbit k2=P1^2;//闹钟显示 sbit k3=P1^3;//移位 sbit k4=P1^4;//++键 sbit k5=P1^5;//--键 uchar tt, hh;//定时器溢出标志 uchar mode=0;//进入设置标志 uchar w=1;//移位标志 bit sj=0;//时间显示标志 bit nz=0;//闹钟显示标志 bit set1=0;//时间显示标志 bit set2=0;//闹钟显示标志 uchar n;//中断毫秒自加 uchar sec,min,hour;//自动计时的时分秒 uchar ms,mg,fs,fg,ss,sg;//数码管显示的时分秒位 uchar nms,nmg,nfs,nfg,nsz,nsg;//闹钟显示的时分秒位 uchar ns,nf,nss;//闹钟显示 void D(uint m);//按键用的延迟 void shijian();//时间显示函数 void naozhong();//闹钟显示函数 void she();//进入设置界面 void key();//按键扫描 void chuli();//按键处理 uchar code duan0[]=//0-9 {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; uchar code wei2[]=//位选 {0x00,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; void de(z)//数码管用用延迟 { a x,y; for(x=z;x0;x--) for(y=110;y0;y--); } void main() { TMOD=0X11;//工作方式1,16位计数器,两个定时器放一起 //时钟用定时器 ET1=1;//定时器1开 TH1=0X3C;//定时器高8位 TL1=0XB0;//定时器低8位 TR1=1;//定时器启动 EA=1;//总中断开 //无按键自动显示时间用定时器 ET0=1;//定时器0开 TH0=0X3C;//定时器高8位 TL0=0XB0;//定时器低8位 //初值必须放在主函数中 //不能放在显示函数中 sec=00;//时间初值 min=15; hour=14; ns=00;//闹钟初值 nf=59; nss=07; while(1) { chuli();//按键处理 key();//按键扫描 if(mode==0nz==0){shijian();}//开机在不 if(mode0)//进入设置模式 //显示闹钟的时候显示时间 { if(P1==0xff)//如果无按键按下 {TR0=1;//启动定时器1 //如果在1分钟之内再无按键按下 ,显示时间 if(tt==60){tt=0;shijian();TR0=0;mode=0;} //并停止定时器1,设置清零,为下一次准备 } } } } //自动计时函数,中断编号一定要对 void ji()interrupt 3 { TH1=0X3C; TL1=0XB0; n++; if(n==20) {n=0;sec++; if(sec==60) {sec=0;min++; if(min==60) {min=0;hour++; if(hour==24) { hour=0; } } } } } void ti() interrupt 1 {TH0=0X3C; TL0=0XB0; hh++; if(hh==20)//50ms {hh=0; tt++; } } void shijian() { ms=sec/10;//秒十位 mg=sec%10;//秒个位 fs=min/10;//分十位 fg=min%10;//分个位

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档