基于STC89C52的电子时钟设计.doc

上传人:土8路 文档编号:10080472 上传时间:2021-04-17 格式:DOC 页数:22 大小:424KB
返回 下载 相关 举报
基于STC89C52的电子时钟设计.doc_第1页
第1页 / 共22页
基于STC89C52的电子时钟设计.doc_第2页
第2页 / 共22页
基于STC89C52的电子时钟设计.doc_第3页
第3页 / 共22页
基于STC89C52的电子时钟设计.doc_第4页
第4页 / 共22页
基于STC89C52的电子时钟设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《基于STC89C52的电子时钟设计.doc》由会员分享,可在线阅读,更多相关《基于STC89C52的电子时钟设计.doc(22页珍藏版)》请在三一文库上搜索。

1、目目 录录 1.1.前言前言.1 2.2.整体设计整体设计方方案案.2 3.3.硬件设硬件设计计方案方案.2 3.13.1 复位电路复位电路.2 3.23.2 晶振电路晶振电路.3 3.33.3 LEDLED 显示电路显示电路.4 3.43.4 按键输入电路按键输入电路.4 3.53.5 蜂鸣器电路蜂鸣器电路.5 4.4.软件设计方案软件设计方案.6 4.14.1 软件设计方法软件设计方法.6 4.24.2 系统软件设计思想系统软件设计思想.6 4.34.3 系统主程序系统主程序.7 4.44.4 中断子程序中断子程序.7 4.4.14.4.1 定时定时器器 T0T0 的中断程序设计的中断程序

2、设计.8 4.4.24.4.2 定时器定时器 T1T1 的中断程序设计的中断程序设计.8 4.54.5 按键扫描子程序按键扫描子程序.10 4.64.6 调时、分、秒子程序调时、分、秒子程序.10 4.74.7 调节闹钟子程序调节闹钟子程序.11 5.5.调试与功能说明调试与功能说明.12 5.15.1 硬盘调试硬盘调试.13 5.25.2 系统性能测试与功能说明系统性能测试与功能说明.13 5.35.3 系统时钟误差分析系统时钟误差分析.13 5.45.4 软件调试问题及解决软件调试问题及解决.13 6.6.设计总结设计总结.13 参考文献参考文献.14 附录附录 1 1:多功能电子时钟原理

3、图:多功能电子时钟原理图.15 附录附录 2 2:C C 语言源程序语言源程序.16 1.1.前言前言 20 世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了 社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也 使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说 总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情, 当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可 能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着 CMOS 化、低功 耗、小体积、大容量

4、、高性能、低价格和外围电路内装化等几个方面发展。下面是单 片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制 系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在 已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技 术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒 计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更 更长的使用寿命,因此得到了广泛的使用。 数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车 站, 码头办

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

6、由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性 能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。 2.2.整体设计方案整体设计方案 多功能电子时钟的功能的电路具有实现显示时、分、秒,以(24 小时)计时方式 的功能;具有快速校准时、分、秒的其本功能;秒表/时钟功能的转换;具有整点报时 的功能;还可以实现对时间的调整。由单片机、复位、时钟电路、晶振、LED 数码管、 按键、蜂鸣器组成。 复位电路 时钟电路 电源电路 AT89C51 LED 数码管显示电路 按键输入电路 蜂鸣器电路 图 1 时钟电路框图 3.3.硬件设计方案硬件设计方案 3.1 复位

7、电路 单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按 钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境 干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。 单片机在启动时都需要复位,以使 CPU 及系统各部件处于确定的初始状态,并从 初态开始工作。89 系列单片机的复位信号是从 RST 引脚输入到芯片内的施密特触发器 中的。当系统处于正常工作状态时,且振荡器稳定后,如果 RST 引脚上有一个高电平 并维持 2 个机器周期(24 个振荡周期)以上,则 CPU 就可以响应并将系统复位。 单片机系统的复位方式有:手动按钮复位和上电复位。

