基于STC89C52的电子时钟设计

上传人:沈*** 文档编号:135592898 上传时间:2022-08-15 格式:DOC 页数:22 大小:424KB
收藏 版权申诉 举报 下载
基于STC89C52的电子时钟设计_第1页
第1页 / 共22页
基于STC89C52的电子时钟设计_第2页
第2页 / 共22页
基于STC89C52的电子时钟设计_第3页
第3页 / 共22页
资源描述:

《基于STC89C52的电子时钟设计》由会员分享,可在线阅读,更多相关《基于STC89C52的电子时钟设计(22页珍藏版)》请在装配图网上搜索。

1、目 录1.前言12.整体设计方案23.硬件设计方案23.1 复位电路23.2 晶振电路33.3 LED显示电路43.4 按键输入电路43.5 蜂鸣器电路54.软件设计方案64.1 软件设计方法64.2 系统软件设计思想64.3 系统主程序74.4 中断子程序74.4.1 定时器T0的中断程序设计84.4.2 定时器T1的中断程序设计84.5 按键扫描子程序104.6 调时、分、秒子程序104.7 调节闹钟子程序115.调试与功能说明125.1 硬盘调试135.2 系统性能测试与功能说明135.3 系统时钟误差分析135.4 软件调试问题及解决136.设计总结13参考文献14附录1:多功能电子时

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

3、片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应

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

5、自动报时及自动控制等各个领域。 2.整体设计方案多功能电子时钟的功能的电路具有实现显示时、分、秒,以(24小时)计时方式的功能;具有快速校准时、分、秒的其本功能;秒表/时钟功能的转换;具有整点报时的功能;还可以实现对时间的调整。由单片机、复位、时钟电路、晶振、LED数码管、按键、蜂鸣器组成。复位电路时钟电路电源电路AT89C51LED数码管显示电路按键输入电路蜂鸣器电路图1 时钟电路框图3.硬件设计方案3.1 复位电路单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按

6、钮内部的程序自动从头开始执行。 单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。本课程设计采用手动按键复位。 手动按钮复位需要人为在复位输入端RST上加入高电平(图(3))。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动按钮复

7、位的电路如图所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。图2 复位电路3.2 晶振电路51单片机最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。单片机晶振的作用是为系统提供基本的时钟信号。通常一

8、个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。图3 晶振电路3.3 LED显示电路LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用

9、发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。图4 LED显示电路3.4 按键输入电路独立式按键采用每个按键单独占有一个I/O口的结构,这是最简单的键盘输入设计。当按下和释放按键时,输入到I/O口端的电平是不一样的,单片机程序根据不同端口的电平变化判断是否有键按下以及是哪一个键被按下。独立式键盘的原理简单,每个按

10、键的电路是独立的,占用一条数据线。这种接法占用硬盘资源大,适合该课程设计的电子时钟电路。图5 独立按键3.5 蜂鸣器电路蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。压电式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.515V直流工作电压),多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电

11、蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。图6 蜂鸣器电路4.软件设计方案4.1 软件设计方法系统的软件设计也是工具系统功能的设计。单片机软件的设计主要包括执行软件的设计和监控软件的设计。单片机的软件设计通常要考虑以下几个方面的问题:l 根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软

12、件开发清晰、简洁和流程合理;l 培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便于调试、链接,又便于移植和修改;l 建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;l 绘制程序流程图;l 合理分配系统资源;l 为程序加入注释,提高可读性,实施软件工程;l 注意软件的抗干扰设计,提高系统的可靠性。4.2 系统软件设计思想本系软件设计中,利用单片机定时器设计时间计时处理,采用单片机内部的T0定时器溢出中断来实现,工作在T0方式下,定时250微妙,则连续中断4000次即为一秒,得到了我们所需时间的最小单位该设计用C51编写程序,由于汇编语言的移植性比较差,而C语言则

13、比较灵活。许多子函数都可以直接移植过去。在程序中除了有主函数外还包含许多子函数,如延时函数、按键扫描函数、初始化函数、时间显示函数、设定闹钟显示函数、调时、分、秒函数、功能切换函数、秒表功能函数。4.3 系统主程序在主控程序循环中主要工作为扫描是否有按键,若有按健则做相应的功能处理,同时也扫描显示器显示时间数据,并检查所设置的时间是否到了。时间计时处理程序是等过了1s后,则更新时间数据,将最新的时、分、秒的数据转换为数字数据并显示在八段数码管上。开始蜂鸣器初始化数码管显示初始化按键输入初始化定时器T0、T1初始化开中断开关,允许T0、T1中断调用时钟显示程序调用按键扫描程序等待中断启动T0、T

14、1定义计数变量和状态变量图7 系统主程序流程图4.4 中断子程序中断子程序的主要功能:提供时间基准和快速按键调时功能。4.4.1 定时器T0的中断程序设计定时器T0中断提供时间基准。当T0连续中断4000次时,即为一秒,此时秒加一;当秒值为60时,分钟加一,同时秒清零;当分钟值为60时,小时加一,同时分钟值清零;当小时为24时,小时清零。计数变量清零秒加1分加1秒清零小时加1且分清零小时清零计数到4000否?秒 =60 否?分 =60 否?小时=24否?开始YNYYYNNN返回计数变量加1图8 T0中断程序流程图4.4.2 定时器T1的中断程序设计当T1中断500次时,检测一次选择按键S3,如

