版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit key1=P34;sbit key2=P35;sbit key3=P36;sbit key4=P37;sbit beep=P33;/0为响uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x5c,0x54,0x73;/16、无 17、o 18、n 19、Puchar time,tem
2、p,tt,bb,seconds,mins,hours,days,months,allow,sethours,setmins,choose,does,keep;uint years,hz;void init();/初始化void allmode();/所有模式void keyscanf();/键盘输入1void bell();/6、闹铃试听void settime();/5、设置闹钟时间void stopwatch();/4、使用秒表void lock();/3、锁死键盘void changetime();/2、改时间void changeday();/1、改日期void display(uch
3、ar a1,uchar b2,uchar c3,uchar d4);/显示程序void keychoose();/键盘输入2void delay(uchar z)uchar y;for(z;z;z-)for(y=110;y;y-);void main()init();while(1)allmode();keyscanf();void init()TMOD=0x11;TH0=(65535-46067)/256;/计算结果为46080,但实际运算中有偏差TL0=(65535-46067)%256;EA=1;ET0=1;ET1=1;TR0=1;years=2016;months=2;days=8;h
4、ours=22;mins=44;allow=0x00; void allmode()if(allow=0x00)/ 时,分display(hours/10,hours%10,mins/10,mins%10);if(allow=0x01)/年display(years/1000,years%1000/100,years%100/10,years%10);if(allow=0x02)/月,日display(months/10,months%10,days/10,days%10);if(allow=0x04)/秒数display(seconds/10,seconds%10,time/10,time%
5、10);if(allow=0x08)/闹钟时间display(sethours/10,sethours%10,setmins/10,setmins%10);/模式进入if(allow=0x03)/年月日更改changeday();if(allow=0x05)/时分秒更改changetime();if(allow=0x09)/锁定键盘lock();if(allow=0x06)/秒表界面stopwatch();if(allow=0x0a)/设定闹钟settime();if(allow=0x0c)/闹铃试听bell();void keyscanf()/按键1:年0001if(key1=0&&
6、amp;allow=0x00)delay(5);if(key1=0)allow=0x01;if(key1=1&&allow=0x01)delay(5);if(key1=1)allow=0x00;/按键2:月日0010if(key2=0&&allow=0x00)delay(5);if(key2=0)allow=0x02;if(key2=1&&allow=0x02)delay(5);if(key2=1)allow=0x00;/按键3:秒数0100if(key3=0&&allow=0x00)delay(5);if(key3=0)allo
7、w=0x04;if(key3=1&&allow=0x04)delay(5);if(key3=1)allow=0x00;/按键4:闹钟时间1000if(key4=0&&allow=0x00)delay(5);if(key4=0)allow=0x08;if(key4=1&&allow=0x08)delay(5);if(key4=1)allow=0x00;/-/模式进入/1.年月日更改0011if(key1=0&&key2=0&&allow=0x01)|(key1=0&&key2=0&&a
8、llow=0x02)delay(5);if(key1=0&&key2=0)allow=0x03;/2.时分秒更改0101if(key1=0&&key3=0&&allow=0x01)|(key1=0&&key3=0&&allow=0x04)delay(5);if(key1=0&&key3=0)allow=0x05;/3.锁定1001if(key1=0&&key4=0&&allow=0x01)|(key1=0&&key4=0&&allow=
9、0x08)delay(5);if(key1=0&&key4=0)allow=0x09;/4.秒表0110if(key2=0&&key3=0&&allow=0x02)|(key2=0&&key3=0&&allow=0x04)delay(5);if(key2=0&&key3=0)allow=0x06;/5.设定闹钟1010if(key2=0&&key4=0&&allow=0x02)|(key2=0&&key4=0&&allow=0x08)d
10、elay(5);if(key2=0&&key4=0)allow=0x0a;/6.闹铃试听1100if(key3=0&&key4=0&&allow=0x04)|(key3=0&&key4=0&&allow=0x08)delay(5);if(key3=0&&key4=0)allow=0x0c;void bell()/模式6试听闹铃while(key3=0&&key4=0)if(seconds%2)display(sethours/10,sethours%10,setmins/10,set
11、mins%10);elseif(bb=0)display(16,0,15,15);if(bb=1)display(16,16,17,18);beep=1;allow=0x00;void settime()/模式5设置闹钟uchar hour,min,bbb;keep=1;hour=sethours;min=setmins;bbb=bb;while(keep<4)if(keep=0)break;while(keep=1)if(does=1&&time<4)display(16,16,min/10,min%10);elsedisplay(hour/10,hour%10,
12、min/10,min%10);keychoose();if(does=1)if(choose=0x01)hour+;does=0;if(choose=0x02)hour-;does=0;if(does=0&&(time=0|time=10)if(choose=0x01)does=3;if(choose=0x02)does=4;if(does!=1&&(time=9|time=19)if(does=3)hour=hour+10;if(does=4)hour=hour-10;does=0;if(hour>23&&hour<200)hour
13、=0;if(hour>199)hour=23;while(keep=2)if(does=1&&time<4)display(hour/10,hour%10,16,16);elsedisplay(hour/10,hour%10,min/10,min%10);keychoose();if(does=1)if(choose=0x01)min+;does=0;if(choose=0x02)min-;does=0;if(does=0&&(time=0|time=10)if(choose=0x01)does=3;if(choose=0x02)does=4;if(
14、does!=1&&(time=9|time=19)if(does=3)min=min+10;if(does=4)min=min-10;does=0;if(min>59&&min<200)min=0;if(min>199)min=59;while(keep=3)if(does=1&&time<4)P0=0;elseif(bbb=1)display(16,16,17,18);if(bbb=0)display(16,0,15,15);keychoose();if(choose=0x01)bbb=1;if(choose=0x02)
15、bbb=0;if(keep=4)sethours=hour;setmins=min;bb=bbb;allow=0x00;void stopwatch()/模式4秒表uchar ms,second;second=0;temp=0;tt=100;hz=8450;keep=1;/计算结果为9216,while(keep=1)ms=temp;if(allow=0x16)second+;if(second>90)second=0;allow=0x06;display(second/10,second%10,ms/10,ms%10);keychoose();if(keep>1)keep=1;i
16、f(does=1)switch(choose)case 0x01:TR1=1;does=0;break;case 0x02:TR1=0;does=0;break;case 0x04:TR1=0;temp=0;second=0;does=0;break;default:break;TR1=0;allow=0x00;void lock()/模式3锁定uchar open,x;open=1;x=(seconds+2)%10;while(open=1)display(hours/10,hours%10,mins/10,mins%10);if(key1=0&&key4=0)if(x=se
17、conds%10)open=0;for(x=100;x;x-)display(16,0,15,15);else break;while(open=0)display(hours/10,hours%10,mins/10,mins%10);if(key1=0&&key4=0)if(x=seconds%10)open=1;for(x=100;x;x-)display(16,16,17,18);else x=(seconds+3)%10;allow=0x00;void changetime()/模式2改变时分秒uchar hour,min,second;delay(1000);hour
18、=hours;min=mins;second=seconds;keep=1;while(keep<4)if(keep=0)break;while(keep=1)if(time<4&&does=1)display(16,16,min/10,min%10);elsedisplay(hour/10,hour%10,min/10,min%10);keychoose();if(does=1)if(choose=0x01)hour+;does=0;if(choose=0x02)hour-;does=0;if(does=0&&(time=0|time=10)if(
19、choose=0x01)does=3;if(choose=0x02)does=4;if(does!=1&&(time=19|time=9)if(does=3)hour=hour+10;if(does=4)hour=hour-10;does=0;if(hour>23&&hour<200)hour=0;if(hour>199)hour=23;while(keep=2)if(time<4&&does=1)display(hour/10,hour%10,16,16);elsedisplay(hour/10,hour%10,min/
20、10,min%10);keychoose();if(does=1)if(choose=0x01)min+;does=0;if(choose=0x02)min-;does=0;if(does=0&&(time=0|time=10)if(choose=0x01)does=3;if(choose=0x02)does=4;if(does!=1&&(time=19|time=9)if(does=3)min=min+10;if(does=4)min=min-10;does=0;if(min>59&&min<200)min=0;if(min>
21、199)min=59;while(keep=3)if(time<4&&does=1)display(16,16,0,0);elsedisplay(second/10,second%10,0,0);keychoose();if(does=1)if(choose=0x01)second+;does=0;if(choose=0x02)second-;does=0;if(does=0&&(time=0|time=10)if(choose=0x01)does=3;if(choose=0x02)does=4;if(does!=1&&(time=19|t
22、ime=9)if(does=3)second=second+10;if(does=4)second=second-10;does=0;if(second>59&&second<200)second=0;if(second>199)second=59;if(keep=4)hours=hour;mins=min;seconds=second;time=0;allow=0x00;void changeday()/模式1.改变年月日uchar year1,year2,month,day;delay(1000);month=months;day=days;keep=1;
23、year1=years%10000/100;year2=years%100;while(keep<5)if(keep=0)break;while(keep=1)if(time<4&&does=1)display(16,16,year2/10,year2%10);elsedisplay(year1/10,year1%10,year2/10,year2%10);keychoose();if(does=1)/按一下if(choose=0x01)does=0;year1+;if(choose=0x02)does=0;year1-;if(does=0&&(ti
24、me=0|time=10)if(choose=0x01)does=3;if(choose=0x02)does=4;if(does!=1&&(time=19|time=9)/长按if(does=3)year1=year1+10;if(does=4)year1=year1-10;does=0;if(year1>99&&year1<200)year1=0;if(year1>199)year1=99;while(keep=2)if(time<4&&does=1)display(year1/10,year1%10,16,16);el
25、sedisplay(year1/10,year1%10,year2/10,year2%10);keychoose();if(does=1)if(choose=0x01)does=0;year2+;if(choose=0x02)does=0;year2-;if(does=0&&(time=0|time=10)if(choose=0x01)does=3;if(choose=0x02)does=4;if(does!=1&&(time=19|time=9)if(does=3)year2=year2+10;if(does=4)year2=year2-10;does=0;i
26、f(year2>99&&year2<200)year2=0;if(year2>199)year2=99;while(keep=3)/月if(time<4&&does=1)display(16,16,day/10,day%10);elsedisplay(month/10,month%10,day/10,day%10);keychoose();if(does=1)/按一下if(choose=0x01)does=0;month+;if(choose=0x02)does=0;month-;if(does=0&&(time=0|ti
27、me=10)if(choose=0x01)does=3;if(choose=0x02)does=4;if(does!=1&&(time=19|time=9)/长按if(does=3)month=month+10;if(does=4)month=month-10;does=0;if(month>12&&month<200)month=1;if(month>199|month=0)month=12;while(keep=4)if(time<4&&does=1)display(month/10,month%10,16,16);e
28、lsedisplay(month/10,month%10,day/10,day%10);keychoose();if(does=1)if(choose=0x01)does=0;day+;if(choose=0x02)does=0;day-;if(does=0&&(time=0|time=10)if(choose=0x01)does=3;if(choose=0x02)does=4;if(does!=1&&(time=19|time=9)if(does=3)day=day+10;if(does=4)day=day-10;does=0;if(day>28&
29、;&day<200)if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)if(day>31)day=1;if(month=4|month=6|month=9|month=11)if(day>30)day=1;if(month=2)if(day>28&&(year1*100+year2)%4!=0)/非闰年day=1;if(day>29&&(year1*100+year2)%4=0)/闰年day=1;if(day>199|day=0)if(month=
30、1|month=3|month=5|month=7|month=8|month=10|month=12)day=31;if(month=4|month=6|month=9|month=11)day=30;if(month=2)if(year1*100+year2)%4!=0)/非闰年day=28;if(year1*100+year2)%4=0)/闰年day=29;if(keep=5)years=year1*100+year2;months=month;days=day;allow=0x00;void display(uchar a1,uchar b2,uchar c3,uchar d4)P0=
31、0;P2=0xfe;P0=tablea1;delay(5);P0=0;P2=0xfd;P0=tableb2;delay(5);P0=0;P2=0xfb;P0=tablec3;delay(5);P0=0;P2=0xf7;P0=tabled4;delay(5);void keychoose()/增加键1if(key1=0&&choose=0x00)delay(5);if(key1=0)choose=0x01;if(key1=1&&choose=0x01)delay(5);if(key1=1)choose=0x00;does=1;/does一次被允许的执行,有一次操纵
32、机会/减少键2if(key2=0&&choose=0x00)delay(5);if(key2=0)choose=0x02;if(key2=1&&choose=0x02)delay(5);if(key2=1)choose=0x00;does=1;/确认键 下一步 3if(key3=0&&choose=0x00)delay(5);if(key3=0)choose=0x04;keep+;if(key3=1&&choose=0x04)delay(5);if(key3=1)choose=0x00;does=1;/返回或取消键4if(key4=0&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机关内部监察制度
- 机关单位内部惩罚制度
- 机动车检测站内部流程审批制度
- 天津生物工程职业技术学院《虚拟现实设计》2024-2025学年第二学期期末试卷
- 林业站内部控制制度
- 检查内部管理制度
- 欢乐合唱团内部管理制度
- 民幼协会内部控制制度
- 民警内部追责制度
- 流通企业内部核算制度
- 2025-2026学年苏科版(新教材)小学劳动技术一年级下学期教学计划及进度表
- 大象版(新版)三年级下册科学全册教案完整版教学设计含教学反思
- 2026年抚州职业技术学院单招职业适应性测试题库带答案解析
- 2025年山东经贸职业学院单招综合素质考试题库附答案解析
- 2025年湖南电气职业技术学院单招职业技能测试题库带答案解析
- (2026年春季新版本)人教版二年级数学下册全册教案
- 2026年鹭江创新实验室学术专员招聘3人(福建)笔试备考试题及答案解析
- 员工请假制度及审批流程规范
- 时间序列分析及其应用-基于R 课件 第1-4章 时间序列分析概述 -平稳序列的拟合与预测
- 2026年时事政治测试题库100道附参考答案(完整版)
- 混凝土地面拆除与修复施工方案
评论
0/150
提交评论