基于51单片机电子闹钟的设计_第1页
基于51单片机电子闹钟的设计_第2页
基于51单片机电子闹钟的设计_第3页
基于51单片机电子闹钟的设计_第4页
基于51单片机电子闹钟的设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、前前 言言20 世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高。同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间。所以有必要制作一个定时系统。随时提醒这些容易忘记时间的人。 而钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

2、诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等等。所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。随着生活水平的提高,人们越来越追求人性化的事物。传统的时钟已不能满足人们的需求。而现代的时钟不仅需要模拟电路技术和数字电路技术而且更需要单片机技术,增加数字钟的功能。利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,减小因元器件精度不够引起的误差,但是数字钟还是可以改进和提高如选用更精密的元器件。但与机械式时钟相比已经具有更高的准确性和直观性,且无机械装置,具有

3、更长的使用寿命,因此得到了广泛的使用。数字钟通过数字电路实现时、分、秒。数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。多功能数字钟的应用非常普遍。由单片机作为数字钟的核心控制器,通过它的时钟信号进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行校时、定时等功能。输出设备显示器可以用液晶显示技术和数码管来显示技术。 本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机 AT89C51为核心元件同时采用 LED 数码管显示器

4、动态显示“时” 、 “分” 、 “秒”的现代计时装置。另外具有校时功能,秒表功能,和定时器功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。目目 录录前前 言言 .1 1摘摘 要要 .I IABSTRACTABSTRACT .IIII第第 1 1 章章 课题的背景课题的背景 .1 11.1 课题的来源 .11.2 课题研究的目的和意义 .11.3 应解决的主要问题及达到的技术要求.1第第 2 2 章章 方案的选择和论证方案的选择和论证 .2 22.1 单片机型号的选择 .22.2 按键的选择 .22.3 显示器的选择 .22.4 计时部分的选择 .22.5 发音部分的设计 .3

5、2.6 显示器驱动电路 .32.7 电源的选择 .3第第 3 3 章章 数字电子钟的设计原理和方法数字电子钟的设计原理和方法 .4 43.1 设计原理 .43.2 硬件电路的设计 .43.2.1 AT89C51 单片机简介.43.2.2 键盘电路的设计 .43.2.3 段码驱动电路 .53.2.4 蜂鸣器驱动电路 .53.3 软件部分的设计 .63.3.1 主程序部分的设计 .63.3.2 中断定时器的设置 .63.3.3 闹钟子函数 .73.3.4 计时函数 .73.3.4 键盘扫描函数 .93.3.5 时间和闹钟的设置 .9第第 4 4 章章 实验结果实验结果 .1111总总 结结 .12

6、12致致 谢谢 .1313参考文献参考文献 .1414附附 录录 .1515摘摘 要要单片机自 20 世纪 70 年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而 51 单片机是各单片机中最为典型和最有代表性的一种。本设计以 AT89C51 芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟,它由 5V 直流电源供电。在硬件方面,除了 CPU 外,使用八个七段 LED 数码管来进行显示,LED 采用的是动态扫描显示,使用 74LS245 芯片进行驱动。通过 LED 能够较为准确地显示时、分、秒。四个简单的按键实现对时间的调整。软件方面采用 C

7、 语言编程。整个电子钟系统能完成时间的显示、调时、校时和三组定时闹钟的功能。选用单片机最小系统应用程序,添加比较程序、时间调整程序及蜂鸣程序,通过时间比较程序触发蜂鸣,实现闹钟功能,完成设计所需求的软件环境。介绍并使用Keil 单片机模拟调试软件,测试程序的可行性并用 Proteus 进行仿真。关键词:关键词:单片机,定时器,中断,闹钟,LEDABSTRACTBecause of its extremely high performance-price ratio, the single-chip computer (SCC) has been paid great attention to

8、ever since it came out in 1970s of 20th Century, and has gained an extensive applicable field and fast development. Among all kinds of SCCS, 51 SCC is the most typical and representative one. This design, adopting AT89C51 chip as the core part with some necessary peripheral circuits, is a simple ele

9、ctronic clock which uses 5V DC as the power supply. In hardware aspect, besides the CPU, eight seven-segment LED digi-tubes are used for display, which work in a dynamically scanning display mode and driven by 74SL245 chip. The LEDS can accurately indicate hour 、 minute and second. Four buttons can

10、be used to adjust the time. While in the software aspect, the programming language is C language. The whole electronic clock system has functions of time display, adjustment 、timing and three groups of alarm function. Choose the smallest SCM system applications,add Comparison procedures, time to adj

