




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机电子钟c程序时间:2010-06-25 07:16来源:未知 作者:电路图网 点击:536次/*单片机SST89E58RD 8位共阳数码管 12M晶振*/*P0段选,P2位选*/#include "at89x52.h"#define uchar unsigned char#define uint unsigned intuchar codetab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff; uchar n;uchar hh,mm,ss;uchar nhh,nmm,nss;uint year;
2、uchar day,mon,week;uchar hhs,hhg,mms,mmg,sss,ssg;uchar days,dayg,mons,mong;uchar nhhs,nhhg,nmms,nmmg,nsss,nssg;uchar set1=1,set2=1;sbit fm=P32;sbit k1=P34;sbit k2=P35;sbit k3=P36;sbit k4=P37;uchar table1=31,31,29,31,30,31,30,31,31,30,31,30,31; /闰年 uchar table2=31,31,28,31,30,31,30,31,31,30,31,30,31;
3、 /非闰年 void jishi();void baoshi();void alarm();void set_time();void set_alarm();void set_mdw();void key_change();void key_set();void delay(int m) /延时程序,延时m*0.5msuint i;uint j;for (i=0;i<m;i+)for(j=0;j<500;j+)void timer0() interrupt 1 TMOD=0x01;TH0=0x3c;TL0=0xb1;n+;jishi();main()TMOD=0x01;TH0=0x
4、3c;TL0=0xb1;TR0=1;EA=1;ET0=1;hh=12;mm=00;ss=00;nhh=7;nmm=30;nss=0;year=2008;mon=12;day=1;week=1; 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=
5、mon/10%10;mong=mon%10;key_change(); /k1按键扫描key_set(); /k2按键扫描set_time(); /设置时间set_mdw(); /设置月日星期set_alarm(); /设置闹钟if(set1=1) /正常走时显示P0=tabhhs;P2_7=0;delay(1);P2_7=1;/时十位 P0=tabhhg;P2_5=0;delay(1);P2_5=1;/时个位 P0=tab10;P2_3=0;delay(1);P2_3=1;/"-"P0=tabmms;P2_1=0;delay(1);P2_1=1;/分十位 P0=tabmm
6、g;P2_6=0;delay(1);P2_6=1;/分个位 P0=tab10;P2_4=0;delay(1);P2_4=1;/"-"P0=tabsss;P2_2=0;delay(1);P2_2=1;/秒十位 P0=tabssg;P2_0=0;delay(1);P2_0=1;/秒个位 if(set1=2) /设置时间P0=tabhhs;P2_7=0;delay(1);P2_7=1;/时十位 P0=tabhhg;P2_5=0;delay(1);P2_5=1;/时个位 P0=tab10;P2_3=0;delay(1);P2_3=1;/"-"P0=tabmms;
7、P2_1=0;delay(1);P2_1=1;/分十位 P0=tabmmg;P2_6=0;delay(1);P2_6=1;/分个位 P0=tab10;P2_4=0;delay(1);P2_4=1;/"-"P0=tabsss;P2_2=0;delay(1);P2_2=1;/秒十位 P0=tabssg;P2_0=0;delay(1);P2_0=1;/秒个位 if(set1=3) /正常显示月日-星期P0=tabmons;P2_7=0;delay(1);P2_7=1;/时十位 P0=tabmong;P2_5=0;delay(1);P2_5=1;/时个位 P0=tab10;P2_3
8、=0;delay(1);P2_3=1;/"-"P0=tabdays;P2_1=0;delay(1);P2_1=1;/分十位 P0=tabdayg;P2_6=0;delay(1);P2_6=1;/分个位 P0=tab11;P2_4=0;delay(1);P2_4=1;/"-" P0=tab11;P2_2=0;delay(1);P2_2=1;/秒十位 P0=tabweek;P2_0=0;delay(1);P2_0=1;/秒个位 if(set1=4) /设置月日-星期P0=tabmons;P2_7=0;delay(1);P2_7=1;/时十位 P0=tabmo
9、ng;P2_5=0;delay(1);P2_5=1;/时个位 P0=tab10;P2_3=0;delay(1);P2_3=1;/"-"P0=tabdays;P2_1=0;delay(1);P2_1=1;/分十位 P0=tabdayg;P2_6=0;delay(1);P2_6=1;/分个位 P0=tab11;P2_4=0;delay(1);P2_4=1;/"-" P0=tab11;P2_2=0;delay(1);P2_2=1;/秒十位 P0=tabweek;P2_0=0;delay(1);P2_0=1;/秒个位 if(set1=5) /正常显示定时P0=t
10、abnhhs;P2_7=0;delay(1);P2_7=1;/时十位 P0=tabnhhg;P2_5=0;delay(1);P2_5=1;/时个位 P0=tab10;P2_3=0;delay(1);P2_3=1;/"-"P0=tabnmms;P2_1=0;delay(1);P2_1=1;/分十位 P0=tabnmmg;P2_6=0;delay(1);P2_6=1;/分个位 P0=tab10;P2_4=0;delay(1);P2_4=1;/"-"P0=tabnsss;P2_2=0;delay(1);P2_2=1;/秒十位 P0=tabnssg;P2_0=0
11、;delay(1);P2_0=1;/秒个位 if(set1=6) /设置闹钟定时P0=tabnhhs;P2_7=0;delay(1);P2_7=1;/时十位 P0=tabnhhg;P2_5=0;delay(1);P2_5=1;/时个位 P0=tab10;P2_3=0;delay(1);P2_3=1;/"-"P0=tabnmms;P2_1=0;delay(1);P2_1=1;/分十位 P0=tabnmmg;P2_6=0;delay(1);P2_6=1;/分个位 P0=tab10;P2_4=0;delay(1);P2_4=1;/"-"P0=tabnsss;P
12、2_2=0;delay(1);P2_2=1;/秒十位 P0=tabnssg;P2_0=0;delay(1);P2_0=1;/秒个位 baoshi(); /整点报时alarm(); /闹钟void jishi() /计时函数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=table1mon+1)day=0;mon+;if(mon=13)mon=0;
13、year+;else /非闰年if(day=table2mon+1)day=0;mon+;if(mon=13)mon=0;year+;uchar incone(uchar n) /加1函数if(k3=0)delay(20);if(k3=0)n+;while(!k3);return(n);uchar decone(uchar m) /减1函数if(k4=0)delay(20);if(k4=0)m-;while(!k4);if(m<0)m=0;return(m);void key_change() /k1按键扫描 if(k1=0)delay(20);if(k1=0)set1+;while(!
14、k1);if(set1=7)set1=1;void key_set() /k2按键扫描 if(k2=0)delay(20);if(k2=0)set2+;while(!k2);if(set2=4)set2=1;void baoshi() /整点报时函数 if(mm=00&&ss=00)fm=0;if(ss=1)fm=1;void alarm() /闹钟函数 uchar x;if(nhh=0)goto end;if(hh=nhh&&mm=nmm&&ss=nss) for(x=0;x<6;x+)fm=0;delay(30);fm=1;delay(
15、20);fm=0;delay(30);fm=1;delay(20);fm=0;delay(30);fm=1;delay(20);fm=0;delay(30);fm=1;delay(180);end:;void set_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
16、)ss=0;if(ss=-1)ss=59;ss=decone(ss);void set_mdw() /设置月日星期函数 if(set1=4)if(set2=1)mon=incone(mon);if(mon=13)mon=1;mon=decone(mon);if(mon=0)mon=12;if(set2=2)day=incone(day);if(day=32)day=1;day=decone(day);if(day=0)day=31;if(set2=3)week=incone(week);if(week=8)week=1;week=decone(week);if(week=0)week=7;void set_alarm() /设置闹钟函数 if(set1=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 快速掌握商业分析师试题及答案
- 自我提升的统计学试题及答案2024
- 2024汽车维修工职业素养考核试题及答案
- 市场营销中的战略思考小自考试题及答案
- 药物的机体反应试题与答案
- 省考食品质检员的职业素养提升试题及答案
- 统计学重点难点解析及试题答案
- 2024-2025学年内蒙古巴彦淖尔一中高一下学期第一次学业诊断物理及答案
- 春姑娘打电话课件
- 汽车美容技巧提升的考试试题及答案
- 一氧化氮吸入治疗法演示文稿
- 欧盟农残标准
- 以传世之心做传世之文-《江苏文库》编纂出版的思考与实践
- YY/T 0935-2014CT造影注射装置专用技术条件
- 供水管道的查漏验漏及案例分析课件
- 2023年陕西金融资产管理股份有限公司招聘笔试题库及答案解析
- 《药品经营质量管理规范》的五个附录
- 医院安全检查台账
- 浙江省温州市地图矢量PPT模板(图文)
- 重庆邮电大学本科毕业设计(论文)参考模板-2020版
- 微课国内外研究现状文档
评论
0/150
提交评论