ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:27.23KB ,
资源ID:4722857      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4722857.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机的电子万年历.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于51单片机的电子万年历.docx

1、基于51单片机的电子万年历#includetypedef unsigned char u8;typedef unsigned int u16;sbit A=P20;sbit BA=P21;sbit C=P22;sbit led = P30;sbit s7=P37;/*k1设置时间,k2定时。k1,k2使用不自动弹起按键。k3时分秒选择,k4加数字,k5减数字。*/sbit k1=P10; sbit k2=P11;sbit k3=P12;sbit k4=P13;sbit k5=P14;u8 count=0,sec,min=44,hour=8,mon=9,day=28,ss=0;s=60,m=60

2、,h=24,month=12,d=31;u16 year=2015,y=9999;#define DATA P0u16 code table= 0x3f,0x06,0x5b, 0x4f,0x66,0x6d, 0x7d,0x07,0x7f, 0x6f,0x77,0x7c, 0x39,0x5e,0x79, 0x71; /共阴数码管0-F编码void delay(u16 z) u16 x,y; for(x=z;x0;x-) for(y=110;y0;y-);/*通过count获得hour,min,sec变量值 */void timecontrol() sec+; if(sec=60) sec=0;

3、min+; if(min=60) min=0; hour+; if(hour=24)/1d hour=0; day+; switch(mon) case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(day=32) /一个月 day=0; mon+; break; case 4: case 6: case 9: case 11: if(day=31) /一个月 day=0; mon+; break; default: /2月 if(year%4=0 & year%100!=0 ) | (year%100=0 & year%400

4、=0)/闰年 if(day=30) day=0; mon+; else if(day=29) day=0; mon+; break; if(mon=12) /1年 mon=0; year+; if(year=9999) year=0; void display(u16 year1,u8 mon1,u8 day1,u8 zs,u8 zm, u8 zh)led=1; DATA=0x00;A=0;BA=0;C=0; DATA=tablezh/10; delay(3);DATA=0x00;A=1;BA=0;C=0;led=1; DATA=tablezh%10|0x80; delay(3); DATA=

5、0x00;A=0;BA=1;C=0;led=1; DATA=tablezm/10; delay(3); DATA=0x00;A=1;BA=1;C=0;led=1; DATA=tablezm%10|0x80; delay(3);DATA=0x00;A=0;BA=0;C=1; led=1; DATA=tablezs/10; delay(3); DATA=0x00;A=1;BA=0;C=1; led=1; DATA=tablezs%10|0x80; delay(3);DATA=0x00;led=0;A=0;BA=0;C=0;DATA=tableyear1/1000;delay(3);DATA=0x0

6、0;A=1;BA=0;C=0;led=0;DATA=tableyear1%1000/100;delay(3);DATA=0x00;A=0;BA=1;C=0;led=0;DATA=tableyear1%1000%100/10;delay(3);DATA=0x00;A=1;BA=1;C=0;led=0;DATA=tableyear1%10;delay(3);DATA=0x00;A=0;BA=0;C=1;led=0;DATA=tablemon1/10;delay(3);DATA=0x00;A=1;BA=0;C=1;led=0;DATA=tablemon1%10;delay(3);DATA=0x00;

7、A=0;BA=1;C=1;led=0;DATA=tableday1/10;delay(3);DATA=0x00;A=1;BA=1;C=1;led=0;DATA=tableday1%10;delay(3);void keyscan_settime() /时间设置模块 u16 ye;u8 mo,da, st,mt,ht; if(k1=0) delay(10); if(k1=0) st=sec,mt=min,ht=hour,ye=year,mo=mon,da=day; TR0=0; /关闭定时器 while(k1=0) /等待用户按键 display(ye,mo,da,st,mt,ht); if(k

8、3=0) delay(10); if(k3=0) while(!k3); ss+; if(ss=6) ss=0; /*通过ss选择时分秒设置*/ if(k4=0) /加数 delay(10); if(k4=0) while(!k4); switch(ss) case 0:st+;if(st=60)st=0;break; case 1:mt+;if(mt=60)mt=0;break; case 2:ht+;if(ht=24)ht=0;break; case 3:ye+;if(ye=9999) ye=0;break; case 4:mo+;if(mo=13) mo=0;break; case 5:

9、da+;if(da=32) da=0;break; default :; if(k5=0) /减数 delay(10); if(k5=0) while(!k5); switch(ss) case 0:if(st0)st-; else st=0;break; case 1:if(mt0)mt-; else mt=0;break; case 2:if(ht0)ht-; else ht=0;break; case 3:if(ye0) ye-; else ye=0;break; case 4:if(mo0) mo-; else mo=0;break; case 5:if(da0) da-; else

10、da=0;break; default : ; TR0=1; sec=st,min=mt,hour=ht,day=da,mon=mo,year=ye; display(year,mon,day,sec,min,hour);void keyscan_time() /用户定时模块 if(k2=0) delay(10); if(k2=0) s=sec;m=min;h=hour,y=year,month=mon,d=day; while(k2=0) /开始定时设置 display(y,month,d,s,m,h); if(k3=0) delay(10); if(k3=0) while(!k3); ss

11、+; if(ss=6) ss=0; /*通过ss选择时分秒设置*/ if(k4=0) /加数 delay(10); if(k4=0) while(!k4); switch(ss) case 0:s+;if(s=60)s=0;break; case 1:m+;if(m=60)m=0;break; case 2:h+;if(h=24)h=0;break; case 3:y+;if(y=9999) y=0;break; case 4:month+;if(month=13) month=0;break; case 5:d+;if(d=32) d=0;break; default :; if(k5=0)

12、 /减数 delay(10); if(k5=0) while(!k5); switch(ss) case 0:if(s0)s-; else s=0;break; case 1:if(m0)m-; else m=0;break; case 2:if(h0)h-; else h=0;break; case 3:if(y0) y-; else y=0;break; case 4:if(month0) month-; else month=0;break; case 5:if(d0) d-; else d=0;break; default : ; void buz()if(year=y)&(mon=m

13、onth)&(day=d)&(hour=h)&(min=m)&(sec=s) s7=0; delay(1000); s7=1; void time0_init() TMOD=0x01; TH0=0x4b; TL0=0xfe; EA=1; ET0=1; TR0=1;void main(void) time0_init(); while(1) keyscan_settime(); keyscan_time(); buz(); void Time0() interrupt 1 TH0=0x4b; TL0=0xfe; count+; if(count=20) count=0; timecontrol();

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

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