1、内蒙古科技大学微机化仪表课程设计说明书 多功能电子钟的设计与实现摘 要电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。另外,在生活和体育赛场中,也常常需要跑秒,这就需要电子时钟具有多功能性。本设计主要为实现一款可正常显示时钟,带有定时闹铃,跑秒的多功能电子时钟。本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。本设计应用AT89C51芯片作为核心,利用74LS164作为串入并出的寄存器,7位LED数码管显示,并且设置按键来对分秒小时闹铃等进行校对。这种实现方法的优点是电路简单,性
2、能可靠,实时性好,时间精度高,操作简单,编程容易。该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。关键词:电子时钟;AT89C51;74LS164;LED; 第30页,共30页 The Design with Investigation of the Multi-function Electron ClockAbstractElectronic clock is the use of electronic technology will be an electronic clock, digital, with the cloc
3、k precision, small size and friendly interface, scalable performance, and other characteristics, are widely used to live and work. In addition, in the field of sports and life, often need to run second, which requires electronic clock with versatility.The main design for the realization of this can
4、be a normal clock display, from time to time with alarm, running the second multi-function electronic clock.This article on the current development of the electronic clock means were compared and analyzed to determine the ultimate use of a single chip multifunctional electronic clock technology. AT8
5、9C51 chip design of this application as the core, to use as a 74LS164 and a string into the register, 7 LED digital display and button set up to every minute of the hour for alarm, and other proof-reading. This method has the advantage of a simple circuit, reliable and real-time, high-accuracy time,
6、 simple, easy to program.The electronic clock can be applied to general life and work, can also be modified to improve performance, add new functions to the people living and working more convenient.Key words: Electronic clock; AT89C51; 74LS164; LED;目 录摘 要IAbstractII第一章 引 言51.1 多功能电子时钟研究的背景和意义51.2 电
7、子时钟的功能6第二章 电子时钟设计方案分析7第三章 基于单片机的电子时钟硬件设计83.1 主要IC芯片选择8 3.1.1微处理器的选择8 3.1.2寄存器的选择.11 3.1.3显示器件的选择.12 3.1.4看门狗器件的选择.143.2 电子时钟硬件电路设计143.2.1 显示电路153.2.2 按键电路设计153.2.3 闹铃电路设计173.2.4 复位电路设计18第四章 电子时钟软件设计204.1 主程序设计204.2 子程序设计214.2.1 显示子程序设计214.2.2 键盘扫描子程序214.2.3闹铃子程序设计23 4.2.4跑秒子程序设计.23第五章 系统调试245.1 硬件调试
8、245.1.1 单片机基础电路调试245.1.2 显示电路调试255.2 软件调试27结 论28参考文献29附录A 程序附录B 多功能电子时钟硬件电路图致 谢30第一章 引 言时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。从古代的水漏、十二天干地支,到后来的机械钟表以及当今的石英钟,都充分显现出了时间的重要,同时也代表着科技的进步。致力于计时器的研究和充分发挥时钟的作用,将有着重要的意义。1.1 多功能电子时钟研究的意义电子钟是采用电子电路实现对时、分、秒进行数字显示的计时装置,广泛应用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品
9、。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如:跑秒显示、定时自动报警、0按时自动打铃、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。1.2 电子时钟的功能电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时间精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。当今市场上的电子时钟品类繁多,外形小巧别致。也有体型较大的,诸如公共
10、场所的大型电子报时器等。电子时钟首先是数字化了的时间显示或报时器,在此基础上,人们可以根据不同场合的要求,在时钟上加置其他功能,比如定时闹铃,万年历,环境温度、湿度检测,环境空气质量检测,USB扩展口功能等。本设计电子时钟主要功能为:1. 具有时间显示,24小时制;2. 具有闹铃功能;3. 具有跑秒功能;4. 具有手动校对功能;第二章 电子时钟设计方案分析电子闹钟既可以通过纯硬件实现,也可以通过软硬件结合实现。根据电子时钟里的核心部件秒信号的产生原理,利用单片机来设计数字电子钟。单片机设计方案:单片机是微型机的一个主要分支,它在结构上的最大特点使把CPU、存储器、定时器和多种输入/输出接口电路
11、集成在一块超大规模集成电路芯片上。就其组成和功能而言,一块单片机芯片就是一台计算机。单片机具有如下特点:有优异的性能价格比;1 集成度高、体积小、有很高的可靠性;2 控制功能强;3 低功耗、低电压,便于生产便携式产品;4 外部总线增加了I2C、SPI等串行总线方式,进一步缩小了体积,简化了结构;5 单片机的系统扩展、系统配置较典型、规范,容易构成各种规模的应用系统。所以单片机的应用非常广泛,在智能仪表、机电一体化、实时控制、分布式多机系统以及人们的生活中均有用武之地。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思路和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在
12、已能用单片机通过软件方法来实现了。这种用软件代替硬件的控制技术,是对生产控制技术的一次革命。利用单片机的智能性,可方便地实现具有智能的电子钟设计。单片机均具有时钟振荡系统,利用系统时钟借助微处理器的定时器/计数器可实现电子钟功能。然而系统时钟误差较大,电子钟的积累误差也可能较大,所以可以通过误差修正软件加以修正,或者在设计中加入高精度时钟日历芯片,以精确时间。另外很多功能不同的单片机是兼容的,这就更便于实现产品的多功能性。第三章 基于单片机的电子时钟硬件设计考虑单片机货源充足、价格低廉,可软硬件结合使用,能够较方便的实现系统的多功能性,故采用单片机作为本设计的软、硬件基础。3.1主要IC芯片选
13、择3.1.1微处理器选择目前在单片机系统中,应用比较广泛的微处理器芯片主要为8XC5X系列单片机。该系列单片机均采用标准MCS-51内核,硬件资源相互兼容,品类齐全,功能完善,性能稳定,体积小,价格低廉,货源充足,调试和编程方便,所以应用极为广泛,本设计采用具有32根I/O引脚的AT89C51单片机。AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和
14、Flash存储单元,功能强大AT89C51单片机可提供高性价比的应用场合,可灵活应用于各种控制领域。一、AT89C51的主要性能参数: 图3.1.1 AT89C51的功能引脚图1、与MCS-51产品指令系统完全兼容;2、4K字节可重擦写Flash闪速存储器;3、1000此擦写周期;4、全静态操作:0Hz-24Hz;5、三级加密程序存储器;6、128*8字节内部RAM;7、32个可编程I/O口线;8、2个16位定时/计数器;9、6个中断源;10、可编程串行UART通道;11、低功耗空间和掉电模式;二、AT89C51的功能引脚图:三、功能特性概述: AT89C51提供以下标准功能:4K字节Flas
15、h闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。本设计主要应用到AT89C51的以下部分:P0口:P0口是一组8位漏极开路型双向I/O口.也即地址/数据总线复用口,作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写
16、1可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时。这组口线分时转换地址低8位和数据总线复用,在访问期间激活内部上拉电阻。 P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动吸收或输出电流4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 P2口:P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动吸收或输出电流4个TIL逻辑门电路,对端口写“ 1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内
17、部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 在访问外部程序存储器或l6位地址的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVXRI指令)时,P2口线上的内容(也即特妹功能寄存器(SFR)区中R2寄存器的内容,在整个访问期间不改变。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器地址为0000H-FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位 LB1被编程,复位时内部会锁存EA端状态。 如
18、EA端为高电平接Vcc端,CPU 则执行内部程序存储器中的指令。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。 时钟振荡器: AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。 外接石英晶体或陶瓷谐振器)及电容C1,C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求。但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,电
19、容使用30pF,而如果使用陶瓷谐振器,则为40pF。 也可采用外部时钟,这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。图3.1.1振荡电路图3.1.2寄存器的选择74164:8位移位寄存器(串行输入,并行输出)。当清除端(CLEAR)为低电平时,输出端(Q0-Q7)均为低电平。串行数据输入端(A,B)可控制数据。当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。引出端符号CLOCK 时钟输入端 CLEAR 同步清除输入端
20、(低电平有效)A、B 串行数据输入端 Q0-Q7 输出端逻辑及封装图:图3.1.2 74LS164逻辑引脚图3.1.3显示器件的选择LED数码管是单片机控制系统中最常用的显示器件之一,它在单片机应用系统中的地位类似于CRT(阴极射线管)显示器在台式微机系统中的地位。在单片机系统中,常用到LED数码管显示CPU的处理结果、输入/输出信号的状态或大小。LED数码管的a、b、c、d、e、f、g段用于显示数字或字符的笔画,dp显示小数点,笔段及其对应引脚排列如图所示,其中3、8做为公共端使用,接地或接电源。图3.1.3 LED笔段引脚及其对应引脚图根据LED数码管内各段LED发光二极管的连接方式,可以
21、将LED数码管分为共阴极和共阳极两大类,在共阴极数码管中,所有的笔段的LED发光二极管的负极连在一起,而共阳极数码管中,所以的笔段的LED发光二极管的正极连在一起。从LED数码管的结构可以看出,点亮不同笔段就可以显示出不同的字符,所以0-9的笔段码如图所示:字符dp、g、f、e、d、c、b、a共阳极笔段码共阴极笔段码01、1、0、0、0、0、0、0C0H3FH11、1、1、1、1、0、0、1F9H06H21、0、1、0、0、1、0、0A4H5BH31、0、1、1、0、0、0、0B0H4FH41、0、0、1、1、0、0、199H66H51、0、0、1、0、0、1、092H6DH61、0、0、0、
22、0、0、1、082H7DH71、1、1、1、1、0、0、0F8H07H81、0、0、0、0、0、0、080H7FH91、0、0、1、0、0、0、090H6FH表3.1.3 LED笔段码表根据显示驱动方式的不同,可将LED数码显示驱动电路分为静态显示方式和动态显示方式。在静态显示方式中,显示驱动程序简单,CPU占用率低,但每一位LED数码管需要一个8位锁存器来锁存笔段码,硬件开销大(元件数目多,印制板面积也会随之增加),仅适用于显示位数较少(4位以下)的场合,当需要显示的位数为4-12位时,多采用按位扫描软件译码(在单片机系统中一般不用硬件译码)的动态显示方式或按笔段扫描的动态显示方式。在此设计
23、中,采用的是共阴极数码管,因为显示4位位数,为了在显示部分节省单片机I/O口,故采用静态显示方式。3.1.4看门狗器件的选择X25045把四种常用的功能:上电复位、看门狗定时器、电源电压监控和块锁保护的串行EPROM存储器组成在一个封装之内,此组合降低系统成本、减少了电路板空间和增加了可靠性。X25045的工作原理是:向器件加电时激活了上电复位电路,它保持RESET有效一段时间,这样保证电源和振荡器稳定后,微处理器再执行代码。看门狗定时器对微控制器提供了一个独立的保护机制。当系统出现故障时,在可选的超时时间(Time-Out Interval)之后,器件将被激活RESET信号,用户可以从三个预
24、制的值中选择一个超时时间,这个超时值一旦选定,就会保存起来,即使系统断电,重启电源也不会改变,除非再次对超时值进行设定或者取消看门狗复位电路超时值。器件的低Vcc检测电路,可以保护系统免受低电压影响,当Vcc降到Vcc转换点以下时,系统复位。复位一直持续到Vcc回到正常工作电平并且稳定为止。其引脚连接图如下:图3.1.4 X25045引脚图3.2电子时钟硬件电路设计电子闹钟至少要包括秒信号发生器、时间显示电路、按键电路、供电电源、闹铃指示电路等几部分。另外,本设计要求该电子钟能够采集环境温度,所以还需要温度采集芯片。该系统使用AT89C51单片机作为核心,完成此电子时钟的主要功能时钟、跑秒、闹
25、铃。使用比较通用的8段共阴数码管,做7位显示,分别显示分,秒。图3.2 功能电子时钟硬件系统框图键盘是为了完成时钟校对显示功能。由于此电子时钟要求具有闹铃功能,所以设计有闹铃电路,进行声音响铃。3.2.1显示电路就时钟而言,通常可采用LCD显示或LED显示。对于一般的段式LCD,需要专门的驱动电路,而且LCD显示的可视性较差;对于具有驱动电路和微处理器接口的液晶显示模块(字符或点阵),一般采用并行接口,对微处理器的接口要求较高,占用资源多。另外,AT89C51本身没有专门的液晶驱动接口。LED结构简单,体积小,功耗低,响应速度快,易于匹配,寿命长,可靠性高,而且显示亮度高,价格便宜,市场上也有
26、专门的时钟显示组合LED。故本设计中应用7位8段共阴LED实现显示部分。 LED显示分动态显示和静态显示:动态显示方式的硬件电路简单。但设计上如果处理不当,易造成亮度低,闪烁问题。因此合理的设计既应保证驱动电路易实现,又要保证图像稳定,无闪烁。动态显示采用多路复用技术的动态扫描显示方式,复用的程度不是无限增加的, 因为利用动态扫描显示使我们看到一幅稳定画面的实质是利用了人眼的暂留效应和发光二极管发光时间的长短,发光的亮度等因素。静态显示,是由微型计算机一次输出显示模型后,就能保持该显示结果,直到下次发送新的显示模型为止。静态显示驱动程序简单,且CPU占用率低,但每个LED数码管需要一个锁存器来
27、锁存每一个显示位的笔段代码,硬件开销大,仅适合显示位数较少的场合。为了在显示部分节省单片机I/O口,故采用静态显示方式。电路图参见图3.10。74LS164是8位移位寄存器,应用该芯片驱动LED做显示部分,其优点在于连线简单,节省单片机I/O口,软件编程容易。3.2.2按键电路根据功能需要,本时钟需要设置以下功能键:校对选择键,加1操作键,减1操作键,。按照键盘与CPU的连接方式可分为独立式键盘和矩阵式键盘。独立式键盘是各个按键相互独立,每个按键占用一个I/O口线,每根I/O口线上的按键不会影响其他I/O口上按键工作状态。独立式键盘电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口,在
28、按键数量较多时,I/O口线浪费较大,且电路结构复杂。矩阵式键盘适合按键较多时使用。由于本设计的电子钟最多需要4个按键,若采用矩阵式键盘时会有按键浪费,故采用的是独立式键盘。键盘电路如图所示:图3.2.2 键盘电路表3.2.2 按键功能表按键键名功能属性K1FUN功能选择自动复位K2UP数值加一操作自动复位K3DOWN数值减一操作自动复位K4Enter确认键自动复位按键操作说明如下:K1键:该键为自动复位键,在正常显示时间状态下,第一次按下后,开始校对秒,以后每次按下都会分别进入对分、跑秒,闹铃时、闹铃的校对状态。K2键:该键为自动复位键,在校对状态下,每次按动该键,都会使相应校对位进行加1操作
29、。例如:校对小时状态,每按一下,小时位加1,当加至小时最高值23时,再按K4键,小时位回0。调分、秒与皆之相同,只是各位最高值不同。K3键:该键为自动复位键,与K2键类似,不同之处是该键每次按下将使相应校对位进行减1操作。K4键:该键为自动复位键,在校对状态下,按下该键,从校对状态返回时间显示状态。3.2.3闹铃电路闹铃音乐可以直接采用蜂鸣器闹铃,如当前时刻与闹铃时间相同,单片机向蜂鸣器送出高电平,蜂鸣器发声。采用蜂鸣器闹铃结构简单,控制方便,但是发出的闹铃声音单一。也可以在编程的时候编写一段音乐程序,待闹铃时间到时,调用该音乐程序给扬声器,便响起音乐。不过该方法只能做一些简单音乐,并且音乐程
30、序会占用很多单片机存储资源。还有一种方法是采用录音放音芯片1420做闹铃,先对录放音设备录入一段音乐,当到设定时间时,单片机控制录放音设备放音。采用录放音电路,铃声可以是预先设定的一段自己喜欢的音乐,符合电器设备人性化的要求。且1420芯片可以分段录音,还具有语音报时功能。另外,也可以购置一块音乐集成电路,加置在单片机和蜂鸣器之间,当单片机连接闹铃电路的管脚送出高电平时,音乐集成电路会给蜂鸣器特定脉冲,使蜂鸣器发声。此类集成电路体积较小,使用方便,不足的是音乐简单、单一。闹铃的音乐不是本设计中的重点,故采用最简单的方法,占用单片机一根I/O口P2.1, 中间用PNP型三极管S9012连接P2.
31、1和蜂鸣器。当P2.1引脚为低电平时,S9012的发射极和集电极导通,使蜂鸣器发声。当响铃标志位为“1”时,P2.1送一定频率脉冲,使蜂鸣器U11发出声音。在P2.0引脚加上一个二极管,当P2.0引脚为低电平时,二极管导通,使二极管发亮,同时置P2.0=P2.0时,二极管闪动。如图所示:图3.2.2 闹铃电路3.2.4复位电路复位是单片机的初始化操作,以便使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。除了进入系统的正常初始化之外,当单片机系统在运行出错或操作错误使系统处于死锁状态时,也可按复位键重新启动。复位后,PC内容初始化为0000H,使单片机从0000H单元开始
32、执行程序。单片机复位后不影响内部RAM的状态。89C51单片机复位信号的输入端是RST引脚,高电平有效。其有效时间持续24个时钟周期(2个机器周期)以上。RST端的外部复位电路有两种操作方式:上电自动复位和按键手动复位。上电复位电路:上电复位电路又称基本阻容复位电路,此复位电路利用了电容可以存储电荷的特性,和电阻组成串联网络,只要保证电容充放的时间常数满足单片机的复位要求,就可以形成基本的复位电路,此复位电路是高电平有效复位电路。上电的瞬间RESET端的电位和VCC相同,随着充电电流的减小,RESET端的电位逐渐下降,按照图上的参数,时间常数T=RC=100ms,这个时间常数足以保证完成复位操
33、作。按键手动复位电路:按键手动复位电路又称基本手动复位电路,此电路设计是手动复位开关产生的复位信号连接在复位电路上,而不是直接接在处理器的复位信号输入引脚上。如图,将一个手动开关与电阻串联后再和复位电容并联起来,当系统上电后,由于开关没有导通,还是一个基本的阻容复位电路,系统会可靠地复位。如果在调试过程中需要对系统进行复位,这时不需要断电再接通电源,只需要按一下复位开关即可。当复位开关按下后,电容被短路,在RESET脚上由于电阻分压会得到一个复位的高电平,达到复位效果。 图3.2.4 复位电路图出于电子钟应用方便,设计简单,所以本设计采用上电复位电路即基本阻容复位电路来进行复位。第四章 电子时
34、钟软件设计C51单片机可以应用汇编语言和C语言进行编程。,汇编语言与机器指令一一对应所以用汇编语言编写的程序在单片机里运行起来效率较高。C语言程序可读性高,更便于理解。本设计使用C语言编程。4.1主程序设计第一次上电,系统先进行初始化, LED显示初始时间“00:00”,并开始走时。单片机依次开始调用键盘扫描子程序、闹铃子程序,经过延时,返回程序开头循环运行。主程序流程图如图所示:图4.1.1 多功能电子钟主程序流程图4.2子程序设计4.2.1显示子程序设计用74LS164驱动LED数码管静态显示电路,编程也很容易。只要将需要显示的数字编辑成对应的BCD码,逐位送入74LS164的A、B串行输
35、入端,数码管将正常显示。关键之处是要实现根据键值显示不同的数字。图4.2.1 显示子程序流程图4.2.2键盘扫描子程序单片机对键盘扫描的方法有随机扫描方式、定时扫描方式和中断扫描方式。在随机扫描方式中,CPU完成某特定任务后,即执行键盘扫描程序,以确定键盘有无按键输入,然后根据按键功能转去执行相应的操作。在执行键盘按键规定的功能中不理睬键盘输入。定时扫描方式与随机扫描方式基本相同,只是利用CPU内的定时中断,每隔一定时间扫描有无按键被按下,键盘反应速度较快,在处理按键功能过程中,可以通过键盘命令进行干预,如取消、暂停等操作。前两种扫描方式均会占用CPU大量时间。不管有没有键入操作,CPU总要在
36、一定的时间内进行扫描,这对于单片机控制系统是很不利的。由于本设计中AT89C51单片机在系统中的主要任务是接受键盘控制的数据并送出显示,完成时钟/闹铃的校对和时间/跑秒显示控制。89C51单片机完全有能力完成以上工作,所以采用随机扫描键盘方式,系统也能够正常运行。程序流程如图所示:单片机扫描完键盘,得到键值,并根据键值转入执行对应任务,以实现按键功能。如果没有按键按下,则程序扫描到Key=FFH,将键值Key清零,返回主程序。图4.2.2 键盘扫描子程序4.2.3闹铃子程序设计闹铃子程序最主要的任务是不断用时钟分(min)与时(hour)同设定的闹铃分(clk_min)与闹铃时(clk_hou
37、r)比较,只要满足min等于clk_min、hour等于clk_hour,响铃启动半分钟,同时二极管也闪动半分钟。图4.2.3 闹铃子程序流程图4.2.4跑秒子程序的设计当function_count=5时,就进行到了跑秒程序的显示,当跑秒加到99时,再加上1,秒开始置1,同时跑秒则置0,接着进行。第五章 系统调试调试工作分硬件调试和软件调试两部分,调试方法介绍如下: 首先,硬件调试主要是先搭建硬件平台,然后利用万用表等工具对电路检查,最后应用程序进行功能调试。硬件调试比较费时,需要细心和耐心,也需要熟练掌握电路原理。然后,可以直接应用一些编辑或仿真软件进行软件调试,比如单片机C51编辑软件K
38、eil。该软件提供了一个集成开发环境uVision,它包括C编辑器、宏编辑器、连接器、库管理和一个功能强大的仿真调试器。通过编译、运行,可以检查程序错误。但应用此方法,仍需要十分了解所使用元器件的工作方式和管脚连接方式。在软件调试过程中要仔细耐心,即便是多写或少些一两个字符,都无法编译成功。而有时往往在Keil中编译、运行无错,但烧录到单片机中运行起来就会出错,很可能是编程时管脚或时序编辑得不对。还有一种方式,即应用仿真软件搭建电路的软件平台,再导入程序进行仿真调试。如果电路出错,可以在计算机上方便的修改电路,程序出错可以重新编辑程序,这种方法节时、省力,经济、方便。笔者应用的仿真软件为Pro
39、teus。总之,调试过程是一个软硬件相结合调试的过程,硬件电路是基础,软件是检测硬件电路和实现其功能的关键。在调试过程中,首先必须明确调试顺序。例如:本设计是在单片机系统基础上建立起来的,所以必须先确定单片机基础电路能否正常工作。为了正确显示时间,接下来还要确定显示电路能否正常工作。硬件调试的过程,也是软件调试的过程。然后,要准备好调试的工具。硬件调试需要万用表、示波器等,软件调试一般需要诸如Keil等仿真编辑器。根据自己实际制作该多功能电子时钟的经验,将调试过程介绍如下:5.1硬件调试5.1.1单片机基础电路调试单片机基础电路包括电源、单片机、外部时钟震荡电路、复位电路和外部接口电路。调试过
40、程需要注意以下几点:1. 检查电源是否完好。2. 单片机电源要连接正确,并且保证AT89C51的31号引脚接高电平。AT89C51的31号引脚是外部程序存储器选择信号端,当该引脚为高电平时,单片机会一直从片内程序存储器内取指令。3. 如果使用P0口做I/O口,要接上拉电阻。4. 使用万用表排查电路中是否存在断路或者短路情况。笔者在制作外部接口电路时使用的是排针,焊接时容易出现管脚之间短路,所以在上电以前必须先排查电路。5. 编辑一个使一组发光二极管循环点亮的程序并烧录到单片机内,上电运行,检查单片机是否正常工作,复位电路是否正确。本设计编辑了使一组P0口点亮8个发光二极管循环点亮的程序,程序代
41、码如下:#include void delay(void) /延时子程序 unsigned char i, j,k; /延时时间根据变量i,j,k不同而改变 for(i=50;i0;i-)for(j=50;j0;j-)for(k=250;k0;i-);void main() unsigned int n; unsigned char code ledp8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; while(1) P0=0xFFH; /初始化P0口 for(n=0;n0;t-) for(j=6245;j0;j-) ; void dis() /显示子程序,
42、03 unsigned char gsb,led,led1,jj; disp_buffer0=tab0; disp_buffer1=tab1; disp_buffer2=tab2; disp_buffer3=tab3; for(gsb=0;gsb4;gsb+) led=disp_buffergsb; for(jj=0;jj1; void main() /主程序 while(1) dis(); delay_50ms(10); 5.2软件调试在硬件调试完毕的基础上,需要进一步完善程序,也就是进入软件调试阶段。在本设计中,软件调试主要分三大部分即实时时钟显示子程序调试、按键子程序调试、跑秒显示子程序这几部分子程序的调试。将这三部分调试成功,那么整个设计的软件部分也就基本完成了。结 论过去人们应用时钟仅仅是为了明确当前时间。随着生产力的发展,社会的进步,生产生活对时钟的需求越来越大,对时钟的体型、功能的要求也各有不同。所以多功能电子时钟在今后的应用也会越来越广泛。基于单片机实现电子时钟,仅仅是众多方法之一。并且市场上的实时时钟日历芯片品类繁多,IC化的传感器各种各样,显示方式也愈趋于人性化。所以多功能电子时钟有多种实现方案,能够实现的功能也很多,笔者已经通过仿真和调试,实现了时间、跑秒