11、ust procedures and faint buzzing procedures, Through relatively faint buzzing trigger procedures to achieve alarm clock function, Completed the design needs of the software environment. Keil introduced and the use of SCM software simulation debugging, testing the feasibility and proteus by simulatio

12、n.Keyword: single slice machine,in fixed time machine,break off,alarm clock,LED0第第 1 章章 课题的背景课题的背景1.1 课题的来源课题的来源随着生活水平的提高,人们越来越追求人性化的事物,传统的时钟已不能满足人们的需求。现代的时钟不仅需要模拟电路技术而且需要数字电路技术和单片机技术,增加时钟的功能。数字电子钟可利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,减小因元器件精度不够引起的误差;尽管如此数字钟还是可以改进和提高,比如选用更精密的元器件。但与机械式时钟相比已经具有更高的准确性和直观性,

13、且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。1.2 课题研究的目的和意义课题研究的目的和意义20 世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间等造成的。而钟表的数字化给人们生产生活带来了极大的

14、方便。数字钟是通过数字电路实现时,分,秒数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烤箱、通断动力设备、甚至各种定时电气的自动启用等。所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。1.3 应解决的主要问题及达到的技术要求应解决的主要问题及达到的技术要求本设

15、计应解决的主要问题有两大方面,即硬件电路设计和软件设计两大方面。其中硬件电路部分又可分为四个模块:键盘模块、显示模块、计时模块和发声模块。硬件电路部分致力于低成本、低功耗和易实现性。软件部分则应做到代码的精简、准确、易读懂。最后通过硬软件的结合实现数字钟的精确计时、校时、三组闹钟设置和定时报警功能。1第第 2 章章 方案的选择和方案的选择和论证论证2.1 单片机型号的选择单片机型号的选择通过对多种单片机性能的分析,最终认为 AT89C51 是最理想的电子时钟开发芯片。AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器的低电压,高性能 CMOS8 位微处理器,器件采用 ATMEL 高

16、密度非易失存储器制造技术制造,与工业标准的 MCS-51指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,而且它与 MCS-51 兼容,且具有 4K 字节可编程序存储器和 1000 次擦写循环,数据保留时间为 10 年,是最好的选择。2.2 按键的选择按键的选择方案一:44 矩阵式键盘。如果选择此方案,那么在修改时钟或设置闹铃时间时就可以直接从键盘输入,方便、快捷,但程序较为复杂。 方案二:独立式按键。如果设置过多按键,将会占用较多 I/O 口,而且会给布线带来不便,因此,此方案适用于按键较少的情况。如果选择

17、此方案,由于按键较少,在修改时间或设置闹铃时间时就不能直接输入,只能通过加或减完成,稍为麻烦一些,但其程序简单。 由于并不需要经常修改时间和设置闹铃时间,而且方案二的程序简单,按键少、成本低,因此,选择方案二。2.3 显示器的选择显示器的选择方案一:液晶显示器。如果选择此方案,将会降低系统的功耗,这样就可以用电池供电,便于携带。但液晶显示器的驱动电路复杂,使用起来有一定的难度。 方案二:用数码管作为显示器。数码管的驱动电路简单,使用方便,如果选择了此方案,那么在夜间看时间的时候就不需要有光源,非常方便。其缺点是功耗较大。由于数码管使用起来较为方便,在夜间看时间也很方便,因此我选择了方案二。2.

18、4 计时部分的计时部分的选择选择如果使用时钟芯片,系统就不怕掉电且时间精确。但这种芯片比较贵,况且,设计本系统主要是为了学习单片机程序的编写和调试以及设计硬件电路的一些方法,因此采用软件的方法来计时而没有采用价格较高的时钟芯片。22.5 发音部分的设计发音部分的设计通过三极管放大后驱动蜂鸣器工作,再通过软件这时产生等时时间方波驱动蜂鸣器发出间断嘀声,这样就可以省去硬件振荡电路,降低成本。2.6 显示器驱动电路显示器驱动电路由于通过数码管公共及的电流较大且避免过多地使用分立元件,采用了一片74LS245 来驱动段码,用 P3 口作位码驱动。2.7 电源的选择电源的选择如果是用电池供电,就比较方便