8、本课程设计采用手动按键 复位。 手动按钮复位需要人为在复位输入端 RST 上加入高电平(图(3)) 。一般采用的办 法是在 RST 端和正电源 Vcc 之间接一个按钮。当人为按下按钮时,则 Vcc 的+5V 电平就 会直接加到 RST 端。手动按钮复位的电路如图所示。由于人的动作再快也会使按钮保 持接通达数十毫秒,所以,完全能够满足复位的时间要求。 图 2 复位电路 3.2 晶振电路 51 单片机最小系统晶振 Y1 也可以采用 6MHz 或者 11.0592MHz,在正常工作的情况 下可以采用更高频率的晶振,51 单片机最小系统晶振的振荡频率直接影响单片机的处 理速度,频率越大处理速度越快。

9、单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器, 他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高, 那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的 时钟频率。 单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振, 便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整 频率的方法保持同步。 图 3 晶振电路 3.3 LED 显示电路 LED 显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每 个数码管的段选必须接一个 8 位数据线来保持显示的字形码。当送入一次字

10、形码后, 显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用 CPU 时间少, 显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。动态显示的特点是将所 有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采 用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选, 利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。 动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路 中的。 一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段 选线连在一起,而各自的公共端称为位选线。显示时,

11、都从段选线送入字符编码,而 选中哪个位选线,那个数码管便会被点亮。 图 4 LED 显示电路 3.4 按键输入电路 独立式按键采用每个按键单独占有一个 I/O 口的结构,这是最简单的键盘输入设 计。当按下和释放按键时,输入到 I/O 口端的电平是不一样的,单片机程序根据不同 端口的电平变化判断是否有键按下以及是哪一个键被按下。独立式键盘的原理简单, 每个按键的电路是独立的,占用一条数据线。这种接法占用硬盘资源大,适合该课程 设计的电子时钟电路。 图 5 独立按键 3.5 蜂鸣器电路 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、 打印机、复印机、报警器、电子玩具、汽车

12、电子设备、电话机、定时器等电子产品中 作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 压电式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共 鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体 管或集成电路构成。当接通电源后(1.515V 直流工作电压),多谐振荡器起振,输出 1.52.5kHZ 的音频信号,阻抗匹配器推动压电蜂鸣片发声。 压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电 极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。电磁式蜂鸣器由振荡器、 电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振

13、荡器产生的音频信号电流 通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周 期性地振动发声。 图 6 蜂鸣器电路 4.4.软件设计方案软件设计方案 4.1 软件设计方法 系统的软件设计也是工具系统功能的设计。单片机软件的设计主要包括执行软件 的设计和监控软件的设计。单片机的软件设计通常要考虑以下几个方面的问题: 根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体 结构,使软件开发清晰、简洁和流程合理; 培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便于调 试、链接,又便于移植和修改; 建立正确的数学模型,通过仿真提高系统的性能,

14、并选取合适的参数; 绘制程序流程图; 合理分配系统资源; 为程序加入注释,提高可读性,实施软件工程; 注意软件的抗干扰设计,提高系统的可靠性。 4.2 系统软件设计思想 本系软件设计中,利用单片机定时器设计时间计时处理,采用单片机内部的 T0 定 时器溢出中断来实现,工作在 T0 方式下,定时 250 微妙,则连续中断 4000 次即为一 秒,得到了我们所需时间的最小单位 该设计用 C51 编写程序,由于汇编语言的移植性比较差,而 C 语言则比较灵活。 许多子函数都可以直接移植过去。在程序中除了有主函数外还包含许多子函数,如延 时函数、按键扫描函数、初始化函数、时间显示函数、设定闹钟显示函数、

15、调时、分、 秒函数、功能切换函数、秒表功能函数。 4.3 系统主程序 在主控程序循环中主要工作为扫描是否有按键,若有按健则做相应的功能处理, 同时也扫描显示器显示时间数据,并检查所设置的时间是否到了。时间计时处理程序 是等过了 1s 后,则更新时间数据,将最新的时、分、秒的数据转换为数字数据并显示 在八段数码管上。 开始 蜂鸣器初始化 数码管显示初始化 按键输入初始化 定时器 T0、T1 初始化 开中断开关,允 许 T0、T1 中断 调用时钟显示程序 调用按键扫描程序 等待中断 启动 T0、T1 定义计数变量和状态变量 图 7 系统主程序流程图 4.4 中断子程序 中断子程序的主要功能:提供时

