《(电子行业企业管理)数字电子钟的设计》由会员分享,可在线阅读,更多相关《(电子行业企业管理)数字电子钟的设计(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;TL1 = 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