19、携带,但是本系统,采用了数码管作为显示器,功耗较大,需要经常更换电池。况且,本系统的体积较大,即使使用电池供电也不能随身携带,因此,用电池供电不大合适,所以用 5V 外部稳压电源来供电。3第第 3 章章 数字电子钟的设计原理和方法数字电子钟的设计原理和方法3.1 设计原理设计原理 系统原理图图 3-1 系统原理图3.2 硬件电路的设计硬件电路的设计3.2.1 AT89C51 单片机简介单片机简介AT89C51 是一款单片封装的微控制器,适合于许多要求高集成度、低成本的场合。可以满足多方面的性能要求。AT89C51 采用了高性能的处理器结构,指令执行时间只需 2 到 4 个时钟周期。6 倍于标准

20、 51 单片机器件。AT89C51 集成了许多系统级的功能,这样可大大减少元件的数目和电路板面积并降低系统的成本。AT89C51 单片机内部主要有以下部件:8031CPU、振荡电路、总线控制部件、中断控制部件、片内 Flash 存储器、并行 I/O 接口、定时器和串行 I/O 接口。图 3-2 AT89C51 单片机4 3.2.2 键盘电路的设计键盘电路的设计 键盘采用 4 个独立按键配以 4 个上拉电阻实现对时钟和闹钟的设定及修改。 图 3-3 独立按键 图 3-4 键盘输入电路3.2.3 段码驱动电路段码驱动电路由于通过数码管公共及的电流较大且避免过多地使用分立元件,采用了一片74LS24

21、5 来驱动段码,用 P3 口作位码驱动。图 3-5 段码驱动器 74LS2453.2.4 蜂鸣器驱动电路蜂鸣器驱动电路发音部分是通过三极管放大驱动蜂鸣器工作,再通过软件这时产生等时时间方波驱动蜂鸣器发出间断嘀声,这样就可以省去硬件振荡电路,降低成本。图 3-6 蜂鸣器驱动电路53.3 软件部分的设计软件部分的设计3.3.1 主程序部分的设计主程序部分的设计程序部分主要采用了程序结构的模块化设计,避免了一些函数的不必要的重复书写,使程序变得单间易懂。程序在执行时,主程序要须通过调用子函数就可完成相应的功能 。主程序流程图如下图 3-7。图 3-7 主程序流程图3.3.2 中断定时器的设置中断定时

22、器的设置数字电子钟设计中主要使用定时器 T0 中断 ET0,利用 ET0 中断进行计时时间的自增,从而实现计时功能。AT89C51 有两个通用定时/计数器。两者均可配置为定时器或事件计数器。另外增加了定时器 T0/T1,溢出时 T0/T1 脚自动翻转的功能选项。 用作“定时器”功能时,每经过一个机器周期,寄存器值加 1。 用作“计数器”功能时,寄存器在对应的外部输入管脚 T0/T1 上每发生一次 1 到 0 的跳变时加 1。使用该功能时,外部输入每个机器周期被采样一次。 图 3-8 定时器工作原理16设计中采用了中断方式 1 作为定时中断,其定时计数初值的设置可由以下公式计算得到,中断服务流程

23、图如下图 3-9。X:计数初值 t:定时时间 :机器周期 1cyT图 3-9 中断服务流程图3.3.3 闹钟子函数闹钟子函数闹钟时间的判别主要是通过设定时间与实时时间对逐位对比确定是否进行闹铃。其工作流程图如下图 3-10。图 3-10 闹铃判断流程图cyTtX16273.3.4 计时函数计时函数计时函数部分,主要是通过单片机定时中断来计时,复产生一次中断标志位 flag加 1,当 flag 加满 20 次为 1 秒,然后把 flag 清 0 把秒存储单元加 1。然后再依次判断分、时。其流程图如下图 3-11。图 3-11 计时流程图83.3.4 键盘扫描函数键盘扫描函数这些函数主要是判断是否

24、有按键按下,并根据相应按键按下的情况调用相关函数执行,其相关流程图如下图 3-12。图 3-12 键盘扫描流程图3.3.5 时间和闹钟的设置时间和闹钟的设置此部分主要是通过判断 cnt 在不同值时通过调用加 1、减 1 子函数对时间和闹钟的时、分、秒进行设置。在闹钟设置时,判断按键 S4 按下情况我,进行闹钟的开启与关闭,相关流程图如下图 3-13。图 3-13 时间/闹钟设置流程图9第第 4 章章 实验结果实验结果此电子闹钟设计是利用 Proteus 仿真软件进行仿真,基本上实现了课程设计要求实现的功能。硬件部分设置了的三个按键 S1、S2、S3、S4。当按键 S1 第一次按下时,停止计时进