15、果按键按下,检测时间加减按键,对应按键按下则执行对应的操作,选择按键可选择调时、调分、调秒以及让时间加减按键失效这四种功能,这样可以达到迅速校准时间的作用。计数变量1加1延时去抖动状态变量m加1m=1m=2m=3m=4调秒程序调分程序调时程序变量清零计数变量1清零按键S3按下否?按键S3按下否?计数到500否?NNNYYY计数变量2加1秒表低位加1,计数变量2清零秒表高位加1低位清零秒表高位清零计数到400否?低位=9999否?高位=9999否?NNNYYY开始Yflag = 1否?中断返回N图9 T1中断程序流程图4.5 按键扫描子程序按键扫描子程序是程序计中相当重要的一部分。按键扫描子程序

16、的功能是:扫描S4键是否按下,若S4键按下,则执行相应功能。标志变量flag的初值设为1,当按下S4键时,标志变量flag值加1,对应切换至所设置的功能。具体切换任务:flag值为1时可以显示时钟并对时间进行校准,当flag值为2时,切换至秒表功能;当flag值为3时,切换至闹钟设置功能;当flag值为4时,flag值返回1,回到时钟显示并可以调时。开始NS4键是否按下?Y返回延时去抖动S4键是否按下?YN状态变量flag加1图10 按键扫描程序流程图4.6 调时、分、秒子程序当选择按键状态选择到调秒时,相应的按下S2即对秒进行加1运算,当秒到加到60时,秒清零;按下S1即对秒进行减1运算,当

17、减到零时,秒等于59。选择按键切换时,对应的键可以调分和小时。调分和调时子程序和调秒子程序类似。开始Y延时去抖动S2按键按下否?S2按键按下否?延时去抖动YNN秒加1Y秒减1Y秒 =60?秒清零Y秒 0时表示电子钟秒单元数值刷新滞后,即走时误差为“慢”;反之,S0表示秒单元数值的刷新超前,即走时误差为“快”。本次设计的单片机电子钟系统中,其误差主要来源包括晶体频率误差,定时器溢出误差,延迟误差。晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造成与基准时间产生偏差,造成走时误差。5.4 软件调试问题及解决软件程序

18、的调试一般可以将重点放在分模块调试上,统调是最后一环。软件调试可以采取离线调试和在线调试两种方式。本次课题,Keil软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。6.设计总结我在这一次单片机最小系统的设计过程中,很是受益匪浅。通过对自己在大学二年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对课程设计的思考及书面表达能力。这为自己今后进一步深化学习,积累了一定宝贵的经验。撰写报告的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。培养了我运用所学知识解决实际问题的能力

19、。通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。这个实验十分有意义 我获得很深刻的经验。通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,也从中得知了很多书本上无法得知的知识。我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。这种做法既有助于完成理论知识的巩固,又有助于带动实践,解

20、决实际问题,加强我们的动手能力和解决问题的能力。参考文献1 李群芳,肖看,张士军单片机微型计算机与技术接口电子工业出版社,1997.12.125-1332 彭为,黄科,雷道仲单片机典型系统设计实例讲解电子工业出版社,2002.125-1333 何立民MCS-51单片机应用系统设计北京航空航天大学出版社,1995.99-1124 杨刚,周群电子系统设计与实践电子工业出版社,1998.79-102 5 张毅刚单片机原理及应用高等教育出版社,1999.125-1436 张毅刚MCS-51单片机应用设计哈尔滨工业大学出版社,1994.125-1337 张富C及C+程序设计(第3版)人民邮电出版社,19

21、98.79-1128 李华MCS-51系列单片机使用接口技术北京航空航天大学出版社,2005.7.115-1239 李广弟单片机基础北京航空航天大学出版社,1998.95-123附录1:多功能电子时钟原理图附录2:C语言源程序#include #define uchar unsigned char#define uint unsigned int#define key P3uchar code wei=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;uchar code duan=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0

22、x80,0x90,0xbf;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; i

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

24、 = 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 = 0xfd); if(key = 0xfe) if(sec_1 = 0) sec_1 = 60;sec_1-; while(key = 0xfe);if(flag2 = 2) if(key = 0xfd) min_1+; if(min_1 = 60) min_1 = 0;hou_1+; if(hou_1=24) hou_1 = 0;while(key = 0xfd); if(ke

25、y = 0xfe) if(min_1 = 0 ) min_1 = 60; min_1-; while(key = 0xfe); if(flag2 = 3) if(key = 0xfd) hou_1+; if(hou_1 = 24) hou_1 = 0;while(key = 0xfd); if(key = 0xfe) if(hou_1 = 0) hou_1 = 24;hou_1-;while(key = 0xfe); if(flag2 = 4) flag2=0; void fmq()if(sec = sec_1) & (min = min_1) & (hou = hou_1)P1_0 = 0;

26、delay(5000);P1_0 = 1;if(min = 0)&(sec = 0) P1_0 = 0;delay(1000);P1_0 = 1;void main()uchar x;P1_0 = 1;P0 = 0xff;P2 = 0xff;P3 = 0xff;TMOD = 0x22;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 3cnt+;count2+;if(cnt = 500)key_scan1();cnt = 0;if(count2=400) sec1+;if(sec1=9999)sec2+;if(sec2=9999) sec2=0; count2=0;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!