16、间基准和快速按键调时功能。 4.4.1 定时器 T0 的中断程序设计 定时器 T0 中断提供时间基准。当 T0 连续中断 4000 次时,即为一秒,此时秒加一; 当秒值为 60 时,分钟加一,同时秒清零;当分钟值为 60 时,小时加一,同时分钟值清 零;当小时为 24 时,小时清零。 计数变量清零 秒加 1 分加 1 秒清零 小时加 1 且分清零 小时清零 计数到 4000 否? 秒 =60 否? 分 =60 否? 小时=24 否? 开始 Y N Y Y Y N N N 返回 计数变量加 1 图 8 T0 中断程序流程图 4.4.2 定时器 T1 的中断程序设计 当 T1 中断 500 次时,

17、检测一次选择按键 S3,如果按键按下,检测时间加减按键, 对应按键按下则执行对应的操作,选择按键可选择调时、调分、调秒以及让时间加减 按键失效这四种功能,这样可以达到迅速校准时间的作用。 计数变量 1 加 1 延时去抖动 状态变量 m 加 1 m=1m=2m=3m=4 调秒 程序 调分 程序 调时 程序 变量 清零 计数变量 1 清零 按键 S3 按下否? 按键 S3 按下否? 计数到 500 否? N N N Y Y Y 计数变量 2 加 1 秒表低位加 1,计数变量 2 清零 秒表高位加 1 低位清零 秒表高位清零 计数到 400 否? 低位=9999 否? 高位=9999 否? N N

18、N Y Y Y 开始 Y flag = 1 否? 中断返回 N 图 9 T1 中断程序流程图 4.5 按键扫描子程序 按键扫描子程序是程序计中相当重要的一部分。按键扫描子程序的功能是:扫描 S4 键是否按下,若 S4 键按下,则执行相应功能。标志变量 flag 的初值设为 1,当按下 S4 键时,标志变量 flag 值加 1,对应切换至所设置的功能。具体切换任务:flag 值为 1 时可以显示时钟并对时间进行校准,当 flag 值为 2 时,切换至秒表功能;当 flag 值 为 3 时,切换至闹钟设置功能;当 flag 值为 4 时,flag 值返回 1,回到时钟显示并可以 调时。 开始 N

19、S4 键是否按下? Y 返回 延时去抖动 S4 键是否按下? Y N 状态变量 flag 加 1 图 10 按键扫描程序流程图 4.6 调时、分、秒子程序 当选择按键状态选择到调秒时,相应的按下 S2 即对秒进行加 1 运算,当秒到加到 60 时,秒清零;按下 S1 即对秒进行减 1 运算,当减到零时,秒等于 59。选择按键切 换时,对应的键可以调分和小时。调分和调时子程序和调秒子程序类似。 开始 Y 延时去抖动 S2 按键按下否? S2 按键按下否? 延时去抖动 Y N N 秒加 1 Y 秒减 1 Y 秒 =60? 秒清零 Y 秒 0 时表示电子钟秒单元数值刷新滞后,即走 时误差为“慢” ;

20、反之,S0 表示秒单元数值的刷新超前,即走时误差为“快” 。 本次设计的单片机电子钟系统中,其误差主要来源包括晶体频率误差,定时器溢 出误差,延迟误差。晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差, 本应这一秒溢出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造 成与基准时间产生偏差,造成走时误差。 5.4 软件调试问题及解决 软件程序的调试一般可以将重点放在分模块调试上,统调是最后一环。软件调试 可以采取离线调试和在线调试两种方式。本次课题,Keil 软件来调试程序,通过各个 模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。 6.6.设计总结设计总结 我在

21、这一次单片机最小系统的设计过程中,很是受益匪浅。通过对自己在大学二 年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对课程设计的思考及书 面表达能力。这为自己今后进一步深化学习,积累了一定宝贵的经验。撰写报告的过 程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析 和解决一个理论问题或实际问题,把知识转化为能力的实际训练。培养了我运用所学 知识解决实际问题的能力。 通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整 合,理论知识服务于教学实践,以增强自己的动手能力。这个实验十分有意义 我获得 很深刻的经验。通过这次课程设计,我们知道了理论和实际

