《数字电子钟.docx》由会员分享,可在线阅读,更多相关《数字电子钟.docx(33页珍藏版)》请在课桌文档上搜索。
1、数字电子钟单片机技术课程设计说明书数字电子钟院、部:电气与信息工程学院学生姓名:61素色指导教师:王韧职称副教授专业:电子信息工程班级:电子IlO班完成时间:2013年12月23日湖南工学院课程设计任务书课程:单片机技术课程设计题目:数字电子钟数字频率计数字电压表交通灯抢答器密码锁波形发生器数字温度计计算器数字式秒表适用班级:电子IIol2、通信11023通信1101电子1103时间:20132014学年第一学期指导教师:王韧单片机技术课程设计任务书一、设计题目:数字电子钟、数字频率计、数字电压表、交通灯、抢答器、密码锁、波形发生器、数字温度计、计算器、数字式秒表。二、适用班级:电子HOl2、
2、通信11023、通信1101电子1103三、指导教师:王韧四、设计目的与任务:学生通过理论设计与实物制作解决相应的实际问题,巩固与运用在单片机技术中所学的理论知识与实验技能,掌握单片机应用系统的通常设计方法,提高设计能力与实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。五、设计内容与要求设计内容1、数字电子钟设计一个具有特定功能的电子钟。该电子钟上电或者按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,如今可利用各调整键调整时间,调整结束后可
3、按启动/调整键再次进入时钟运行状态。2、数字频率计设计一个能够测量周期性矩形波信号的频率、周期、脉宽、占空比的频率计。该频率计上电或者按键复位后能自动显示系统提示符“P.”,进入测量准备状态。按频率测量键则测量频率;按周期测量键则测量周期;按脉宽测量键则测量脉宽;按占空比测量键则测量占空比。3、数字电压表设计一个能够测量直流电压的数字电压表。测量电压范围05V,测量精度小数点后两位。该电压表上电或者按键复位后能自动显示系统提示符“P.”,进入测量准备状态,按测量开始键则开始测量,并将测量值显示在显示器上,按测量结束键则自动返回“P.”状态。4、交通灯设计一个具有特定功能的十字路口交通灯。该交通
4、灯上电或者按键复位后能自动显示系统提示符”,进入准备工作状态。按开始键则开始工作,按结束键则返回“P.”状态。要求甲车道与乙车道两条交叉道路上的车辆交替运行,甲车道为主车道,每次通车时间为60秒,乙车道为次车道,每次通车时间为30秒,要求黄灯亮3秒,同时1秒闪烁一次。有应急车辆出现时,红灯全亮,应急车辆通车时间10秒,同时禁止其他车辆通过。5、抢答器设计一个具有特定功能的抢答器。该抢答器上电或者按键复位后能自动显示系统提示符“P.”,进入准备工作状态。主持人按下开始按钮后,抢答开始并限定时间30S;IOS内无人抢答,蜂鸣器发出音响;主持人按下开始按钮之前有人按下抢答器,抢答违规,显示器显示违规
5、台号,违规指示灯亮,其它按钮不起作用;正常抢答,显示器显示台号,蜂鸣器发出音响,其它抢答按钮无效;正常抢答下,从按下抢答按钮开始30S内,答完按钮没按下,则作超时处理,超时处理时,违规指示灯亮,显示器显示违规台号。蜂鸣器发出音响;各台数字显示的消除,蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位按钮。6、密码锁设计一个具有特定功能的密码锁。该密码锁上电或者按键复位后能自动显示系统提示符“P.”,进入准备工作状态。该密码锁具有系统原始密码888888,用户能够设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。7、波形发
6、生器设计一个具有特定功能的波形发生器。该波形发生器上电或者按键复位后能自动显示系统提示符“P.”,进入准备工作状态。该波形发生器能够分别产生幅值05V、频率100Hz100KHz范围内的三角波、锯齿波、方波、梯形波与正弦波。8、数字温度计设计一个具有特定功能的数字温度计。该数字温度计上电或者按键复位后能自动显示系统提示符“P.“,进入准备工作状态。测量温度范围0C99C,测量精度小数点后两位,能够通过开始与结束键操纵数字温度计的工作状态。9、计算器设计一个具有特定功能的计算器。该计算器上电或者按键复位后能自动显示系统提示符“P.”,进入准备工作状态。能实现(1)基本的加、减、乘、除、平方、开方
7、;(2)三角函数运算;(3)十进制、十六进制转换运算;(4)其他功能。10、数字式秒表设计一个具有特定功能的数字式秒表。该数字式秒表上电或者按键复位后能自动显示系统提示符“P.”,进入准备工作状态。该数字式秒表应具有开始、暂停、连续、清零与停止功能。设计要求1、以上课题能够任选其一或者多选,学生也能够自拟课题;2、编程语言:汇编或者C51;3、计算机打印单片机技术课程设计说明书一份;4、设计时间:一周;5、实物制作;6、人员分组:一人一组一实物。六、单片机技术课程设计说明书正文要紧内容参照”单片机技术课程设计说明书正文要紧内容”文件。七、单片机技术课程设计说明书书写规范格式参照”单片机技术课程
8、设计说明书书写规范格式”文件。八、参考资料1、马忠梅,单片机的C语言Winek)WS环境编程宝典IX,北京:北京航空航天大学出版社,2003.6;2、李光飞,单片机C程序设计指导M,北京:北京航空航天大学出版社,2003.01;3、李光飞,单片机课程设计实例指导M,北京:北京航空航天大学出版社,2004.9o电气自动化教研室2013年9月10日本课程设计为数字电子钟的设计。以AT89S52为核心,配合LED数码管显示器与按键为用户提供长期、连续、可靠、稳固的工作环境。该数字电子钟有的时候分秒显示与日期显示与时间与日期调整的功能。系统软件设计包含单片机计算机两部分的编程。计算机软件编程要紧实现参
9、数设置、串行口数据接收、指令发送与数据的显示与存储。单片机软件编程要紧实现键盘、LED显示等各模块的功能,使用汇编语言编程。关键词数字电子钟;单片机;LED显示.ABSTRACTThecoursedesignedfordigitalelectronicclockdesigns.ToAT89S52asthecore,withtheLEDdigitaltubedisplayandbuttonsprovideuserswithlong-term,continuous,reliableandstableworkingenvironment.Thedigitalelectronicclockandsom
10、etimesminutesandsecondsdisplayanddatedisplayaswellastimeanddateadjustmentfunction.Systemsoftwaredesignincludestwoparts,thecomputerprogrammingmicrocontrollers.Computersoftwareprogrammingtoachievethemainparametersettings,serialportdatareceiving,sendingcommandsanddatadisplayandstorage.SCMsoftwareprogra
11、mmingtoachievethemainkeypad,LEDdisplaysthefunctionsofeachmodule,usingassemblylanguageprogramming.Keywordsdigitalelectronicclock;microcomputer;LEDDisplay1设计任务及要求O1.1 设计任务O1.2 功能要求O1.3 总体方案及工作原理O2.1硬件系统的模块12.2系统的原理图及PCB23软件系统的设计33.1单片机的使用情况33.3程序流程图34仿真测试及结果64.1设计结论及使用说明64.2仿真结果64.3误差分析74.4设计体会74.5教学建
12、议7参考文献9致谢10附录111电路原理图112 CAD原理图123 元器件布局134元器件清单155程序清单161设计任务及要求1.1 设计任务我们的生活离不开时间,能够说时钟就是我们生存的一部分。此次设计数字钟就是为了熟悉数字钟的原理,从而学会制作数字钟。本次课程设计通过理论设计与实物制作解决相应的实际问题,巩固与运用在单片机技术中所学的理论知识与实验技能,掌握单片机应用系统的通常设计方法,提高设计能力与实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。1.2 功能要求设计一个具有特定功能的电子钟,该电子钟上电或者按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;小
13、时的循环按12进制进行;第一次按电子钟的开关键,电子钟从OO时OO分OO秒开始运行,进入时钟运行状态;再次按电子钟系统调整键,则电子钟进入时钟调整状态,如今能够进行时间的加减调整;继续按系统调整键能够进行有关项目的调整,等调整完毕之后继续按调整键即可跳出调整状态再次进入时钟运行状态。1.3 总体方案及工作原理设计中使用AT89S52芯片及LED显示器,一些独立式按键构成一个简单的数字电子钟。设计中是使用单片机的内部定时器进行定时,程序框图如图Ll所示整个电子钟的工作原理是:在正常的供电状态下,首先利用单片机定时,到了相应的时间由单片机将所需要显示的数据送到LED显示器的输入口,当有键按下时则进
14、入相应的按键显示与调整状态,进行按键调整。图1数字电子钟总设计框图2硬件系统的设计2.1 硬件系统的模块本课程设计中硬件电路要紧由单片机最小系统,独立式键盘,工作电源,数码管显示,下载电路构成,下面就具体介绍其各部分的功能。2.1.1 单片机最小系统(1)时钟电路单片机的时钟电路由振荡电路与分频电路构成。其中振荡电路由反相器与并联外接的石英晶体与电容构成,用于产生振荡脉冲。而分频电路则用于把振荡脉冲分频,以得到所需要的时钟信号。时钟电路是单片机系统的心脏,它操纵着单片机的工作节奏。本设计使用内部时钟方式,12MHZ的石英晶体振荡器。(2)复位电路复位电路用于产生复位信号,通过RST引脚送入单片
15、机,进行复位。复位电路的好坏直接影响单片机系统工作的可靠性,因此,要重视复位电路的设计与研究。只要RST端保持IonIS以上的高电平,就能使单片机有效地复位,本设计使用上电复位与手动复位两种方式。(3)AT89S52单片机T89S52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROMFaishProgrammableandErasableReadOnlyMemory)的低电压,高性能CM0S8位微处理器,俗称单片机。AT89S单片机为很多嵌入式操纵系统提供了一种灵活性高且价廉的方案。(4)电源模块根据设计要求与实验方便使用了2种供电方式,一种为USB供电,另一种是外接12V电源。(5)下
16、载口电路用PC的USB供电,通过下载口把程序导入单片机芯片内。下载口分别接在单片机的RST引脚与PI5、Pl6、P17口线上实现数据传送。2.1.2按键模块考虑各方面因素,决定使用独立键盘,这样的话只需四个按键即可。其中,按下Kl键进入时间设置方式,如今默认设置秒,按K2键进行加1设置,按K3键进行减I设置,直至设置完成后再次按下KO键,进入正常模式。KO为开关键,可进行电子钟的开关操作。2.1.3LED显示电路本次课程设计中,显示电路由八位共阳数码管构成。数码管的八个位控口接在AT89S52芯片的P2口线上,段控线接在Po口线上,假如直接接在单片机的口线上会造成数码管显示亮度不够多以为了显示
17、正常,加了一个驱动芯片74HC573。2.2系统的原理图及PCB在本次课程设计中,所绘制的PCB板图与原理图时使用的是Protel软件,PrOtel99SE是PrOteI公司近10年来致力于WindOWS平台开发的最新结晶,能实现从电学概念设计到输出物理生产数据,与这之间的所有分析、验证与设计数据管理。因而今天的PrOteI最新产品已不是单纯的PCB(印制电路板)设计工具,而是一个系统工具,覆盖了以PCB为核心的整个物理设计。PrOtCI设计系统是一套建立在IBM兼容PC环境下的EDA电路集成设计系统,由于其高度的集成性与扩展性,一经推出,立即为广大用户所同意,很快就成为世界PC平台上最流行的
18、电子设计自动化软件。其数字电子钟的原理图及其PCB板图见附录。3软件系统的设计3.1 单片机的使用情况该数字电子钟用到了单片机的定时器的功能,此外用到了单片机的中断功能,在数据的显示时所使用的是查表的方法,因此需要将表格、数据存到单片机的程序存储器中去。由于电子钟需要能够进行调节,因此,需要在单片机的P口上加上按键,本设计使用独立式键盘,直接接在Pl口上且按键的结果存贮在单片机的内部数据存储器里面。用到的LED显示器接到了单片机的PO口线上与P3口线上。3.2 各模块功能简要介绍该数字电子钟所用的软件模块有定时器模块、按键模块、LED显示模块。(1)定时器模块选择定时器0,设置定时方式为方式1
19、,设置定时时间为50mSo(2)按键模块使用独立式键盘,共用四个按键对电路进行操纵与操作,分别为KO、KI、K2、K3来操纵电子钟的开/关与调整。(3)LED显示模块该电子钟一通电即让它显示P.,按开启键即可显示时分秒,然后结合键盘操作还能够对时间进行调整。3. 3程序流程图3.1 .1整体设计的流程图在此次设计的过程中,我是使用模块的设计方法,一个一个实现功能,能够说假如完成了一个任务的程序框图,在本次课程设计的过程中,我都是使用这种思想进行数字电子钟的设计的。因此,在设计的过程,让我能够很轻易的就抓住了要紧的设计核心。整体的设计框图如图2所示。图2整体设计流程图图3Led显示程序设计流程图
20、4仿真测试及结果3.2 设计结论及使用说明(1)设计结论通过对单片机进行外接键盘与LED数码管的操作与加上硬件电路与软件的结合,实现了该数字电钟显示P.与时分秒的显示,同时还可实现对该电子钟进行调整的功能。通过测试与仿真与修改,该电子钟最终能正常的工作。(2)使用说明该数字电子钟使用八位数码管能实现时分秒的显示。当电子钟一上电即可显示P.,设置数字钟的初始时间为O时O分。秒.用四个按键实现电子钟的显示与调整的功能,分别为KO,Kl,K2,K3,其中KO键为开启键,且显示的是时分秒,开启之后Kl键可实现切换的功能,即可实现时分秒的切换显示;按K2键可实现对时进行增大的调整,每按一下时的值就加一;
21、K2可实现对时进行减小的调整,每按一下时的值就减一。当对时分秒都调整完之后,再按一下KO键即可跳出调整的状态.3.3 仿真结果4. 2.1仿确实结果图4上电或者复位后数码管显示4.3误差分析本数字电子钟在跟标准的电子钟比较时,时间略微慢一点,产生此种情况的原因有:其一是在执行程序指令时,由于需要耗费一定的时间,因此会比标准的电子钟要慢一点。其二是晶振不够标准,使得定时器定时时不够精准。4. 4设计体会在本次数字电子钟的设计过程中,有许多感触,首先对汇编这门语言,我觉得这是一门逻辑性很强的语言,但同时也是一门比较容易掌握的语言。这门语言与我们的实际联系很机密,比如说里面很多传送指令,都是根据实际
22、存在的硬件而存在的,还有你面的与或者指令、乘法、除法指令,事实上都是与我们从小就学的数学息息有关的。就汇编语言而言,关于同一种效果能够使用不一致的汇编指令完成,也能够使用相同的汇编指令完成,但由于你所选用的方案不一致使得所产生的效果也就是完全不一致的,因此这也锻炼了我们在思考同一个问题,假如能够使用发散思维的话,往往会得到意想不到的结果。谈完基本的工具之后,我要谈的就是这次的主题,电子钟能够说是我们非常熟悉的东西,但是没有学单片机这门功课时,谁也不可能想它是怎么工作的,又是怎么做成的。在我自己动手完成了这次课程设计之后,我才发现事实上在我们身边有好多东西是要我们自己去研究的,假如只在原地踏步的
23、话,就会落后,随着社会的不断进步,我们身边的东西越来越高科技话,那么要我们学习的东西也就越来越多。我觉得在这次设计过程中,我学到了很多,不仅仅是对汇编语言有了自己的办法,更重要的是培养了一种用于面对问题,解决问题的精神,在我们以后走向社会的道路上还不明白会遇到多少问题,假如有了这种精神的话,我相信不管多么困难的问题,都会迎刃而解的。5. 5教学建议关于单片机这门功课,首先我觉得王老师使用“培养动手”这种的观念是非常好,单片机技术本身就是一门技术性的学科,假如只是学些理论知识,而不去进行一些实质性的操作的话无疑是纸上谈兵,最终还是学不到什么东西。因此我觉得要使大家能够喜欢动手,首先还是要使大家对
24、单片机产生一点兴趣,因此在开始的学习时,不能让大家学起来就好像有一座大山摆在前面,让人有一种不敢往前越的感受。学习了这么多年,我深深的体会到了一点就是假如老师能够使用换位的思想进行教学的话,会使得教学更加容易。比如有些老师在教学时使用囱囹吞枣式的讲述,该重点讲述的不能讲清晰,而就那些抽象的东西讲来讲去,这是很多学生所不能同意的。当然要把一个问题完完全全的讲述清晰是要花费很多时间的,那么短短的一堂课又能讲几个问题呢?我觉得关于一个经典的问题假如能够让大家完完全全弄懂是很有收获的。也就是说并不是说每一个问题都要给大家讲清晰的,只要把那些经典的问题讲清晰,然后进行一下拓展的话,这将是一笔巨大的收获。
25、讲了这么多还是要回到单片机技术中的“技术”两个字上来,我觉得现在的大学生学习东西之后,不明白学了这个东西应该去干什么。就这一门课,首先它是一门技术,因此是应用到我们的实际生活中去的,而关于我们学习自动化的学生,又具体到了哪一方面呢?假如能够让大家明白学习这门技术之后的走向,能够使得大家学习得更有目的性。在这里我觉得王老师的教学还是比较有目的性的,而且给我们布置任务的要求也写得很清晰,这就使得我们能够更好更准确的完成所布置的任务。总之,我觉得更重要是理论与实际的结合,更况且是一门技术性的学科,就更加离不开实践。以认知应用开发过程为先导,先动手实践、再理论学习、以一个完整的单片机应用电路来打开单片
26、机的学习之门。号召同学们购买实验板,强化单片机训练,在我们的日常作业多做一些动手的作业时很有好处的,像对PrOte1、KeikProtues软件的操作时非常必要的。只是我觉得在这些实际作业中也不要限制大家的思维,这样更有利用大家对软件的操作空间,也就更加能够提高大家对软件的掌握能力。关于我们这一代人创新的能力能够说几乎是看不到的,这要紧是我们从小就被固定化,不管什么东西都是要按照一个固定的模块来进行,尽管说这样能够是大家少走弯路,但是这就使得思维固定化了。本人语言能力有限,就只能讲这么多了,希望王老师以后的工作顺顺利利。参考文献1唐俊瞿,许雷,张群瞻.单片机原理与应用M.北京:冶金工业出版社,
27、2003TangJunju,permitsthethunder,ZhangQunzhan.ThemonolithicintegratedcircuitprinciplewithappliestheM.Beijing:MetalIurgicalindustrypublishinghouse,20032李广弟,朱月秀,冷祖祁.单片机基础M.北京:北京航空航天大学出版社,20071.iGuangdi,ZhuYueXiu,LengZuqi.MonolithicintegratedcircuitfoundationM.BeijingiBeijingUniversityofAeronauticsandAs
28、tronauticsPublishinghouse,20073李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社,2004.91.iGuangfei.ThemonolithicintegratedcircuitcurriculumdesignstheexampletoinstructtheM.Beijing:BeijingUniversityofAeronauticsandAstronauticsPublishinghouse,2004.94张洪润,兰清华.单片机应用技术教程M.北京:清华大学出版社,1997.11ZhangHongRun,blueQinghua.Monolithi
29、cintegratedcircuitapplicationtechnologycourseM.Beijing:QinghuaUniversitypublishinghouse,1997.115李华.MCS-51系列单片机有用接口技术M.北京:北京航空航天大学出版社,19931.iHua.MCS_51seriesmonolithicintegratedcircuitpracticalconnectiontechnologyM.BeijingrBeijingUniversityofAeronauticsandAstronauticsPublishinghouse,1993本课题在选题及进行过程中得
30、到王韧老师的悉心指导。论文行文过程中,王老师多次帮助我分析思路,开拓视角。王老师严谨求实的治学态度,踏实坚韧的工作精神,将使我终生受益。再多华丽的言语也显苍白,在此,谨向王老师致以诚挚的谢意与崇高的敬意。在这次课程设计的撰写过程中,我得到了许多人的帮助,首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持与帮助,在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了很多我不太明白的设计上的难题。最后再一次感谢所有在设计中曾经帮助过我的良师益友与同学。1电路原理图二:s:二:艮JLLLLLLLLT学匕MHk=W男7总Jl
31、uwur3KUgCS-三三JvedISN)洋工声苑常M事ABm第gw三3as三三三三三三三?三h02S2S11三三53三三三三2三WEfflfflgSyS2SS三38二夕e夕仓”务一二二HBBEJLUULLL碧.“34514核-m:cII:工9肾三5s2CAD原理图图9元器件分布C322UF(=)JX2m1.ED2JC51JPI-C0N8PRP2IOKC0N2ItiJpfIJGNDC0N28N0earuZZXTWOlNlIlNlIl3,自lNNPo口口13ooozOJL8s9XZXOJL图8PCB元器件布局图10PCB顶层图表C元器件清单名称数量参数单片机1个AT89S52共阳数码管2个4位一
32、体晶振1个12MHz发光二极管9个芯片插座1个20DIP芯片插座1个40DIP蜂鸣器1个按键9个排阻2个IOK下载口座子1个十芯六脚按键开关1个USB电源线加接口1个电阻1个200电阻3个IK电阻8个470电解电容2个22f瓷片电容2个33p短路帽3个PCB板子1块电源白色插座1个杜邦线8个铜柱(带螺母)4个集成芯片1个74HC573排阻1个470短路帽3个5程序清单/*程序名:数字电子钟编写者:陈文坚时间:2013.12.22功能:显示系统提示符“P.在系统提示符状态下,只有按启动键/停止键才能开启电子钟,电子钟进入运行状态;再次按下启动键/停止键,电子钟进入调整状态,如今,调时、调分、调秒
33、键才能够工作。调整结束后,按下启动键/停止键,使用说明:将单片机的P2口用排线连于J31即731s573位选(P20对110),PO口连于J32即数码管段选(Poo对Oil)pl口接独立键盘(Plo对s2)/函数名:voiddelayms(uintx)功能:延时时间为IrnS说明:总共延时时间为InlS乘以xms,crystal=12Mhz/*/函数名:voiddisplay0功能:8个共阳数码管动态扫描显示说明:数码管显示函数ttincludettdefineucharunsignedcharttdefineuintunsignedintucharcodedk,table=OXCOl0XF9
34、,0XA4,OXBO,0X99,0X92,0X82,0XF8,0X80,0X90,0X8C,OXFF,OXOC,OXBF;段控数组灭P.0至9ucharcodewk_table=0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80;/位控数组ucharfind_code8,num,H;显示缓冲数组ucharm,ml,m2,m3,m4,m5,m6,m7,shi,feng,miao,s;chargn;voiddelayms(uintx)延时子函数亳秒级WhiIe(X-)/毫秒循环uchari;for(i=125;i0;i);/一个FOR完成的时间接近1毫秒)voiddis
35、play()数码管显示函数(uchara;for(a=0;a8;a+)P2=wk_tablea;PO=OXff;消影PO=dk_tablefind_codea;delayms(l);m7=shi10;m6=shi%10;m4=feng10;m3=feng%10;ml=miao10;m0=miao%10;)voidset_find(m,ml,m2,m3,m4,m5,m6,m7)(findcode0=m0;findcodel=ml;find_code2=112;findcode3=m3;findcodc4=m4;find_code5=m5;find_code6=m6;findcode7=m7;*函
36、数原型:keychuli();*功能:处理与键盘相连的Pl口的内容,作为键值。ucharkeychuli()uchark;k=Pl;/Pl口内容送Kk=k;取反return(k);返回键值* 函数原型:key();* 功能:键盘扫描函数,函数返回值即键值。ucharkey()ucharkeyzhi,keyzhii;keyzhi=keychuli();if(keyzhi!=0)display();displayO;键盘按键键值临时存放调Pl处理函数有键动作延时去抖动,否则函数返回keyzhi=keychuli();/再次调Pl口处理函数if(keyzhi!=O)真正有键按下,取键值并暂存keyz
37、hii=keyzhi;while(keyzhi!=0)判按键是否释放,没有释放延时去抖动等待释放displayO;displayO;keyzhi=keychuli();)keyzhi=keyzhii;/按键释放后恢复按键键值)return(keyzhi);返回按键键值voidzd()装初值函数(TMOd-OXOI;THO=(65536-50000)/256;TLO=(65536-50000)%256;EA=I;ETO=I;TRO=I;voidmain()(while(l)set_find(12,11,11,11,11,11,11,11);display();H=keyO;if(H=I)(zd(
38、);whiIe(I)(set_find(m,ml,13,m3,m4,13,m6,m7);display();H=keyO;if(H=I)EA=EA;中断总开关)if(H=2&EAr0)功能选择s+;if(s=4)(s=l;)if(s=l)(gn=miao;if(s=2)(gn=feng;)if(s=3)(gn=shi;if(H=4&EA=0)(gn+;if(s=l)(if(gn=60)gn=0;)miao=gn;)if(s=2)if(gn=60)gn=0;)feng=gn;)if(s=3)if(gn=24)gn=O;)shi=gn;)if(H=8&EA=0)(gn;if(s=l)if(gnO)
39、gn=59;mao=gn;if(s=2)if(gnO)gn=59feng=gn;if(s=3)if(gn0)gn=23;)voidTOtimc()interrupt1(THO=(65536-50000)/256;TLO=(65536-50000)%256;num+;if(num-20)num=0;miao+;if(miao=60)(miao=0;feng+;if(feng=60)feng=0;shi+;if(shi=24)(shi=O;)m7=shi10;m6=shi%10;m4=feng10;m3=feng%10;ml=miao10;m0-miao%10;setfind(m,ml,13,m3,m4,13,m6,m7);