收藏 分销(赏)

多功能电子钟[1][1]柳龙龙.docx

上传人:xrp****65 文档编号:6253717 上传时间:2024-12-03 格式:DOCX 页数:51 大小:524.29KB 下载积分:10 金币
下载 相关 举报
多功能电子钟[1][1]柳龙龙.docx_第1页
第1页 / 共51页
多功能电子钟[1][1]柳龙龙.docx_第2页
第2页 / 共51页


点击查看更多>>
资源描述
阳泉职业技术学院 毕 业 论 文 毕业生姓名 : 柳龙龙 专业 : 电气自动化技术 学号 : 080723047 指导教师 刘辉 所属系(部) : 信息系 二〇一一年五月 阳泉职业技术学院 毕业论文评阅书 题目:单片机实现电子钟电路设计                            信息 系   电气自动化技术 专业 姓名 柳龙龙 设计时间:2011年3月7日~2011年5月8日 评阅意见: 成绩 指导教师:     (签字) 职  务:       年 月 日 阳泉职业技术学院 毕业论文答辩记录卡 信息 系 电气自动化技术  专业 姓名 柳龙龙   答 辩 内 容 问 题 摘 要 评 议 情 况 记录员: (签名) 成 绩 评 定 指导教师评定成绩 答辩组评定成绩 综合成绩 注:评定成绩为100分制,指导教师为30%,答辩组为70%。 专业答辩组组长:     (签名) 年 月 日           前 言 电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。 本设计主要为实现一款可正常显示时钟、带有定时闹铃的多功能电子时钟。 本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。本设计应用AT89C51芯片作为核心,7位LED数码管显示,使用DS1302实时时钟芯片完成时钟的基本功能,这种实现方法的优点是电路简单,性能可靠,实时性好,时间精度高,操作简单,编程容易。 该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。 目 录 前 言 III 第一章 引 言 1 1.1 多功能电子时钟研究的背景和意义 1 1.2 电子时钟的功能 2 第二章 电子时钟设计方案分析 3 1.3 FPGA设计方案 3 1.4 NE555时基电路设计方案 4 1.5 单片机设计方案 5 第三章 基于单片机的电子时钟硬件设计 6 1.6 主要IC芯片选择 6 1.6.1 微处理器选择 6 1.7 电子时钟硬件电路设计 8 1.7.1 时钟电路设计 8 1.7.2 显示电路 8 1.7.3 按键电路设计 10 1.7.4 闹铃电路设计 11 1.7.5复位电路设计 13 第四章 电子时钟软件设计 16 1.8 主程序设计 16 1.9 子程序设计 17 1.9.1 实时时钟子程序设计 17 1.9.2 显示子程序设计 17 1.9.3 键盘扫描子程序 18 1.9.4 闹铃子程序设计 18 第五章 系统调试 23 1.10 硬件调试 24 1.10.1 单片机基础电路调试 24 1.10.2 显示电路调试 25 1.11 软件调试 28 结 论 29 参考文献 30 附录A 程序 31 附录B 多功能电子时钟元器件一览表 55 附录C 多功能电子时钟硬件原理图 56 致 谢 57 第一章 引 言 时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。从古代的水漏、十二天干地支,到后来的机械钟表以及当今的石英钟,都充分显现出了时间的重要,同时也代表着科技的进步。致力于计时器的研究和充分发挥时钟的作用,将有着重要的意义。 一.1 多功能电子时钟研究的背景和意义 20世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透到了社会的各个领域,有力的推动和提高了社会生产力的发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂容易使人忘记当前的时间。然而遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成很大麻烦。平时我们要求上班准时,约会或召开会议必然要提及时间;火车要准点到达,航班要准点起飞;工业生产中,很多环节都需要用时间来确定工序替换时刻。所以说能随时准确的知道时间并利用时间,是我们生活和工作中必不可少的。 想知道时间,手表当然是一个很好的选择,但是,在忙碌当中,我们还需要一个“助理” 及时的给我们提醒时间。所以,计时器最好能够拥有一个定时系统,随时提醒容易忘记时间的人。 最早能够定时、报时的时钟属于机械式钟表,但这种时钟受到机械结构、动力和体积的限制,在功能、性能以及造价上都没办法与电子时钟相比。 电子钟是采用电子电路实现对时、分、秒进行数字显示的计时装置,广泛应用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 一.2 电子时钟的功能 电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时间精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。当今市场上的电子时钟品类繁多,外形小巧别致。也有体型较大的,诸如公共场所的大型电子报时器等。电子时钟首先是数字化了的时间显示或报时器,在此基础上,人们可以根据不同场合的要求,在时钟上加置其他功能,比如定时闹铃,万年历,环境温度、湿度检测,环境空气质量检测,秒表及USB扩展口功能等。 本设计电子时钟主要功能为: 1. 具有时间显示和手动校对功能,24小时制; 2. 具有年、月、日显示和手动校对功能; 3. 具有闹铃功能; 4. 具有贪睡功能; 5. 秒表功能。 第二章 电子时钟设计方案分析 电子闹钟既可以通过纯硬件实现,也可以通过软硬件结合实现,根据电子时钟里的核心部件——秒信号的产生原理,通常有以下三种形式: 一.3 FPGA设计方案 现场可编程门阵列(Field Programmable Gate Array,FPGA),是20世纪70年代发展起来的一种可编程逻辑器件,是目前数字系统设计的主要硬件基础。FPGA在结构上由逻辑功能块排列为阵列,并由可编程的内部连线连接这些功能块,来实现一定的逻辑功能。 可编程逻辑器件的设计过程是利用EDA开发软件和编程工具对器件进行开发的过程。由于EDA技术拥有系统的模拟和仿真功能,可读性、可重复性、可测性非常好,所以利用EDA开发FPGA是目前比较流行的方式。当然,有时根据需要,也会应用MAX+plus开发集成环境进行设计。 正因为FPGA在设计过程中方便、快捷,而且FPGA技术功能强大,能够应用其制作诸如基代码发生器、数字频率计、电子琴、电梯控制器、自动售货机控制系统、多功能波形发生器、步进电机定位控制系统、电子时钟等。 应用FPGA能够将时钟设计为为四种类型:全局时钟、门控时钟、多级逻辑时钟和波动式时钟。 一.4 NE555时基电路设计方案 555定时器是美国Signetics公司1972年研制的用于取代机械式定时器的中规模集成电路,因输入端设计有三个5KΩ的电阻而得名。目前,流行的产品主要有4种:BJT两个:555,556(含有两个555);CMOS两个:7555,7556(含有两个7555)。 555定时器是一种数字与模拟混合型的集成电路,应用广泛。成本较低,外加电阻、电容等元件就可以构成多谐振荡器、单稳电路、施密特触发器等,常作为定时器广泛应用于仪器仪表、家用电器、电子测量及自动控制等领域[5]。 采用NE555时基电路或其他振荡电路产生秒脉冲信号,作为秒加法电路的时钟信号或微处理器的外部中断输入信号,可构成电子钟。由555构成的秒脉冲发生器电路见图2.1。输出的脉冲信号V0的频率F为: 式(2.1) 可通过调节式2.1中的3个参数,使输出V0的频率为精确的1Hz。 图2.1 基于555的秒脉冲发生器 采用555定时器设计电子时钟,成本低,容易实现。但是受芯片引脚数量和功能限制,不容易实现电子时钟的多功能性。 一.5 单片机设计方案 单片机是微型机的一个主要分支,它在结构上的最大特点是把CPU、存储器、定时器和多种输入/输出接口电路集成在一块超大规模集成电路芯片上。就其组成和功能而言,一块单片机芯片就是一台计算机。 单片机具有如下特点: 有优异的性能价格比; 1 集成度高、体积小、有很高的可靠性; 2 控制功能强; 3 低功耗、低电压,便于生产便携式产品; 4 外部总线增加了I2C、SPI等串行总线方式,进一步缩小了体积,简化了结构; 5 单片机的系统扩展、系统配置较典型、规范,容易构成各种规模的应用系统。 所以单片机的应用非常广泛,在智能仪表、机电一体化、实时控制、分布式多机系统以及人们的生活中均有用武之地。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思路和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种用软件代替硬件的控制技术,是对生产控制技术的一次革命。 利用单片机的智能性,可方便地实现具有智能的电子钟设计。单片机均具有时钟振荡系统,利用系统时钟借助微处理器的定时器/计数器可实现电子钟功能。 第三章 基于单片机的电子时钟硬件设计 在比较了第二章的三种实现方案之后,考虑单片机货源充足、价格低廉,可软硬件结合使用,能够较方便的实现系统的多功能性,故采用单片机作为本设计的硬件基础。 一.6 主要IC芯片选择 一.6.1 微处理器选择 目前在单片机系统中,应用比较广泛的微处理器芯片主要为8XC5X系列单片机。该系列单片机均采用标准MCS-51内核,硬件资源相互兼容,品类齐全,功能完善,性能稳定,体积小,价格低廉,货源充足,调试和编程方便,所以应用极为广泛。 例如比较常用的AT89C2051单片机,带有2KB Flash可编程、可擦除只读存储器(E2PROM)的低压、高性能8位CMOS微型计算机。拥有15条可编程I/O引脚,2个16位定时器/计数器,6个中断源,可编程串行UART通道,并能直接驱动LED输出。 仅仅是为了完成时钟设计,应用AT89C2051单片机完全可以实现。但是将多种功能结合在一片单片机上,就需要更多的I/O引脚,故本设计采用具有32根I/O引脚的AT89C51单片机。 AT89C51单片机是一款低功耗,低电压,高性能CMOS 8位单片机,片内含4KB(可经受1000次擦写周期)的FLASH可编程可反复擦写的只读程序存储器(EPROM),器件采用CMOS工艺和ATMEI公司的高密度、非失性存储器(NU易RAM)技术制造,其输出引脚和指令系统都与MCS-51兼容。片内的FLASH存储器允许在系统内可改编程序或用常规的非易失性存储器编程器来编程。因此,AT89C51是一种功能强,灵活性高且价格合理的单片机,可方便的应用在各个控制领域[6]。 AT89C51具有以下主要性能: 1. 4KB可改编程序Flash存储器; 2. 全静态工作:0——24Hz; 3. 128×8字节内部RAM; 4. 32个外部双向输入/输出(I/O)口; 5. 6个中断优先级; 2个16位可编程定时计数器; 6. 可编程串行通道; 7. 片内时钟振荡器。 此外,AT89C51是用静态逻辑来设计的,其工作频率可下降到0Hz,并提供两种可用软件来选择的省电方式——空闲方式(Idle Mode)和掉电方式(Power Down Mode)。在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,只保存片内RAM中的内容,直到下一次硬件复位为止[8]。 图3.1 AT89C51芯片PDIP封装引脚图 一.7 电子时钟硬件电路设计 电子闹钟至少要包括秒信号发生器、时间显示电路、按键电路、供电电源、闹铃指示电路等几部分。 一.7.1 时钟电路设计 系统时钟应用了实时时钟日历芯片DS1302,其连接如图3.8。该硬件电路设计简单,抗干扰能力强。 如图,AT89C51单片机P1.7直接接DS1302的RST端,上电后,AT89C51的P1.7脚自动输出高电平。P1.5作为串行时钟接口,P1.6作为时钟数据的I/O。DS1302采用双电源供电,平时由+5V电源供电,当+5V掉电之后,由图中BT1(+3V备用电池)供电。 特别需要注意X1和X2两端连接的晶振Y1,该晶振频率为32.768KHz。 图3.8 系统时钟电路 一.7.2 显示电路 就时钟而言,通常可采用LCD显示或LED显示。对于一般的段式LCD,需要专门的驱动电路,而且LCD显示的可视性较差;对于具有驱动电路和微处理器接口的液晶显示模块(字符或点阵),一般采用并行接口,对微处理器的接口要求较高,占用资源多。另外,AT89C51本身没有专门的液晶驱动接口。LED结构简单,体积小,功耗低,响应速度快,易于匹配,寿命长,可靠性高,而且显示亮度高,价格便宜,市场上也有专门的时钟显示组合LED。故本设计中应用7位8段共阴LED实现显示部分,显示面板分布如图3.6。 LED显示分动态显示和静态显示:动态显示方式的硬件电路简单。但设计上如果处理不当,易造成亮度低,闪烁问题。因此合理的设计既应保证驱动电路易实现,又要保证图像稳定,无闪烁。动态显示采用多路复用技术的动态扫描显示方式,复用的程度不是无限增加的, 因为利用动态扫描显示使我们看到一幅稳定画面的实质是利用了人眼的暂留效应和发光二极管发光时间的长短,发光的亮度等因素。 静态显示,是由微型计算机一次输出显示模型后,就能保持该显示结果,直到下次发送新的显示模型为止。静态显示驱动程序简单,且CPU占用率低,但每个LED数码管需要一个锁存器来锁存每一个显示位的笔段代码,硬件开销大,仅适合显示位数较少的场合。为了在显示部分节省单片机I/O口,故采用静态显示方式。电路图参见图3.10。 74LS164是8位移位寄存器,应用该芯片驱动LED做显示部分,其优点在于连线简单,节省单片机I/O口,软件编程容易。 图3.10 显示面板LED分布图 一.7.3 按键电路设计 根据功能需要,本时钟需要设置以下功能键:校对选择键,加1操作键,减1操作键,显示日期键,闹铃开关键。 按照键盘与CPU的连接方式可分为独立式键盘和矩阵式键盘。独立式键盘是各个按键相互独立,每个按键占用一个I/O口线,每根I/O口线上的按键不会影响其他I/O口上按键工作状态。独立式键盘电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口,在按键数量较多时,I/O口线浪费较大,且电路结构复杂。矩阵式键盘适合按键较多时使用。由于本设计的电子钟最多需要7个按键,若采用矩阵式键盘时会有按键浪费,故采用的是独立式键盘。键盘电路如图3.11。对于内置了上拉电阻的I/O引脚来说,外接上拉电阻没有意义[15][16]。如图3.11。 图3.11 键盘电路 其中K5为带自锁按键,每次按下后,其对应的P2.7、P2.6、P2.1管脚接地,从高电平被拉至低电平。只有再次按下,按键弹出,与之连接的单片机管脚才会重新被拉回高电平。K1、K2、K3、K4键为自动复位按键。每次按下后,会自动弹出。单片机管脚只有在按键按下时为低电平,按键弹出后重新恢复高电平。按键功能参见表3.8。 表3.8 按键功能表 按键 键名 功能 属性 K1 FUN 功能选择 自动复位 K2 UP 数值加一操作 自动复位 K3 DOWN 数值减一操作 自动复位 K4 Enter/Snooze 确认键/贪睡 自动复位 K5 Alarm 闹铃开关 自锁 按键操作说明如下: K1键:该键为自动复位键,在正常显示时间状态下,第一次按下后,开始校对小时,以后每次按下都会分别进入对分、秒、闹铃时、闹铃分、年、月、日的校对状态。 K2键:该键为自动复位键,在校对状态下,每次按动该键,都会使相应校对位进行加1操作。例如:校对小时状态,每按一下,小时位加1,当加至小时最高值23时,再按K2键,小时位回0。调分、秒与皆之相同,只是各位最高值不同。 K3键:该键为自动复位键,与K2键类似,不同之处是该键每次按下将使相应校对位进行减1操作。 K4键:该键为自动复位键,在校对状态下,按下该键,从校对状态返回时间显示状态;在响铃状态下,按下该键,闹铃进入贪睡状态。 K5键:该键为带自锁按键,按下后闹铃开启,弹出后闹铃关闭。 一.7.4 闹铃电路设计 闹铃音乐可以直接采用蜂鸣器闹铃,如当前时刻与闹铃时间相同,单片机向蜂鸣器送出高电平,蜂鸣器发声。还具有整点自动报时功能时显示几蜂鸣器就响几声。采用蜂鸣器闹铃结构简单,控制方便,但是发出的闹铃声音单一。也可以在编程的时候编写一段音乐程序,待闹铃时间到时,调用该音乐程序给扬声器,便响起音乐。 还有一种方法是采用录音放音芯片1420做闹铃,先对录放音设备录入一段音乐,当到设定时间时,单片机控制录放音设备放音。采用录放音电路,铃声可以是预先设定的一段自己喜欢的音乐,符合电器设备人性化的要求。且1420芯片可以分段录音,还具有语音报时功能。 另外,也可以购置一块音乐集成电路,加置在单片机和蜂鸣器之间,当单片机连接闹铃电路的管脚送出高电平时,音乐集成电路会给蜂鸣器特定脉冲,使蜂鸣器发声。此类集成电路体积较小,使用方便,不足的是音乐简单、单一。 闹铃的音乐不是本设计中的重点,故采用最简单的方法,占用单片机一根I/O口P2.0, 中间用PNP型三极管S9012连接P2.0和蜂鸣器。当P2.0引脚为低电平时,S9012的发射极和集电极导通,使蜂鸣器发声。当响铃标志位为“1”时,P2.0送一定频率脉冲,使蜂鸣器U11发出声音[16]。如图3.12。 图3.12 闹铃电路 秒表电路设计 硬件电路的设计应从两个方面予以考虑。一是根据应用系统总体设计的参数范围、测控速度与精度等技术指标要求选择单片机。不同系列单片机或同一系列不同型号单片机芯片内部提供的资源状况各不相同,如ROM、RAM容量,定时/计数器、I/O接口、中断系统等硬件配置,应选择性价比最适合的单片机型。二是在已选定单片机型号的基础上,根据应用系统的功能要求扩展单片机外部设备的配置,如键盘、打印机、A/D、D/A、报警电路、驱动电路及通用/专用I/O接口等。 硬件电路的设计原则如下: (1)在性价比满足应用系统要求的基础上,选择更可靠、更熟悉的单片机,缩短研制周期。 (2)尽可能选择较成熟的典型应用电路,以提高系统的可靠性。 (3)单片机内部的资源与外部扩展资源应在满足应用系统设计要求的基础上留有余地,为进一步升级和扩展其功能提供方便。 (4)应充分结合软件方案统筹考虑硬件结构,通常硬件功能较完善,其相应的软件就简单,但硬件成本较高;而硬件功能略低,其相应的软件就复杂。实际中应尽量以软件替代硬件来降低成本。 (5)整个系统的相关器件应尽可能做到性能匹配,如电平、速度的匹配等。 (6)充分考虑整个系统的抗干扰设计,如选择具有抗干扰设计的单片机并充分筛选芯片与器件,在电路中采取隔离和屏蔽措施等。 根据以上设计原则,选择较熟悉的MCS-51系列单片机中具有内部程序存储器的89C51单片机;为实现LED数码显示和键盘控制,直接将开关键盘接到单片机的P3.7口,是单片机直接控制开关, 其中:按第一次,定时器启动,即数码管开始显示数。按第二次,定时器停止,即数码管上显示的数停止,显示当前的秒数。按第三次,使数码管上的数复位。 1.7.5复位电路设计 复位是单片机的初始化操作,以便使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。除了进入系统的正常初始化之外,当单片机系统在运行出错或操作错误使系统处于死锁状态时,也可按复位键重新启动。 复位后,PC内容初始化为0000H,使单片机从0000H单元开始执行程序。单片机复位后,除了PC之外,还对片内的特殊功能寄存器有影响,它们的复位状态如表3.9所示。单片机复位后不影响内部RAM的状态[17]。89C51单片机复位信号的输入端是RST引脚,高电平有效。其有效时间持续24个时钟周期(2个机器周期)以上。 RST端的外部复位电路有两种操作方式:上电自动复位和按键手动复位。 上电自动复位是利用电容储电来实现的,如图3.13(a)所示。上电瞬间,RC电路充电,RST端出现正脉冲,随着充电电流的减少,RST的电位逐渐下降。按键手动复位有电平方式和脉冲方式两种。按键电平复位是相当于RST端通过电阻接高电平,如图3.13(b)所示;按键脉冲复位,利用RC微分电路产生正脉冲,如图3.13(c)所示[12]。 出于应用方便,本设计采用按键电平复位电路。实际电路请参见附C 表3.9 单片机寄存器的复位状态表 寄存器 复位状态 寄存器 复位状态 PC 0000H TCON 00H ACC 00H TH0 00H PSW 00H TL0 00H SP 07H TH1 00H DPTR 0000H TL1 00H P1、P3 FFH SCON 00H IP ××000000B SBUF 不定 IE 0××00000B PCON 0×××××××B(NMOS) TMOD 00H 0×××0000B(CHMOS) 图3.13 上电复位和按键复位电路 第四章 电子时钟软件设计 C51单片机可以应用汇编语言和C语言进行编程。,汇编语言与机器指令一一对应所以用汇编语言编写的程序在单片机里运行起来效率较高。C语言程序可读性高,更便于理解。 一.8 主程序设计 第一次上电,系统先进行初始化, LED显示初始时间“00:00:00”,并开始走时。 单片机依次开始调用键盘扫描子程序、闹铃子程序,经过延时,返回程序开头循环运行。 主程序流程图如图4.1。 图4.1 多功能电子钟主程序流程图 一.9 子程序设计 一.9.1 实时时钟子程序设计 该程序主要实现对充电,对时、分、秒等寄存器的读写操作。在读写操作子程序中都执行了关中断指令,因为在串行通信时对时序要求比较高,而且在此是用I/O口软件模拟串行时钟脉冲,所以在通信过程中最好保证传输的连续性,不要允许中断。其流程图如图4.2。 图4.2 实时时钟子程序流程图 源程序见附录A。 一.9.2 显示子程序设计 用74LS164驱动LED数码管静态显示电路,编程也很容易。只要将需要显示的数字编辑成对应的BCD码,逐位送入74LS164的A、B串行输入端,数码管将正常显示。关键之处是要实现根据键值显示不同的数字。 为了方便实现按键显示,程序中调用的都是各个标志位,通过判断标志位的“真”、“假”来决定显示的内容。显示子程序流程图参见图4.4。源程序见附录A。 一.9.3 键盘扫描子程序 单片机对键盘扫描的方法有随机扫描方式、定时扫描方式和中断扫描方式。 在随机扫描方式中,CPU完成某特定任务后,即执行键盘扫描程序,以确定键盘有无按键输入,然后根据按键功能转去执行相应的操作。在执行键盘按键规定的功能中不理睬键盘输入。 定时扫描方式与随机扫描方式基本相同,只是利用CPU内的定时中断,每隔一定时间扫描有无按键被按下,键盘反应速度较快,在处理按键功能过程中,可以通过键盘命令进行干预,如取消、暂停等操作。 前两种扫描方式均会占用CPU大量时间。不管有没有键入操作,CPU总要在一定的时间内进行扫描,这对于单片机控制系统是很不利的[16]。 由于本设计中AT89C51单片机在系统中的主要任务是接受DS1302和DS18B20的数据并送出显示,完成时钟校对和日期显示控制。89C51单片机完全有能力完成以上工作,所以采用随机扫描键盘方式,系统也能够正常运行。程序流程如图4.5。 单片机扫描完键盘,得到键值,并根据键值转入执行对应任务,以实现按键功能。如果没有按键按下,则程序扫描到Key=FFH,将键值Key清零,返回主程序。 源程序见附录A。 一.9.4 闹铃子程序设计 闹铃子程序最主要的任务是不断用时钟分(min)与时(hour)同设定的闹铃分(clk_min)与闹铃时(clk_hour)比较,只要满足min等于clk_min、hour等于clk_hour,响铃启动5分钟,并根据外部按键执行相应贪睡任务。该程序流程图参见图4.6。源程序见附录A。 图4.4 显示子程序流程图 图4.5键盘扫描子程序 图4.6 闹铃子程序流程图 3.2.5 秒表子程序 选用定时/计数器T0,定时方式1工作,每隔50ms溢出中断一次。 秒表子程序流程图4.7 第五章 系统调试 调试工作分硬件调试和软件调试两部分,调试方法介绍如下: 首先,硬件调试主要是先搭建硬件平台,然后利用万用表等工具对电路检查,最后应用程序进行功能调试。硬件调试比较费时,需要细心和耐心,也需要熟练掌握电路原理。 然后,可以直接应用一些编辑或仿真软件进行软件调试,比如单片机C51编辑软件Keil。该软件提供了一个集成开发环境uVision,它包括C编辑器、宏编辑器、连接器、库管理和一个功能强大的仿真调试器。通过编译、运行,可以检查程序错误。但应用此方法,仍需要十分了解所使用元器件的工作方式和管脚连接方式。在软件调试过程中要仔细耐心,即便是多写或少些一两个字符,都无法编译成功。而有时往往在Keil中编译、运行无错,但烧录到单片机中运行起来就会出错,很可能是编程时管脚或时序编辑得不对。 还有一种方式,即应用仿真软件搭建电路的软件平台,再导入程序进行仿真调试。如果电路出错,可以在计算机上方便的修改电路,程序出错可以重新编辑程序,这种方法节时、省力,经济、方便。 总之,调试过程是一个软硬件相结合调试的过程,硬件电路是基础,软件是检测硬件电路和实现其功能的关键[13]。 在调试过程中,首先必须明确调试顺序。例如:本设计是在单片机系统基础上建立起来的,所以必须先确定单片机基础电路能否正常工作。为了正确显示时间,接下来还要确定显示电路能否正常工作。硬件调试的过程,也是软件调试的过程。 然后,要准备好调试的工具。硬件调试需要万用表、示波器等,软件调试一般需要诸如Keil等仿真编辑器。 一.10 硬件调试 一.10.1 单片机基础电路调试 单片机基础电路包括电源、单片机、外部时钟震荡电路、复位电路和外部接口电路。调试过程需要注意以下几点: 1. 检查电源是否完好。 2. 单片机电源要连接正确,并且保证AT89C51的31号引脚接高电平。AT89C51的31号引脚是外部程序存储器选择信号端,当该引脚为高电平时,单片机会一直从片内程序存储器内取指令。 3. 如果使用P0口做I/O口,要接上拉电阻。 4. 使用万用表排查电路中是否存在断路或者短路情况。笔者在制作外部接口电路时使用的是排针,焊接时容易出现管脚之间短路,所以在上电以前必须先排查电路。 5. 编辑一个使一组发光二极管循环点亮的程序并烧录到单片机内,上电运行,检查单片机是否正常工作,复位电路是否正确。 笔者编辑了使一组P1口点亮8个发光二极管循环点亮的程序,程序代码如下: #include <reg51.h> void delay(void) //延时子程序 { Unsigned char i, j,k; //延时时间根据变量i,j,k不同而改变 for(i=50;i>0;i--) for(j=50;j>0;j--) for(k=250;k>0;i--); } void main() { unsigned int n; unsigned char code ledp[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; while(1) { P1=0xFFH; //初始化P1口 for(n=0;n<8;n++) {P1=ledp[n]; delay(); }}} 一.10.2 显示电路调试 本设计的显示电路使用了共阴LED和74LS164。在连接显示电路之前要明确共阴型8段LED的10个管脚与各段发光二极管的对应关系,熟悉74LS164管脚位置,然后才能开始进行连接[19]。在连接过程中,需要注意以下几点: 1. LED数码管各管脚与74LS164各管脚的对应关系要十分清楚,所有LED数码管与74LS164的连接方式要统一。 2. 因为是移位显示,所以需要注意前一位74LS164的QH脚要与下一位74LS164的A、B脚连接。 3. 明确单片机管脚功能。本设计定义了P1.0连接74LS164的A、B脚,P1.1连接74LS164的CLK脚。 4. 74LS164的CLR脚接高电平。 5. 编写一段显示程序,烧录进单片机,检查好电源正负端和P1.0、P1.1连接是否正确。检查无误后上电,检查显示电路是否正确。 以下是一段显示程序:上电后,7位数码管分别显示0~6。 #include "reg51.h" #define uint unsigned int #define uchar unsigned char void dis(); void sendbyte(); sbit DAT=P1^0; sbit CLK=P1^1; uchar disp_buffer[7]; unsigned char tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f }; void delay_50ms(unsigned int t) //延时子程序 { unsigned int j; for(;t>0;t--) for(j=6245;j>0;j--) {;} } void dis() //显示子程序,0~6 { unsigned char gsb,led,led1,jj; disp_buffer[0]=tab[0]; disp_buffer[1]=tab[1]; disp_buffer[2]=tab[2]; disp_buffer[3]=tab[3]; disp_buffer[4]=tab[4]; disp_buffer[5]=tab[5]; disp_buffer[6]=tab[6]; for(gsb=0;gsb<7;gsb++) { led=disp_buffer[gsb]; for(jj=0;jj<8;jj++) { led1=led&0x1; if (led1==0x1) DAT=1; else DAT=0; CLK=0;CLK=1; led=led>>1; }}} void main() //主程序 { while(1) { dis(); delay_50ms(10); 一.11 软件调试 在硬件调试完毕的基础上,需要进一步完善程序,也就是进入软件调试阶段。在本设计中,软件调试主要分为:实时时钟子程序调试、按键子程序调试。 键盘子程序调试 依据设计要求,键盘子程序需要完成对时间的校对、日期的显示和闹铃的开关。为了便于显示子程序和闹铃子程序的调用。例如: If(K7==0) { alarm_flag= true; } 在调用闹铃子程序时,闹铃标志位为“1”,则开启闹铃,否则关闭闹铃。源程序见附录A。 窗体底端 结 论 过去人们应用时钟仅仅是为了明确当前时间。随着生产力的发展,社会的进步,生产生活对时钟的需求越来越大,对时钟的体型、功能的要求也各有不同。所以多功能电子时钟在今后的应用也会越来越广泛。 基于单片机实现电子时钟,仅仅是众多方法之一。并且市场上的实时时钟日历芯片品类繁多,IC化的传感器各种各样,显示方式也愈趋于人性化。所以多功能电子时钟有多种实现方案,能够实现的功能也很多,如时间显示和校对、闹铃等功能。本文采用51单片机C语言进行编程,当然也可以应用汇编语言编程。由于能力有限,提供的程序还可以进一步优化,并且还可以根据需求为电子时钟增设新功能。 参考文献 1. 向继文等.基于AT89C51的电子钟系统设计[J],机电产片开发与创新,2007年第2期 2. 余锡存. 单片机原理及接口技术[M]。 西安电子科技大学出版社,2000 3. 冯育长. 单片机系统设计与实例分析[M],西安:西安电子科技大学出版社,2007.5 4. 李及,赵利民.MCS-51系列单片机原理与应用[M].长春:吉林科学技术社,1995. 5. 潘永雄.单片机原理与应用[M],西安:西安电子科技大学出版社,2003.2. 6. 彭小军. 用单片机实现电子时钟[J].新余高专学报,2004年4月第9卷第2期 7.刘军等.单片机原理与接口技术[M],上海:华东理工大学出版社,2006.2. 8.贾好来。.MCS-51单片机原理及应用[M], 北京: 机械工业出版社,2006. 附录A 程序 程序A.1 主程序 //主程序的功能是对子程序进行调用,并设定显示延时时间 #include "reg51.h" //头文件; #include "typedef.h" #include "lcd.h" #include "key.h" #include "alarm_clock.h" #include "ds1302.h" sbit DAT=P1^0; //74LS164的A、B脚接单片机P1.0; sbit CLK=P1^1; //74LS164的CLOCK脚接单片机P1.1; sbit FUN=P2^1
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服