25、入闹钟 1 的秒设置,当按键 S1 第二、第三次按下时,分别进入闹钟 1 的分设置和时设置,当按 S1 第四 、第五、第六次按下时分别进入闹钟 2 的秒、分、时设置,当按 S1 第七 、第八、第九次按下时分别进入闹钟 3 的秒、分、时设置,当按 S1 第十 、第二一、第十二次按下时分别进入时间的秒、分、时设置,在 S1 按下的各阶段,可用按键 S2、S3 进行时间和闹铃时间的时、分、秒进行加减设置;当按键 S1 第十三次按下时恢复到时间显示功能。当显示的时间和定时设置的时间一致时,蜂鸣器发出等时间断蜂鸣声,闹铃时间设置为 60 秒。在各个闹钟设置阶段,如果有 S4 按下,则相应闹钟功能关闭或开

26、启;如在闹铃时有 S4 按下则提前停止闹铃。另外,闹铃电路有音乐闹钟的扩展的功能(可以将蜂鸣器换成扬声器再加一段音乐程序即可实现)。因时间有限,扩展功能还未能及时实现,比如音乐闹铃。图 3-14 运行仿真图10总总 结结通过自己的不懈努力,我终于完成了毕业设计任务书上的任务要求。功能上基本达标:时钟的显示,调时功能、校时功能、闹铃功能、闹钟设功能。其精确度完全可以满足日常生活显示时间的需要;调时功能,方便快捷;校时功能保证了时钟准确和可靠性,闹钟响铃还有扩展成音乐闹钟的余地。硬件设施合乎要求,软件设计可以配合硬件实现要求的功能。但是由于时间比较短,前期设计出现部分不足:如位选闪烁功能不能实现、

27、闹钟的开启与关闭、间断蜂鸣声等。这些只是软件设计时相应功能部分还不完善造成。不过经仔细思考和程序的完善,最终将软件设计改进,并完全可以很好实现所有要求的功能。可见技术在不断进步,机械式时钟已经被淘汰,取而代之的是具有高度准确性和直观性且无机械装置,具有更长的使用寿命等优点的数字时钟。数字时钟更具人性化,更能提高人们的生活质量,更受人们欢迎。 无可否认机械时代已经过去,电子时代已经到来。做为新时代的我们,更应该提高自身能力,适应新时代的发展。知识来自实践,多去生活中探询所需要的。对于上述所提到的研究课题,我们应尽量考虑到人的因素,增强时钟的实用性和操作性,为使用者提供切实的方便,营造一种舒适的生

28、活氛围。所以,在设计的时候,应该从多方面、多角度去考虑问题,而且应该进一步提高时钟的质量。另外,在本次设计的过程中,我发现很多的问题,虽然以前没有做过这样的设计但通过这次设计我学会了很多东西,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,比如写一个程序看其功能很少认为编写程序简单,但到编程的时候才发现一些细微的知识或低级错误经常犯做不到最后常常失败,所以有些东西只有学精弄懂并且要细心才行,只学习理论有些东西是很难理解的,更谈不上掌握。从这次的课程设计中,我们真真正正的意识到,在以后的学习中,要理论联系实际,把我们所

29、学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的练习的过程中才能提高,我想这就是我在这次课程设计中的最大收获。11致致 谢谢经过几个月的实习调查收集数据资料、整理材料、写作论文,我终于可以顺利的完成论文了。 首先要感谢我的指导老师陈老师,他指引我论文的写作的方向和架构,并对本文初稿进行仔细批阅,指正出其中不当之处,使我有了思考的方向,他的循循善诱的教导和不拘一格的思路给予我无尽的启迪,他的严谨细致、一丝不苟的作风,将一直是我工作、学习中的榜样。通过此次的论文,我学到了很多知识,在论文的写作过程中,我不仅收集到了论文所需的资料数据,而且学到了很多书本上没有的知识。并且由原先的被动

30、的接受知识转换为主动的寻求知识,我想这可以说是学习方法上的一个很大的突破。 在论文的写作过程中也学到了做任何事情所要有的态度和心态,首先做学问要一丝不苟,对于发展过程中出现的任何问题和偏差都不要轻视,要通过正确的途径去解决,在做事情的过程中要有耐心和毅力,不要一遇到困难就打退堂鼓,只要坚持下去就可以找到思路去解决问题的。总之,此次论文的写作过程,我收获了很多,为大学四年划上了一个完美的句号,也为将来的人生之路做一个很好的铺垫。 再次感谢我的大学和所有帮助过我并给我鼓励的老师和同学,谢谢你们! 2010 年 6 月 12参参考文献考文献1李全利、 迟荣强,单片机原理及接口技术M,北京:高等教育出

