数字电子钟的设计.docx

上传人:小飞机 文档编号:2061046 上传时间:2023-01-05 格式:DOCX 页数:17 大小:508.57KB
返回 下载 相关 举报
数字电子钟的设计.docx_第1页
第1页 / 共17页
数字电子钟的设计.docx_第2页
第2页 / 共17页
数字电子钟的设计.docx_第3页
第3页 / 共17页
数字电子钟的设计.docx_第4页
第4页 / 共17页
数字电子钟的设计.docx_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《数字电子钟的设计.docx》由会员分享,可在线阅读,更多相关《数字电子钟的设计.docx(17页珍藏版)》请在三一办公上搜索。

1、摘要:数字电子钟的设计方法有多种,其中,利用单片机实现的电子钟具有编程灵活,精确度高等特点,便于电子钟功能的扩充,即可用该电子钟发出各种控制信号。本设计由单片机AT89S52芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能等特点。该电子钟可以做到的功能:上电或按键复位后能自动显示系统默认时间“12-00-00”进入时钟运行状态。按电子钟调整键A1,则电子钟进入时钟调整状态,小时自动加1,按电子钟调整键A2,分自动加1,本电子时钟利用了8位LED显示时分

2、秒。关键词:单片机;电子钟;数码管171 绪论1.1课题背景数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调