22、的距离,也知道了理论和 实际想结合的重要性, ,也从中得知了很多书本上无法得知的知识。 我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还 要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专 家,通过自己的手来解决问题比用脑子解决问题更加深刻。学习就应该采取理论与实 践结合的方式,理论的问题,也就是实践性的课题。这种做法既有助于完成理论知识 的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。 参考文献参考文献 1 李群芳,肖看,张士军单片机微型计算机与技术接口电子工业出版社, 1997.12.125-133 2 彭为,黄科,

23、雷道仲单片机典型系统设计实例讲解电子工业出版社,2002.125- 133 3 何立民MCS-51 单片机应用系统设计北京航空航天大学出版社,1995.99-112 4 杨刚,周群电子系统设计与实践电子工业出版社,1998.79-102 5 张毅刚单片机原理及应用高等教育出版社,1999.125-143 6 张毅刚MCS-51 单片机应用设计哈尔滨工业大学出版社,1994.125-133 7 张富C 及 C+程序设计(第 3 版)人民邮电出版社,1998.79-112 8 李华MCS-51 系列单片机使用接口技术北京航空航天大学出版社,2005.7.115- 123 9 李广弟单片机基础北京航

24、空航天大学出版社,1998.95-123 附录附录 1 1:多功能电子时钟原理图:多功能电子时钟原理图 附录附录 2 2:C C 语言源程序语言源程序 #include #define uchar unsigned char #define uint unsigned int #define key P3 uchar code wei=0 x7f,0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe; uchar code duan=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xbf;

25、 uchar num1 = 0,0,10,0,0,10,0,0; uchar num2 = 0,0,0,0,0,0,0,0; uchar sec=55,min=59,hou=23; uchar sec_1 = 0,min_1 = 1,hou_1 = 0; uint sec1 = 0,sec2 = 0; int count1 = 0,count2=0,cnt = 0,cnt2 = 0; uchar flag = 1,flag2 = 0; uchar m; void delay(uint x) uint a,b; for(a=0;ax;a+) for(b=0;b= 60) sec = 0; if(

26、key = 0 xfe) if(sec = 0) sec = 60;sec-; if(m = 2) if(key = 0 xfd) min+; if(min = 60) min = 0;hou+; if(hou=24) hou = 0; if(key = 0 xfe) if(min = 0 ) min = 60;min-; if(m = 3) if(key = 0 xfd) hou+; if(hou = 24) hou = 0; if(key = 0 xfe) if(hou = 0) hou = 24;hou-; if(m = 4) m=0; void key_scan2() uchar x;

27、 if(P3_3 = 0) delay(10);if(P3_3 = 0) flag+;TR1 = 0;sec1=0;sec2=0; while(P3_3 = 0) for(x = 0;x = 60) sec_1 = 0; while(key = 0 xfd); if(key = 0 xfe) if(sec_1 = 0) sec_1 = 60; sec_1-; while(key = 0 xfe); if(flag2 = 2) if(key = 0 xfd) min_1+; if(min_1 = 60) min_1 = 0;hou_1+; if(hou_1=24) hou_1 = 0;while

28、(key = 0 xfd); if(key = 0 xfe) if(min_1 = 0 ) min_1 = 60; min_1-; while(key = 0 xfe); if(flag2 = 3) if(key = 0 xfd) hou_1+; if(hou_1 = 24) hou_1 = 0; while(key = 0 xfd); if(key = 0 xfe) if(hou_1 = 0) hou_1 = 24; hou_1-; while(key = 0 xfe); if(flag2 = 4) flag2=0; void fmq() if(sec = sec_1) delay(5000

29、);P1_0 = 1; if(min = 0)delay(1000);P1_0 = 1; void main() uchar x; P1_0 = 1;P0 = 0 xff;P2 = 0 xff; P3 = 0 xff;TMOD = 0 x22;TL0 = 6; TH0 = TL0;TL1 = 6;TH1 = TL1; EA = 1;ET0 = 1;ET1 = 1;TR0 = 1;TR1 = 1; while(1) for(x = 0;x = 60) sec = 0; min+; if(min = 60) min = 0;hou+; if(hou = 24) hou = 0; void T1way2(void) interrupt 3 cnt+;count2+; if(cnt = 500) key_scan1(); cnt = 0; if(count2=400) sec1+; if(sec1=9999) sec2+; if(sec2=9999) sec2=0; count2=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1