31、版社,20042凌玉华,单片机原理及应用系统设计M,长沙:中南大学出版社,20063张毅刚,MCS-51 单片机应用设计M,哈尔宾:哈尔宾工业大学出版社,1997 4胡汉才,单片机原理及应用M,北京:清华大学出版社,20045何立明,单片机应用系统设计M,北京:北京航空航天大学出版社,19906王荣良,计算机接口技术M,北京:电子工业出版社,20037陈光东,单片机微型计算机原理与接口技术M,武汉:华中理工大学出版社,19988王幸之、钟爱琴、王雷、王闪,AT89 系列单片机原理与接口技术M,北京:北京航空航天大学出版社,20049张道德,单片机接口技术(C51 版)M,北京:中国水利水电出版

32、社,200710王为青、程国钢,单片机 Keil CX51 应用开发技术M,北京:人民邮电出版社,200711张靖武、周灵彬,单片机系统的 Proteus 设计与仿真M,北京:电子工业出版社,200712ATMEL. 8-bit Microcontroller with 4K Bytes Flash AT89C51.200013ATMEL.8-bit Microcontroller with 32K Bytes Flash AT89C51RC.200013附 录相关的程序代码:相关的程序代码:/*头文件*#include #include/*宏定义*#define uchar unsigned

33、 char #define uint unsigned int/*位声明*sbit key1=P10; sbit key2=P11;sbit key3=P12;sbit key4=P13;sbit fmq=P21;/*数码管显示的数值*uchar code table=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,/ 0 1 2 3 4 5 0 x82,0 xf8,0 x80,0 x90,0 xbf,0 x0ff; / 6 7 8 9 - 灭 /*函数声明*void jia(); void jian(); /*数组定义,数组内含有 8 个数值*uchar table1

34、8,table28,table38,table48;/*时间显示初始值*uchar shi=12,fen=0,miao=0; /*定义全局变量*uchar shi1,fen1,miao1,shi2,fen2,miao2,shi3,fen3,miao3;uchar shi4,fen4,miao4;14uchar flag, flag1, wss, cnt, cnt1, alm1, alm2, alm3;/ 1 秒 等时 位闪 次数 校时 闹 1 闹 2 闹 3uint flag2;/ 蜂鸣 /*延时函数,用于动态扫描数码管*void delay(uchar i) uchar x,y; for(x

35、=i;x0;x-) for(y=120;y0;y-); /*初始化函数*void init() TMOD=0 x01; /工作方式 1 TH0=0 x3c; /定时时间为:50ms(65536-50000)/256 TL0=0 x0b0; /(65536-50000)%256 ET0=1; /打开定时器 EA=1; /开总中断 TR0=1; /启动定时器 /*显示子函数,用于显示时间数值*void display() uchar i,j; if(cnt!=10|wss=0) table10=miao%10; /分离秒的个位与十位 table11=miao/10; else table10=ta

36、ble11=11;if(cnt!=11|wss=0) table13=fen%10; /分离分的个位与十位 table14=fen/10; 15else table13=table14=11;if(cnt!=12|wss=0) table16=shi%10; /分离时的个位与十位 table17=shi/10; else table16=table17=11; table12=table15=10; j=0 x7f; for(i=0;i=7;i+) /从秒到时的扫描 P3=j; P0=tabletable1i; /显示数值 delay(10); j=_cror_(j,1); /循环右移 /*显

37、示子函数,用于显示定时 1 时间*void display1() uchar i,j; if(alm1=0) if(cnt!=1|wss=0) table20=miao1%10; /以下含义同上 table21=miao1/10; else table20=table21=11; if(cnt!=2|wss=0) table23=fen1%10; table24=fen1/10; else16 table23=table24=11; if(cnt!=3|wss=0) table26=shi1%10; table27=shi1/10; else table26=table27=11; else

38、table20=table21=table23=table24=table26=table27=10; table22= table25=10; j=0 x7f; for(i=0;i=7;i+) P3=j; P0=tabletable2i;delay(10); j=_cror_(j,1); /*显示子函数,用于显示定时 2 时间*void display2() uchar i,j; if(alm2=0) if(cnt!=4|wss=0) table30=miao2%10; /以下含义同上 table31=miao2/10; else table30=table31=11; if(cnt!=5|

39、wss=0) table33=fen2%10; table34=fen2/10;17 else table33=table34=11;if(cnt!=6|wss=0) table36=shi2%10; table37=shi2/10; else table36=table37=11; else table30=table31=table33=table34=table36=table37=10; table32= table35=10; j=0 x7f; for(i=0;i=7;i+) P3=j; P0=tabletable3i;delay(10); j=_cror_(j,1); /*显示子函

40、数,用于显示定时 3 时间数值*/void display3() uchar i,j; if(alm3=0) if(cnt!=7|wss=0) table40=miao3%10; /分离秒的个位与十位 table41=miao3/10; else table40=table41=11;if(cnt!=8|wss=0)18 table43=fen3%10; /分离分的个位与十位 table44=fen3/10;else table43=table44=11;if(cnt!=9|wss=0) table46=shi3%10; /分离时的个位与十位 table47=shi3/10;else tabl