3、试电路的能力。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。1.2课程设计目的(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力。(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力。(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。1.3设计技术参数(1)时制式为24小时制。(2)采用LED数码

4、管显示时、分,秒采用数字显示。(3)具有方便的时间调校功能。(4)计时稳定度高,可精确校正计时精度。2 电子钟的工作原理2.1实现时钟计时的基本方法利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计数。1.计数初值计算把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。假设使用T/C0,方式1,50ms定时,fosc=12MHz。则初值X满足(216-X)1/12MHz12s =50000sX=1553600111100101100003CB0H2中断方式采用中断方式进行溢出次数累计,计满20次为秒计时(1秒)。

5、3.计时方式从秒到分和从分到时的计时是通过累加和数值比较实现。2.2电子钟的时间显示电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元如表1所示。 表1时间显示LED8LED7LED6LED5LED4LED3LED2LED137H36H35H34H33H32H31H30H时十位时个位分隔分十位分个位分隔秒十位秒个位2.3电子钟的时间调整电子钟设置2个按键通过程序控制来完成电子钟的时间调整。A键调小时;B键调分钟。2.4总体方案介绍1.计时方案利用AT89S52单片机内部的定时/计数器进行中断时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使读者在

6、定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。2.键盘/显示方案AT89S52的P0口和P2口外接由八个LED数码管(LED8LED1)构成的显示器,用P0口作LED的段码输出口,P2口作八个LED数码管的位控输出线,P1口外接四个按键A、B构成键盘电路。AT89S52 是一种低功耗,高性能的CMOS 8位微型计算机。它带有8K Flash 可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash 集

7、成在一个芯片上,可用与解决复杂的问题,且成本较低。简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以本书中采用的设计方案,结构如图1如示:按键电路晶振电路复位电路AT89S52驱动电路LED图1 设计方案3 电子钟原理图及元件清单3.1电子钟电路原理图1.时钟电路原理图时钟电路原理图如图2所示,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经 过触发器进行二分频之后,才成为单片机的时钟脉冲信号。图2 时钟电路原理图2

8、.单片机最小系统单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。51单片机的最小系统电路图如图3所示。复位电路:由电容串联电阻构成,由图并结合电容电压不能突变的性质可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。一般教科书推荐C取10u,R取8.2K。当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平

9、。至于如何具体定量计算,可以参考电路分析相关书籍。晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作) 特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行.这一点是初学者容易忽略的.图3单片机最小系统3.单片机复位电路单片机复位的条件是:必须使RST/VPD 或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12 MHz,每机器周期为1s,则

10、只需2s以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位如图4所示。电路为上电复位电路,它是利用电容充电来实现的。在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。 该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。图4单片机复位电路4.显示器工作原理系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。动态显示通常都是采用动态扫描的方法进行显

11、示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。3.2元件清单电子钟元件清单如表2所示。表2电子钟元器件清单元件名称规格型号数量(个)单片机AT89S521显示驱动三极管A10138晶振11.0592MHz1电容30pF2电容22F1按键BUTTON排阻RESPACK-8/10K14 程序流程图 定时器0中断服务程序重设定时器值关闭所有位,更新段码选通下一位数码管增量位索引RETI图6 定时0中断服务程序YES数字电子钟主要包括初始化程序,中断服务程序和键处理程序。程序流程图如图5,图6

12、,图7,图8所示。图7 定时1服务中断程序图5 电子时钟初始化电子时钟初始化定时器设置上电默认显示时间键盘扫描及处理YESYESNOYESNONO定时器1中断服务程序中断是否达100次(1s)秒是否满60秒加1分是否满60分清0,小时加1小时是否满24小时清0RETI秒清0,分加1图8 键处理程序键处理子程序小时加1RET按键为AN1按键为AN2YES分加1YESNONO4.1本章小结程序设计无疑是单片机学习中的重中之重,写不好程序就无法对单片机进行高效的控制。对于简单的程序而言,不需要事先画程序流程图,因为程序简单,条理分明。但对于功能稍微强大的程序来说,不画流程图就很容易走弯路,造成条理不

13、清晰,思维混乱。C语言以它独特的函数结构模块化正逐步推广到嵌入式的控制。我相信在不久的将来,C在嵌入式中的地位是不可动摇的。5 源程序#include #include unsigned char data dis_digit;unsigned char key_s, key_v;unsigned char code dis_code11=0xc0,0xf9,0xa4,0xb0,/ 0, 1, 2, 30x99,0x92,0x82,0xf8,0x80,0x90, 0xff;/ 4, 5, 6, 7, 8, 9, off unsigned char data dis_buf8;unsigned

14、char data dis_index;unsigned char hour,min,sec;unsigned char sec100; sbitK1 = P14;sbitK2 = P15;bit scan_key();void proc_key();void inc_sec();void inc_min();void inc_hour();void display();void delayms(unsigned char ms);void main(void)P0 = 0xff;P2 = 0xff;TMOD = 0x11;/ 定时器0, 1工作模式1, 16位定时方式TH1 = 0xdc;T

15、L1 = 0;TH0 = 0xFC;TL0 = 0x17;hour = 12;min = 00;sec = 00;sec100 = 0;dis_buf0 = dis_codehour / 10;/ 时十位dis_buf1 = dis_codehour % 10;/ 时个位dis_buf3 = dis_codemin / 10;/ 分十位dis_buf4 = dis_codemin % 10;/ 分个位dis_buf6 = dis_codesec / 10;/ 秒十位dis_buf7 = dis_codesec % 10;/ 秒个位dis_buf2 = 0xbf;/ 显示-dis_buf5 =

16、0xbf;/ 显示-dis_digit = 0xfe;dis_index = 0;TCON = 0x01;IE = 0x8a;/ 使能timer0,1 中断TR0 = 1;TR1 = 1;key_v = 0x03;while(1)if(scan_key()delayms(10);if(scan_key()key_v = key_s;proc_key();bit scan_key()key_s = 0x00;key_s |= K2;key_s 59)min = 0;dis_buf3 = dis_codemin / 10;/ 分十位dis_buf4 = dis_codemin % 10;/ 分个位

17、EA = 1;void timer0() interrupt 1/ 定时器0中断服务程序, 用于数码管的动态扫描/ dis_index - 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量/ dis_digit - 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时,/选通P2.0口数码管/ dis_buf - 显于缓冲区基地址TH0 = 0xFC;TL0 = 0x17;P2 = 0xff;/ 先关闭所有数码管P0 = dis_bufdis_index;/ 显示代码传送到P0口P2 = dis_digit;/ dis_digit = _crol_(dis_digit,1)

18、;/ 位选通值左移, 下次中断时选通下一位数码管dis_index+;/ dis_index &= 0x07;/ 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描 void timer1() interrupt 3TH1 = 0xdc;sec100+;if(sec100 = 100)sec100 = 0;inc_sec();void inc_sec()sec+;if(sec 59)sec = 0;inc_min();dis_buf6 = dis_codesec / 10;/ 秒十位dis_buf7 = dis_codesec % 10;/ 秒个位void inc_min()min+;i

19、f(min 59)min = 0;inc_hour();dis_buf3 = dis_codemin / 10;/ 分十位dis_buf4 = dis_codemin % 10;/ 分个位void inc_hour()hour+;if(hour 23)hour = 0;if(hour 9)dis_buf0 = dis_codehour / 10;/ 时十位elsedis_buf0 = 0xff;/ 当小时的十位为0时不显示dis_buf1 = dis_codehour % 10;/ 时个位void delayms(unsigned char ms)/ 延时子程序unsigned char i;

20、while(ms-)for(i = 0; i 120; i+);6 结论在调试运行过程中,在所有参数正确的情况下,我的结果仍出现运行缓慢情况。产生误差的主要原因是我们用软件计时,计时1秒是采用定时器的中断服务程序。当电子钟运行1秒,执行中断程序需要一定时间,这个时间就是所产生的误差,这个误差是不可避免的。同时,单片机工作也会受到环境的影响,比如温度、湿度,以及其它电子设备的干扰。因此,应该让电子钟工作在适度温度、干燥和电子干扰较少的环境下,还有一种方法就是采用实时时钟芯片,这样可以使误差降低到最少。因为我对单片机的掌握还不够全面,硬件做的也不多,所以先做一个不带实时时钟芯片的电子钟暂且练习对定

21、时器计数器的用法,还有一点就是系统简单好调试,以保证按时完成设计任务。在以后的学习生活中,我会逐渐增加它的功能,比如说加实时时钟芯片,加温度控制,加闹钟等功能来完善这个电子钟。7 课程设计体会首先,感谢我的指导老师黄喜云老师,有了她的谆谆教诲,处处提点,我才得以成功的完成。老师一次次给我指出程序中的错误,让我修改再重新编写。老师在课堂上严格要求我们,这是对我们的负责,严师出高徒。而我的自由散漫的性格弱点也由于于老师督促和鞭策变得勤奋,上进,我学到的不仅仅是书本上的知识,还有做人的道理。老师们严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。在此谨向各位老师致以诚挚的谢意

22、和崇高的敬意。通过这次的设计使我认识到我对单片机编程方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,有很多我们需要掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识。本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争。参考文献1 郑君里,应启珩,杨为理. 信号与系统(第二版)上册M. 高等教育出版社,20002 郑君里,应启

23、珩,杨为理. 信号与系统(第二版)下册M. 高等教育出版社,20003 谭浩强. C程序设计(第二版)M. 清华大学出版社,20034 W.Richard Stevens,范建华译. TCP/IP详解卷1:协议M. 机械工业出版社,20005 Androw S. Tanenbaum. 计算机网络(第4版)M. Pearson,20046 吴坚,刘高平.基于GPRS网络的点对点图像传输方案J.计算机应用研究,2004,5:222-223,2317 W.Simpson, Editor. The Point-to-Point Protocol, RFC1661 EB/OL. July 19948 WAVECOM. AT Commands Interface Guide, Revision 002EB/OL.6th November 2003附录1 图图总体电路图图2 PCB板

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号