简易电子钟LED设计说明书论文_第1页
简易电子钟LED设计说明书论文_第2页
简易电子钟LED设计说明书论文_第3页
简易电子钟LED设计说明书论文_第4页
简易电子钟LED设计说明书论文_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

28/28目录绪论2摘要3第1章总体设计方案41.1数字电子钟的电路概述41.2电路的设计方案41.3总体简易设计电路图5第2章系统的硬件设计62.1系统的硬件构成与功能62.2单元电路的分析与设计62.2.1AT89C51单片机与其引脚说明62.2.2晶体振荡器102.2.3LED数码管102.2.474LS373的功能与引脚说明12第3章系统的软件设计153.1软件编程要点153.2项目程序流程图153.2项目的源程序18第4章系统调试274.1常用调试工具274.1.1keil软件274.1.2Proteus软件284.1.3系统调试28第5章总结29附录整机电路图30参考资料31绪论在信息技术急速发展的今天,计算机科学日新月异。而单片机作为计算机科学的一个分支,在微机控制领域得到长足的发展。随着单片机的发展与科学技术的提高,单片机已经成为人类生产生活中不可缺少的工具。现在,单片机的应用已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置、飞机上各种仪表的控制、计算机的网络通讯与数据传输、工业自动化过程的实时控制和数据处理、广泛使用的各种智能IC卡、民用豪华轿车的安全保障系统、录象机、摄象机、全自动洗衣机的控制,以与程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。