41、e46=table47=11; else table40=table41=table43=table44=table46=table47=10; table42= table45=10; j=0 x7f; /从秒到时的扫描 for(i=0;i=20) /判断是否到一秒 wss=wss; flag=0; /到了,则标志位清零 if(cnt1!=0) miao4+; /秒加 1 if( miao459) /判断秒是否到 60s miao4=0; /到了,则清零19 fen4+; /分加 1 if(fen459) /以下含义同上 fen4=0; shi4+; if(shi423) shi4=0; e

42、lse miao+; /秒加 1 if( miao59) /判断秒是否到 60s miao=0; /到了,则清零 fen+; /分加 1 if(fen59) /以下含义同上 fen=0; shi+; if(shi23) shi=0; /*键盘扫描子函数*/void key_scan() if(key1=0) while(!key1) /防止掉显 if(cnt=1|cnt=2|cnt=3) display1(); if(cnt=4|cnt=5|cnt=6)20 display2(); if(cnt=7|cnt=8|cnt=9) display3(); if(cnt=0|cnt=10|cnt=11

43、|cnt=12|cnt=13) display(); cnt+; /记下按键 key1 按下的次数 if(cnt=10&cnt1=0) miao4=miao; fen4=fen;shi4=shi;cnt1+;if(cnt=13) cnt=0; if(cnt1=1) miao=miao4; fen=fen4; shi=shi4; cnt1=0; if(key2=0) /判断 key2 是否按下 while(!key2) /防止掉显 if(cnt=1|cnt=2|cnt=3) display1(); if(cnt=4|cnt=5|cnt=6) display2(); if(cnt=7|cn

44、t=8|cnt=9) display3(); if(cnt=0|cnt=10|cnt=11|cnt=12|cnt=13)21 display(); jia(); if(key3=0) /判断 key3 是否按下 while(!key3) /防止掉显 if(cnt=1|cnt=2|cnt=3) display1(); if(cnt=4|cnt=5|cnt=6) display2(); if(cnt=7|cnt=8|cnt=9) display3(); if(cnt=0|cnt=10|cnt=11|cnt=12|cnt=13) display(); jian(); /调用减 1 子函数 if(ke

45、y4=0) /判断 key4 是否按下 while(!key4) /防止掉 if(cnt=1|cnt=2|cnt=3) alm1=alm1; display1(); if(cnt=4|cnt=5|cnt=6) alm2=alm2; display2(); if(cnt=7|cnt=8|cnt=9) alm3=alm3; display3(); if(cnt=0|cnt=10|cnt=11|cnt=12|cnt=13)22 display(); /*加 1 子函数*void jia() if(cnt=1) /判断 key1 按下的次数是否为 1 miao1+; /是,则秒加 1 if(miao1

46、59) /判断秒是否大于 60,是,则秒清零 miao1=0; if(cnt=2) /以下含意同上 fen1+; if(fen159) fen1=0; if(cnt=3) shi1+; if(shi123) shi1=0; if(cnt=4) miao2+; if(miao259) miao2=0; if(cnt=5) fen2+; if(fen259) fen2=0; if(cnt=6)23 shi2+; if(shi223) shi2=0; if(cnt=7) miao3+; if(miao359) miao3=0; if(cnt=8) fen3+; if(fen359) fen3=0; if(cnt=9) shi3+; if(shi323) shi3=0; if(cnt=10) miao+; if(miao59) miao=0;cnt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论