《单片机数字电子钟的设计与实现毕业论文.doc》由会员分享,可在线阅读,更多相关《单片机数字电子钟的设计与实现毕业论文.doc(41页珍藏版)》请在三一办公上搜索。
1、毕业设计任务书单片机数字电子钟的设计与实现一、毕业设计的任务和具体要求:任务:(1)巩固和提高学过的基础理论和专业知识;(2)提高运用所学专业知识进行独立思考和综合分析、解决实际问题的能力;(3)培养掌握正确的思维方法和利用软件和硬件解决实际问题的基本技能;(4)增强对实际电路的认识,掌握分析处理方法,进行调试、计算等基本技能的训练, 使之具有一定程度的实际工作能力。(5)掌握科研、资料查询的基本方法以及获取新知识的能力。(6)促使我们学习和获取新知识,掌握自我学习的能力。(7)通过参与实际工作,使我们了解社会和工作,具备一定的实际工作能力(8)通过设计数字电子钟,了解电子钟的工作原理和内部构
2、造。 要求:1根据数字电子钟课题任务制定合理、可行的工作计划;2进行必要的调研和资料搜集、文献阅读;3软件设计要符合软件工程规范,硬件设计符合原理表示、电 路图纸和工艺要求的各种规范;4制定系统(模块)的测试方法,并根据完整的测试数据对系统(模块)的性能指标做 出分析和评价;5.实现数字电子钟的显示时间和时间校对的功能6对课题成果进行总结,撰写毕业设计说明书二、毕业设计应完成的图纸:图 2-1 单片机 8052 的内部结构,见 4 页图 2-2MCS-52系列单片机的内部结构,见 5页 图 2-3单片机的引脚图,见 6页图 2-4 上电自动和手动复位电路图,见 7 页 图 2-5 内部和外部时
3、钟方式图,见 7 页图 3-1 单片机最小系统的结构图,见 9 页图 3-2晶振连接的内部、外部方式图,见 10页 图 3-3常用复位电路图,见 11页表 3-1 P3端口引脚兼用功能表,见 12页 图 3-4LED显示器的符号图,见 12页图 3-5共阳式、共阴式 LED数码管的原理图和数码管的符号图,见 13页 图 3-6 数码管的硬件连接示意图,见 13 页图 3-7 按键控制电路的硬件连接图,见 14 页 图 3-8 按键抖动信号波形,见 15 页图 4-1主程序流程图,见 16页图 4-2按键处理流程图,见 17页图 4-3 定时器中断流程图,见 18 页 图 4-4 时间显示流程图
4、,见 19 页图 4-5 数字钟的原理图,见 20 页图 5-1 数字钟的 PROTUES 仿真,见 26 页三、其他要求:四、毕业设计的期限:自 2008 年 6 月 17 日至 2008 年 10 月 10 日五、毕业设计(论文)进度计划:起 至 日 期工作内容备注2008.6.172008.6.192008.6.202008.6.252008.6.262008.6.272008.6.28-2008.6.302008.7.12008.7.42008.7.52008.7.62008.7.72008.7.112008.7.122008.7.142008.7.142008.7.152008.9.
5、62008.9.112008.9.102008.10.10选择设计所需元器件,列清单购买。 确定实现数字电子钟的应用程序。 确定实现数字电子钟的电路图。在 Protues软件中仿真 焊接元器件,焊最小系统。 万用表测试各点观察是否焊接良好。 焊接下载电路和显示电路。 万用表测试电路的焊接点。下载程序 到电子阅览室写毕业论文 完成毕业论文数字电子钟摘要20 世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的 各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产 品性能进一步提高,产品更新换代的节奏也越来越快。现代生活的人们越来越重视起了时间观念
6、,可以说是时间和金钱划上了等号。对于那些 对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码 管为显示器的时钟比指针式的时钟表现出了很大的优势。数码管显示的时间简单明了而且读 数快、时间准确显示到秒。而机械式的依赖于晶体震荡器,可能会导致误差。数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。数字钟的精度、 稳定度远远超过老式机械钟。在这次设计中,我们采用 LED 数码管显示时、分、秒,以 24 小时计时方式,根据数码管动态显示原理来进行显示,用 12MHz 的晶振产生振荡脉冲,定 时器计数。在此次设计中,电路具有显示时间的其本功能,还可以实现对
7、时间的调整。数字 钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱, 因此得到了广泛的使用。关键字:数字电子钟单片机目录第一章绪论1.1数字电子钟的背景11.2数字电子钟的意义11.3数字电子钟的应用1第二章整体设计方案2.1单片机的选择 22.2单片机的基本结构 4第三章数字钟的硬件设计3.1最小系统设计 93.2LED显示电路 123.3键盘控制电路 14第四章数字钟的软件设计4.1系统软件设计流程图164.2数字电子钟的原理图204.3主程序204.4时钟设置子程序214.5定时器中断子程序214.6LED显示子程序 224.7按键控制子程序 24第五章系
8、统仿真5.1PROTUES软件介绍 265.2电子钟系统 PROTUES仿真 26第六章调试与功能说明6.2系统性能测试与功能说明276.3系统时钟误差分析276.1硬盘调试276.4软件调试问题及解决27结束语.29 参考文献30 致谢.31第一章 绪论1.1数字电子钟的背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的 各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产 品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作 的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的
9、时候, 这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着 CMOS化、低功耗、小 体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发 展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计 方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法 来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的 装置,与机械式时钟相比具有更高的准确性和
10、直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。1.2 数字电子钟的意义数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石 英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产 生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时 自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、 甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字 钟及扩大其
11、应用,有着非常现实的意义。1.3数字电子钟的应用数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、 剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集 成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便 等优点,它还用于计时、自动报时及自动控制等各个领域。第二章整体设计方案2.1单片机的选择单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型 计算机简称单片机,特别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理 器、存储
12、器和 I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可 成为一个单片机控制系统。单片机经过 1、2、3、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、 大存储容量、强 I/O功能及较好的结构兼容性方向发展。其发展趋势不外乎以下几个方面:1、多功能单片机中尽可能地把所需要的存储器和 I/O口都集成在一块芯片上,使得单片机可以实 现更多的功能。比如 A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器-看家狗)、 高速 I/O口及计数器的捕获/比较逻辑等。有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。 例如,有的芯片以 5
13、1内核为核心,集成了 USB控制器、SMARTCARD接口、MP3解码器、CAN 或者 I*I*C总线控制器等,LED、LCD或 VFD显示驱动器也开始集成在 8位单片机中。2、高效率和高性能为了提高执行速度和执行效率,单片机开始使用 RISC、流水线和 DSP的设计技术,使单 片机的性能有了明显的提高,表现为:单片机的时钟频率得到提高;同样频率的单片机运行 效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内 ROM(FLASH)和 RAM 的容量都突破了以往的数量和限制。由于系统资源和系统复杂程度的增加,开始使用高级语言(如 C语言)来开发单片机的 程序。使用高级语言可以降低开发
14、 难度,缩短开发周期,增强软件的可读性和可移植性,便 于改进和扩充功能。3、低电压和低功耗单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。由于 CMOS等工艺的大量采 用,很多单片机可以在更低的电压下工作(1.2V或 0.9V),功耗已经降低到 uA级。这些特 性使得单片机系统可以在更小电源的支持下工作更长的时间。4、低价格 单片机应用面广,使用数量大,带来的直接好处就是成本的降低。目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。下面大致介绍一下单片机的主要应用领域和特点。(1)家用电器领域 用单片机控制系统取代传统的模拟和数字控制电路,使家用电器(如洗
15、衣机、空调、冰箱、微波炉、和电视机等)功能更完善,更加智能化和易于使用。(2)办公自动化领域 单片机作为嵌入式系统广泛应用于现代办公设备,如计算机的键盘、磁盘驱动、打印机、复印机、电话机和传真机等。(3)商业应用领域 商业应用系统部分与家用和办公应用系统相似,但更加注重设备的稳定性、可靠性和安全性。商用系统中广泛使用的电子计量仪器、收款机、条形码阅读器、安全监测系统、空气 调节系统和冷冻保鲜系统等,都采用了单片机构成的专用系统。与通用计算机相比,这些系 统由于比较封闭,可以更有效地防止病毒和电磁干扰等,可靠性更高。(4)工业自动化 在工业控制和机电一体化控制系统中,除了采用工控计算机外,很多都
16、是以单片机为核心的单片机和多机系统。(5)智能仪表与集成智能传感器 目前在各种电气测量仪表中普遍采用了单片机应用系统来代替传统的测量系统,使得测量系统具有存储、数据处理、查询及联网等智能功能。将单片机和传感器相结合,可以构成 新一代的智能传感器。它将传感器变换后的物理量作进一步的变化和处理,使其成为数字信 号,可以远距离传输并与计算机接口。(6)现代交通与航空航天领域 通常应用于电子综合显示系统、动力监控系统、自动驾驶系统、通信系统以及运行监视系统等。这些领域对体积、功耗、稳定性和实时性的要求往往比商用系统还要高,因此采用 单片机系统更加重要。目前,我国生产很多型号的单片机,在此,我们采用型号
17、为 STC89C52的单片机。因 为: STC89C52是一个低电压,高性能 CMOS8位单片机,片内含 4kbytes的可反复擦写的 Flash只读程序存储器和 128bytes的随机存取数据存储器(RAM),器件采用 ATMEL公司的 高密度、非易失性存储技术生产,兼容标准 MCS-52指令系统,片内置通用 8位中央处理器和 Flash存储单元,内置功能强大的微型计算机的 AT89C52提供了高性 价 比 的 解 决 方 案 。STC89C52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端 口,同时内含 2个外中断口,2个 16位可编程定时计数器,2个全双工串行
18、通信口,STC89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和 Flash存储器结合在 一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。2.2 单片机的基本结构MCS-52单片机内部结构8052单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并 行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现 在我们分别加以说明:中央处理器:中央处理器(CPU)是整个单片机的核心部件,是 8位数据宽度的处理器,能处理 8位二 进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输
19、 入输出功能等操作。数据存储器(RAM)8052内部有 128个 8位用户数据存储单元和 128个专用寄存器单元,它们是统一编址的, 专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的 RAM只有 128个,可存放读写的数据,运算的中间结果或用户定义的字型表。程序存储器(ROM):图 2-1 单片机 8052 的内部结构8052共有 4096个 8位掩膜 ROM,用于存放用户程序,原始数据或表格。 定时/计数器(ROM):8052有两个 16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。 并行输入输出(I/O)口:8052共有 4组
20、 8位 I/O口(P0、 P1、P2或 P3),用于对外部数据的传输。全双工串行口:8052内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作 异步通信收发器,也可以当同步移位器使用。中断系统:8052具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满 足不同的控制要求,并具有 2级的优先级别选择。时钟电路:8052内置最高频率达 12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但 8052单 片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard) 结构,另一种是采用通用计算机广泛
21、使用的程序存储器与数据存储器合二为一的结构,即普 林斯顿(Princeton)结构。INTEL的 MCS-52系列单片机采用的是哈佛结构的形式,而后续产品 16位的 MCS-96系列单片机则采用普林斯顿结构。 下图是 MCS-52 系列单片机的内部结构示意图。图 2-2MCS-52系列单片机的内部结构MCS-52的引脚说明:MCS-52系列单片机中的 8031、8051及 8751均采用 40Pin封装的双列直接 DIP结构,右 图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4 组 8位共 32个 I/O口,中断口线与 P3口线复用。现在我们对这些引脚的功能加
22、以说明:MCS-51的引脚说明:MCS-52系列单片机中的 8031、8051及 8751均采用 40Pin封装的双列直接 DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4 组 8位共 32个 I/O口,中断口线与 P3口线复用。现在我们对这些引脚的功能加以说明:图 2-3单片机的引脚图Pin9:RESET/Vpd复位信号复用脚,当 8052通电,时钟电路开始工作,在 RESET引脚上出 现 24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器 PC指向 0000H, P0-P3输出口全部为高电平,堆栈指针写入 07H,其它专用寄存器
23、被清“0”。RESET由高电 平下降为低电平后,系统即从 0000H地址开始执行程序。然而,初始复位不改变 RAM(包括 工作寄存器 R0-R7)的状态,8052的初始态。8051的复位方式可以是自动复位,也可以是手动复位,见下图 4。此外,RESET/Vpd还是 一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部 RAM的数据不丢失。图 2-4 上电自动和手动复位电路图图 2-5 内部和外部时钟方式图/Pin30:ALE当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。 而访问内部程序存储器时,ALE端将有一个 1/6时钟频率的正脉冲信号,这个信号可以用于 识别
24、单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储 器,ALE会跳过一个脉冲。如果单片机是 EPROM,在编程其间,将用于输入编程脉冲。:Pin29当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的 16位地址数据 将出现在 P0和 P2口上,外部程序存储器则把指令数据放到 P0口上,由 CPU读入并执行。Pin31:EA/Vpp程序存储器的内外部选通线,8051和 8751单片机,内置有 4kB的程序存 储器,当 EA为高电平并且程序地址小于 4kB时,读取内部程序存储器指令数据,而超过 4kB 地址则读取外部指令数据。如 EA为低电平,则不管地址大小,一律读取
25、外部程序存储器指令。 显然,对内部无程序存储器的 8031,EA端必须接地。第三章 数字钟的硬件设计3.1最小系统设计图 3-1单片机最小系统的结构图单片机的最小系统是由电源、复位、晶振、/EA=1组成,下面介绍一下每一个组成部分。1.电源引脚 Vcc 40 电源端 GND 20 接地端工作电压为 5V,另有 AT89LV51工作电压则是 2.7-6V,引脚功能一样。2.外接晶体引脚图 3-2晶振连接的内部、外部方式图XTAL1 19XTAL2 18XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外 部振荡信号应直接加到 XTAL1,而 XTAL2悬空。内部方
26、式时,时钟发生器对振荡脉冲二分频, 如晶振为 12MHz,时钟频率就为 6MHz。晶振的频率可以在 1MHz-24MHz内选择。电容取 30PF 左右。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内 部有一个用于构成振荡器的高增益反相放大器。引脚 XTAL1和 XTAL2分别是此放大器的输入 端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接 晶体谐振器以及电容 C1和 C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的 值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的 快速性和温度的稳定性。
27、因此,此系统电路的晶体振荡器的值为 12MHz,电容应尽可能的选 择陶瓷电容,电容值约为 22F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与 单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。3.复位RST 9 在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后 P0P3口均置 1引脚 表现为高电平,程序计数器和特殊功能寄存器 SFR全部清零。当复位脚由高电平变为低电平 时,芯片为 ROM的 00H处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路 是复位引脚 RST通过
28、一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的 输出在每个机器周期的 S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮 复位两种方式,此电路系统采用的是上电与按钮复位电路。当时钟频率选用 6MHz时,C取 22 F,Rs约为 200,Rk约为 1K。复位操作不会对内部 RAM有所影响。常用的复位电路如下图所示:图 3-3常用复位电路图4.输入输出引脚(1)P0端口P0.0-P0.7P0是一个 8位漏极开路型双向 I/O端口,端口置 1(对端口写1)时作高阻抗输入端。作为输出口时能驱动 8个 TTL。对内部 Flash程序存储器编程时,接收指令字节;校验程序时输出
29、指令字节,要求外接上 拉电阻。在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低 8位)/数据总线,访 问期间内部的上拉电阻起作用。(2)P1端口P1.0P1.7P1是一个带有内部上拉电阻的 8位双向 I/0端口。输出时可 驱动 4个 TTL。端口置 1时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash程序存储器编程时,接收低 8位地址信息。 (3)P2端口P2.0P2.7P2是一个带有内部上拉电阻的 8位双向 I/0端口。输出时可驱动 4个 TTL。端口置 1时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash程 序存储器编程时,接收高 8位地址和控制信息。在
30、访问外部程序和 16位外部数据存储器时,P2口送出高 8位地址。而在访问 8位地址 的外部数据存储器时其引脚上的内容在此期间不会改变。(4)P3端口P3.0P3.7P2是一个带有内部上拉电阻的 8位双向 I/0端口。输出时可 驱动 4个 TTL。端口置 1时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash程序存储器编程时,接控制信息。除此之外 P3端口还用于一些专门功能,具体请看下表。P3引脚兼用功能P3.0串行通讯输入(RXD)P3.1串行通讯输出(TXD)P3.2外部中断 0( INT0)P3.3外部中断 1(INT1)P3.4定时器 0输入(T0)P3.5定时器 1输入(T1
31、)P3.6外部数据存储器写选通 WRP3.7外部数据存储器写选通 RD表 3-1 P3端口引脚兼用功能表3.2LED显示电路显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺, 单片机应用系统中常用的显示器有: 发光二极管 LED显示器、液晶 LCD显示器、CRT显示器 等。LED显示器是现在最常用的显示器之一,如下图所示。图 3-4LED显示器的符号图发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可 以组装成分段式或点阵式 LED显示器件(半导体显示器)。分段式显示器(LED数码管)由 7 条线段围成 8字型,每一段包含一个发光二极管。
32、外加正向电压时二极管导通,发出清晰的 光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共 阴之分。图是共阳式、共阴式 LED数码管的原理图和符号.图 3-5共阳式、共阴式 LED数码管的原理图和数码管的符号图显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要 6个数码管,另需 两个数码管来显示横。采用动态显示方式显示时间,硬件连接如下图所示,时的十位和个位 分别显示在第一个和第二个数码管,分的十位和个位分别显示在第四个和第五个数码管,秒 的十位和个位分别显示在第七个和第八个数码管,其余数码管显示横线。LED显示器的显示 控制方式按驱动方式可分成静态显
33、示方式和动态显示方式两种。对于多位 LED显示器,通常 都是采用动态扫描的方法进行显示,其硬件连接方式如下图所示。图 3-6数码管的硬件连接示意图数码管使用条件:a、段及小数点上加限流电阻b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定 c、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 4-5mA峰值电流 100mA 数码管使用注意事项说明:()数码管表面不要用手触摸,不要用手去弄引角;()焊接温度:度;焊接时间:()表面有保护膜的产品,可以在使用前撕下来。3.3 键盘控制电路该设计需要校对时间,所以用三个按键来实现。按 khour来调节小时的时间,按 km
34、in来调节分针的时间,按 ksec来调节秒的时间。下图是按键硬件连接图。图 3-7 按键控制电路的硬件连接图当用手按下一个键时,如图 3-8所示,往往按键在闭合位置和断开位置之间跳几下才稳 定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。这就是抖动。抖动的持续 时间随键盘材料和操作员而异,不过通常总是不大于 10ms。很容易想到,抖动问题不解决就 会引起对闭合键的识别。用软件方法可以很容易地解决抖动问题,这就是通过延迟 10ms来等待抖动消失,这之后,在读入键盘码。键按下图 3-8 按键抖动信号波形第四章 数字钟的软件设计系统的软件设计也是工具系统功能的设计。单片机软件的设计主要包括
35、执行软件(完成 各种实质性功能)的设计和监控软件的设计。单片机的软件设计通常要考虑以下几个方面的 问题:(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体 结构,使软件开发清晰、简洁和流程合理;(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便于调 试、链接,又便于移植和修改;(3)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;(4)绘制程序流程图;(5)合理分配系统资源;(6)为程序加入注释,提高可读性,实施软件工程;(7)注意软件的抗干扰设计,提高系统的可靠性。4.1系统软件设计流程图 这次的数字电子钟设计用到很多子程序,
36、它们的流程图如下所示。 主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。开始启动定时器按键检测时间显示图 4-1主程序流程图按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加 1;如果没有按下,就检 测分按键是否按下,分按键如果按下,分就加 1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加 1;如果没有按下,就把时间显示出来。开始N秒按键按下?图 4-2按键处理流程图定时器中断时是先检测 1秒是否到,1秒如果到,秒单元就加 1;如果没到,就检测 1分 钟是否到,1分钟如果到,分单元就加 1;如果没到,就检测 1小时是否到,1小时如果到,
37、时单元就加 1,如果没到,就显示时间。开始N一秒时间到?Y秒单元加 1N60 秒时间到?Y秒单元清零,分单元加 1N60 分钟到?Y分单元清零,时单元加 1N24 小时到?Y时单元清零时间显示中断返回图 4-3定时器中断流程图时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后 是分十位显示,再就是时个位计算显示,最后是时十位显示。开始秒 个 位 计 算 显 示秒 十 位 计 算 显 示分 个 位 计 算 显 示分 十 位 计 算 显 示时 个 位 计 算 显 示时 十 位 计 算 显 示结束图 4-4时间显示流程图4.2数字钟的原理图用 PROTUES软件,根据要求画
38、出数字电子钟的原理图如下所示。图 4-5数字钟的原理图在此有必要介绍一下数字电子钟的工作原理。 工作原理 :数字电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周 期为 24小时,显示满刻度为 23时 59分 59秒,另外还有校时功能。因此,一个基本的数字 钟电路主要由显示器“时”,“分”,“秒”和单片机,还有校时电路组成。8个数码管的段选 接到单片机的 P0口,位选接到单片机的 P2口。数码管按照数码管动态显示的工作原理工作, 将标准秒信号送入“秒单元”,“秒单元”采用 60进制计数器,每累计 60秒发出一个“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。“分单
39、元”也采用 60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。“时单元”采用 24进制计 时器,可实现对一天 24小时的累计。显示电路将“时”、“分”、“秒”通过七段显示器显示出 来。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,按一下 ksec,秒单元就 加 1,按一下 kmin,分就加 1,按一下 khour,时就加 1。4.3主程序#include sbitksec=P30; sbitkmin=P31; sbitkhour=P32;unsignedcharsecshi=0,secge=0,minshi=0,minge=0,hourshi=0,
40、hourge=0;unsignedintnum=0,sec=0,min=0,hour=0; unsignedcharcode table10=0x3f,0xxx,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; voiddelay(unsignedint);voidkeyscan(); voiddisplay(); main()TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1; while(1)display();keyscan();voiddelay(unsigne
41、dintz)unsignedintx,y; for(x=z;x0;x-) for(y=110;y0;y-);4.4时钟设置子程序voidtime0()interrupt1num+;TH0=(65536-50000)/256; TL0=(65536-50000)%256;4.5定时器中断子程序voidtime0()interrupt1num+;TH0=(65536-50000)/256; TL0=(65536-50000)%256;在这里,我们有必要介绍一下单片机的中断系统,以利于我们的学习。 中断技术在单片系统中有着十分重要的作用,它不仅可以提高单片机 CPU的效率,也可以对突发事件处理。所谓中断就是当 CPU正在执行程序 A时,发生了另一个急需处理的事件 B,这是 CPU暂停当前执行的程序 A,立即转去执行处理事件 B的程序,处理完事件 B后,再 返回到程序 A继续执行,这个过程被叫做中断。关于中断的概念有下列几个名词:(1)