单片机要解决的问题多数是仍是老问题,新颖之处是比以前用较少的元件。尤其是设计逻辑关系复杂的控制系统,过去用通用的逻辑门集成电路芯片将需要几十片甚至上百片,而现在只用几片就能够实现,而且方便灵活,做设计修改或改动功能时,只消改写软件原文件重写芯片,免去了在硬件线路上大动干戈的苦差事。减少芯片个数主要是靠单片机的可编程性和高度集成化。使开发周期更短,制造成本更低,用电更省和可靠性更高。要求用各种逻辑门芯片实现的逻辑电路,可以用一片单片机芯片加上相应的控制软件就可以实现。摘要计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。单片机在这种情况下诞生了。截止今日,单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以与我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。单片计算机即单片微型计算机。(Single-ChipMicrocomputer),是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。本文通过对一个基于单片机的能实现定时,秒表,万年历,闹钟等功能的多功能电子时钟的设计学习,详细介绍了单片机应用中的数据转换显示,液晶显示原理,键盘扫描原理,单片机的定时中断原理。从而达到学习、了解单片机相关指令在各方面的应用。系统由AT89S52、温度检测芯片、时钟芯片、液晶显示器、存储器、稳压电源等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示和实时温度显示。也具有日历计算和时钟、日历的校准,定时时间的设定和闹铃等功能。文章后附有电路原理图、PCB板图和程序清单,以供读者参考。因水平有限,难免有疏落不足之处,敬请老师和同学能给与批评指正。关键字:定时秒表闹钟万年历第1章总体设计方案1.1数字电子钟的电路概述数字钟是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和报时功能。因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。干电路系统由秒信号发生器、“时、分、秒”计数器、译码器与显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发现胡一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。译码显示电路将“时”、“分”、“秒”计数器的输出状态菁七段显示译码器译码,通过六位LED七段显示器显示出来。整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整的。1.2电路的设计方案根据功能和指标要求,本系统选用AT89C51单片机为主控机。通过扩展必要的外围接口电路,实现对数字电子钟的设计。具体设计考虑如下:(1)由于此次所要设计的是简单的数字电子钟显示时、分、秒功能,因此需要用LED数码管作为显示器。(2)同时用于调时、分的调时电路分别接引脚P1.1、P1.2。(3)用并行口P0.0-P0.7作为段选码,P2.0-P2.5作为位选码,相应的驱动芯片用74LS373。(4)同时还需晶体振荡电路,复位电路与中断电路。该数字电子钟可以完成以下功能:(1)能准确的显示0~23小时59分59秒;(2)具有方便的校时功能;(3)具有特定作息报时功能;通过将以上电路组合起来实现本次我所要设计完成的简易数字电子钟与其功能。1.3总体简易设计电路图中断电路调时电路单片机AT89C中断电路调时电路单片机AT89C51复位电路晶振电路LED数码显示器74LS373芯片图1-1总体结构框图工作原理:数字钟一般由振荡器、分频器、计数器、译码器、显示器等几部分组成。这些都是数字电路中应用最广的基本电路。石英晶体振荡器产生的时标信号送到分频器,分频电路将时标信号分成每秒一次的方波秒信号。秒信号送入计数器进行计数,并把累计的结果以“时”、“分”、“秒”的数字显示出来。“秒”的显示由两级计数器和译码器组成的六十进制计数电路实现:“分”的显示电路与“秒”一样,“时”的显示由两级计数器和译码器组成的二十四进制计数电路来实现。所有计时结果由六位数码管显示。第2章系统的硬件设计2.1系统的硬件构成与功能根据总体要求分析,数字电子钟的电路系统由秒信号发生器、“时、分、秒”LED数码管显示电路、校时电路、复位电路等组成。秒信号发生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。“时、分、秒”分别通过不同进制的计数器来实现。74LS373将“时、分、秒”的输出状态经LED数码管显示出来。电路是根据计时系统的输出状态产生一脉冲信号。校时电路是用来对“时、分、秒”显示数字进行校对调整的。根据实际情况,硬件的主要单片机为AT89C51芯片,它能够满足数据的采集、控制和数据处理的需求。调试时间时,有相应的调试时、分的按钮。2.2单元电路的分析与设计2.2.1AT89C51单片机与其引脚说明AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51单片机如图2-1:图2-1AT89C51单片机功能特性与引脚说明:AT89C51提供以下标准功能:4K字节FLASH闪速存储器,128字节部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片振荡器与时钟电路。同时,AT89C51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口与中断系统继续工作。掉电方式保存RAM中的容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。1、主电源引脚(2根)(1)VCC:电源输入,接+5V电源;(2)GND:接地线。2、外接晶振引脚(2根)(1)XTAL1:片晶振电路的输入端;(2)XTAL2:片晶振电路的输出端。3、控制引脚(4根)(1)RST/VPP:复位引脚,引脚上出现2个机器周期的高电平将使单片机复位;(2)ALE/PROG:地址所存允许信号。当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器。ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(/PROG)。如有必要,可通过对特殊功能寄存器区中的8EA单元的DO位置位,可禁止ALE操作。该置位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效;(3)PSEN:外部存储器读选通讯信号。当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次/PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的/PSEN信号不出现;(4)EA/VPP:程序存储器的外部选通,接低电平从外部程序存储器读指令,如果接高电平则从部程序存储器读指令。4、可编程输入/输出引脚(32根)AT89C51单片机有4组8为可编程I/O口,分别为P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。每一根引脚都可以编程,比如用来控制电机、交通灯等,开发产品时就是利用这些可编程引脚来实现我们想要的功能。(1)P0口:8位双向I/O口线,名称为P0.0-P0.7,作输入口时,应先软件置“1”。是一组8位漏双向极开路型I/O口,即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8位TTL逻辑门电路,对端口写’1’可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活部上拉电阻。在FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻;(2)P1口:8位准双向I/O口线,名称为P1.0-P1.7,作输入口时,应先软件置“1”。是一个带有部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”(3)P2口:8位准双向I/O口线,名称为P2.0-P2.7,作输入口时,应先软件置“1”。是一个带有部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过部上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为部在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。FLASH编程和程序校验期间,P1接收低8位。在访问外部程序存储器或16位地址的外部地址存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(例如执行MOVXR1指令)时,P2口线上的容(即特殊功能寄存器SFR区中R2寄存器的容),在整个访问期间不改变。FLASH编程和校验时,P2亦接收高位地址和其他控制信号;(4)P3口:8位准双向I/O口线,名称为P3.0-P3.7,作输入口时,应先软件置“1”。是一个带有部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过部上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表2-1所示:表2-1P3口的第二功能端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时/计数器1外部输入)P3.5T1(定时/计数器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。2.2.2晶体振荡器石英晶体振荡器的特点是振荡频率准确、电路结构简单、频率易调整,作用是为系统提供基本的时钟信号。我们在晶体某一方向加一电场,从而在与此垂直的方向产生机械振动,有了机械振动,就会在相应的垂直面上产生电场,从而使机械振动和电场互为因果,这种循环过程一直持续到晶体的机械强度限制时,才达到最后稳定,这种压电谐振的频率即为晶体振荡器的固有频率。振荡器特性,XTAL1和XTAL2分别为反向放大器的输入和输出。该反晶体向放大器可以配置为片振荡器。石晶振荡和瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。在XTAL1和XTAL2引脚上外接定时元件就能构成自激振荡电路。定时元件通常采用石英晶体和电容组成的并联谐振电路。电容器C1和C2主要起频率微调作用。石英晶体振荡器,如下图2-2:图2-2石英晶体振荡器2.2.3LED数码管LED数码管示,如下图2-3:图2-3LED数码管LED数码管的性能特点、简易检测与使用注意事项:1.性能特点(1)能在低电压、小电流条件下驱动发光,能与CMOS、ITL电路兼容;(2)发光响应时间极短(<0.1µs),高频特性好,单色性好,亮度高;(3)体积小,重量轻,抗冲击性能好;(4)寿命长,使用寿命在10万小时以上,甚至可达100万小时。成本低。因此它被广泛用作数字仪器仪表、数控装置、计算机的数显器件。2.性能简易检测

LED数码管外观要求颜色均匀、无局部变色与无气泡等,在业余条件下可用干电池作进一步检查。现以共阴数码管为例介绍检查方法。

将3伏干电池负极引出线固定接触在LED数码管的公共负极端上,电池正极引出线依次移动接触笔画的正极端。这一根引出线接触到某一笔画的正极端时,那一笔画就应显示出来。用这种简单的方法就可检查出数码管是否有断笔(某笔画不能显示),连笔(某些笔画连在一起),并且可相对比较出不同笔划发光的强弱性能。若检查共阳极数码管,只需将电池正负极引出线对调一下,方法同上。LED数码管每笔画工作电流ILED约在5—10mA之间,若电流过大会损坏数码管,因此必须加限流电阻,其阻值可按下式计算:

R限=(U。—ULED)/ILED其中U。为加在LED两端电压,ULED为LED数码管每笔画压降(约2伏)。利用数字万用表的hFE插口能够方便地检查LED数码管的发光情况。选择NPN挡时,C孔带正电,月孔带负电。例如检查LTS547R型共阴极LED数码管时,从E孔插入一根单股细导线,导线引出端接9极(第③脚与第⑧脚在部连通,可任选一个作为Ө);再从C孔引出一根导线依次接触各笔段电极,可分别显示所对应的笔段。

3.使用注意事项(1)检查时若发光暗淡,说明器件已老化,发光效率太低。如果显示的笔段残缺不全,说明数码管已局部损坏。如果数码管表面出现明显裂痕、凹哇或是其它的一些损坏皆不能再使用。(2)对于型号不明、又无管脚排列图的LED数码管,用数字万用表的h距挡可完成下述测试工作:①判定数码管的结构形式(共阴或共阳);②识别管脚;③检查全亮笔段。预先可假定某个电极为公共极,然后根据笔段发光或不发光加以验证。当笔段电极接反或公共极判断错误时,该笔段就不能发光。2.2.474LS373的功能与引脚说明74LS373芯片图2-4:图2-474LS373芯片其功能介绍如下:373为三态输出的八D透明锁存器,共有54/74S373和54/74LS373两种线路结构型式,其主要电器特性的典型值如下(不同厂家具体值有差别):型号tPdPD54S373/74S3737ns525mW54LS373/74LS37317ns120mW373的输出端O0~O7可直接与总线相连。当三态允许控制端OE为低电平时,O0~O7为正常逻辑状态,可用来驱动负载或总线。当OE为高电平时,O0~O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器部的逻辑操作不受影响。当锁存允许端LE为高电平时,O随数据D而变。当LE为低电平时,O被锁存在已建立的数据电平。当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。引出端符号:D0~D7数据输入端OE三态允许控制端(低电平有效)LE锁存允许端O0~O7输出端表2-2真值DnLEOEOnHHLHLHLLXLLQ0XXH高阻态复位电路为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以与晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。复位电路示图,如下图2-5:图2-5复位电路图图中所示为手动电平复位电路,当RESET键按下时,在单片机的复位端将出现一个有300的电阻和1K电阻分压的电平,单片机复位。手动复位用在人们可以进入的机器上,还可以用来紧急停止电路。自动复位用在人们不能进入的机器上。复位必须在所有危险都被清除后发生,通常手动复位更安全。自动复位可以用在人们无法进入的保护通道上。在人们可以进入并紧急停止的保护通道上,只使用手动复位。第3章系统的软件设计3.1软件编程要点LED显示器由8个发光二极管组成。它由7个长条形的发光管排成“日”字形。LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED显示器。此设计采用LED显示采用共阴极的数码管。共阴极和共阳极结构的LED显示器各比划段名和安排位置是一样的。当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。一个时钟的计时累加,要实现分、时的进位,需用到多种进制,秒、分、时钟的进位是十进制,秒向分进位和分向时进位却是六十进制,而每天又是二十四小时制,所以是二十四进制。从秒到分和从分到时的计时是通过累加与数值比较实现的。设置小时单元、分单元、秒单元,分别存放小时、分、秒的数值。数字钟的走时可校准,校准时按下调时开关,这里用单片机AT89C51的 P3.2I/O口外接调时开关确定可以调时,再用P1.3和P1.2两个开关实现时和分钟的校正,每按一次时、分累加1,并进位。调时好后,再将P3.2I/O口的开关按回原处。当时间需要复位时,按下RST接口的复位键,即可复位,重新设置时间。3.2项目程序流程图1.初始化流程图,如下图3-1:

开开始初始化设定时器工作方式开中断、定时器设定时器值外部中断开关初始化定时器图3-1初始化流程图开始开开始开中断消除误差分或时计数单元内容加1计时单元清零调显示程序检测返回3.T0中断服务流程图见图3-4:4.显示程序流程图见图3-5:开始开开始开始调用折函数调用折函数10ms秒单元加110ms秒单元加110ms秒单元=10?10ms秒单元=10?打开段选信号10ms打开段选信号10ms秒单元清零秒单元加1秒单元=60?打开位选信号秒单元=60?打开位选信号秒单元清零,时分单元加1秒单元清零,时分单元加1使第一数码管亮使第一数码管亮分单元=60?分单元=60?P0赋值P0赋值分单元清零,时单元加1分单元清零,时单元加1关闭段选信号关闭段选信号时单元=24?时单元=24?关闭位选信号时单元清零关闭位选信号时单元清零调控制子程序返回调用延时程序返回图3-4T0中断服务流程图图3-5显示程序流程图调控制子程序返回调用延时程序返回3.2项目的源程序系统的源程序如下:源程序:#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitdule=P1^0; //定义段选信号sbitwele=P1^0; //定义位选信号sbitkey_minu=P1^2; //定义调时开关(分钟)sbitkey_hour=P1^3; //定义调时开关(小时)sbitkey=P3^2; //定义外部中断0开关ucharaa; //定义定时器中断控制变量uchartemp_hour; //定义调时开关的暂存变量(分钟)uchartemp_minu; //定义调时快关的暂存变量(小时)uchartemp_key; //定义外部中断0的暂存变量ucharhour; ucharminu;ucharsec;ucharhour_sw; //小时的十位ucharhour_gw; //小时的个位ucharminu_sw; //分钟的十位ucharminu_gw;ucharsec_gw;ucharsec_sw;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voidinit(){ TMOD=0X01; //设定定时器工作方式为工作方式1 EA=1; //开启总中断位 ET0=1; //开启定时器0中断 TH0=(65536-50000)/256; //给定时器0的高8位装数 TL0=(65536-50000)%256; //给定时器0的低8位装数 TR0=1; //允许计数器0工作 IT0=0; //设置外部中断0的触发方式位低电平触发 EX0=1; //开启外部中断0 PX0=1; //将外部中断0的优先级设位最高 aa=0; //初始化定时器中断0的控制位 hour=0; minu=0; sec=0; key_hour=1; //将开关控制置高电平 key_minu=1; //将开关控制置高电平 key=1; //将开关控制置高电平 temp_key=key; //将开关控制变量的值赋给开关暂存变量 temp_hour=key_hour; //将开关控制变量的值赋给开关暂存变量 temp_minu=key_minu; //将开关控制变量的值赋给开关暂存变量}//拆数函数voidnumber(){ hour_sw=hour/10; hour_gw=hour%10; minu_sw=minu/10; minu_gw=minu%10; sec_sw=sec/10; sec_gw=sec%10;}//延时函数 微妙级voiddelay(uintz){ uintx,y; for(x=z;x>0;x--) for(y=124;y>0;y--);}//显示函数voiddisplay(){ number(); //调用拆数函数 dule=1; //打开段选信号 wele=1; //打开位选信号 P2=0x3e; //使第一个数码管亮与数码管的位选位 P0=table[hour_sw]; //给数码管的P0口赋值与数码管的段选位 dule=0; //关闭段选信号 wele=0; //关闭位选信号 delay(5); //调用延时函数 延时5MS dule=1; wele=1; P2=0x3d; P0=table[hour_gw]; dule=0; wele=0; delay(5); dule=1; wele=1; P2=0x3b; P0=table[minu_sw]; dule=0; wele=0; delay(5); dule=1; wele=1; P2=0x37; P0=table[minu_gw]; dule=0; wele=0; delay(5); dule=1; wele=1; P2=0x2f; P0=table[sec_sw]; dule=0; wele=0; delay(5); dule=1; wele=1; P2=0x1f; P0=table[sec_gw]; dule=0; wele=0; delay(5);}//主函数voidmain(){ init(); //调用初始化函数 while(1); //死循环,等待中断}//定时器中断服务函数void_TR0_()interrupt1{ TH0=(65536-50000)/256; //给定时器0的高8位装初值 TL0=(65536-50000)%256; //给定时器0的低8位装初值 50ms产生一次中断 aa++; //中断控制变量自加 if(aa==20) //判断控制变量是否位20与计时达到1S { aa=0; //清0 sec++; //秒自加1 if(sec==60) //判断是否到60S { sec=0; //清0 minu++; //分自加1 if(minu==60) //判断分是否到60' { minu=0; //清0 hour++; //小时自加1 if(hour==24) { hour=0; } } } } display(); //调用显示函数 }//外部中断0服务函数void_EX0_()interrupt0{ temp_minu=key_minu; //将开关控制变量的值赋给开关暂存变量 temp_hour=key_hour; //将开关控制变量的值赋给开关暂存变量 temp_key=key; //将开关控制变量的值赋给开关暂存变量 while(temp_key==0) //判断中断开关是否按下若按下执行下面的循环 { temp_key=key; //将开关控制变量的值赋给开关暂存变量 temp_minu=key_minu; //将开关控制变量的值赋给开关暂存变量 temp_hour=key_hour; //将开关控制变量的值赋给开关暂存变量 display(); //调用显示函数 //调分钟 if(temp_minu==0) //判断调时开关(分钟)是否按下 { delay(5); //延时5毫秒软件消除机械误差 temp_minu=key_minu; //将开关控制变量的值赋给开关暂存变量 if(temp_minu==0) //判断调时开关(分钟)是否真的按下 { display(); //调用显示函数 } while(temp_minu==0) //松手检测 temp_minu=key_minu; //如果开关一直处于按下状态,则死在这里(死循环) if(temp_minu==1) // 判断调时开关(分钟)是否松开 { delay(5); //延时5MS软件消除机械误差 temp_minu=key_minu; //将开关控制变量的值赋给开关暂存变量 if(temp_minu==1) //判断调时开关(分钟)是否真的松开 { minu++; //分钟自加1 if(minu==60) //判断分钟是否为60 { minu=0; //清0 hour++; //小时自加1 if(hour==24) { hour=0; } } } } } //调小时 temp_hour=key_hour; if(temp_hour==0) { delay(5); temp_hour=key_hour; if(temp_hour==0) { display(); } while(temp_hour==0) temp_hour=key_hour; if(temp_hour==1) { delay(5); temp_hour=key_hour; if(temp_hour==1) { hour++; if(hour==24) { hour=0; } } } } }}第4章系统调试调试是一个必不可少的环节,它将会验证你的成果,是否实现了所要完成的功能。系统调试仿真时首先要在使用Keil编译器,把所写的程序进行编译,同时在仿真器里设置生成“.HEX”文件,编译无错误时还要进行Proteus仿真,查看功能是否能够实现。下面就将仿真将会用到的软件进行简单的介绍,并对仿

温馨提示

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

评论

0/150

提交评论