1、基于单片机的定时报时系统摘 要时间是现代社会中不可缺少的一项参数,无论是平时生活还是社会生产都需要对时间进行控制,有的场合对其精确性还有很高的要求.采用单片机进行计时,对于社会生产有着十分重要的作用。本文首先介绍了单片机和时钟的概念,然后根据设计要求提出系统总体设计方案,并设计各部分硬件模块和软件模块,再用设计的具体软件程序,用PROTEUS软件进行仿真和调试,结果证明该设计系统的可行性。由于AT89S51系列单片机的控制器运算能力强,处理速度快,可以精确计时,很好地解决了实际生产生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的适用性。关键词:单片机;定时;报时;设计目 录 第1章
2、 简介1一、基于单片机的数字钟介绍1 二、本系统的特点和功能介绍1第2章 硬件设计1 一、 总体设计方案1 二、 硬件结构设计2 1、51单片机的最小系统 2 2、显示部分设计3 3、电源部分设计4 4、串口通信部分设计4 5、报时部分的设计4 6、键盘部分的设计5 7、总体硬件电路图5第3章 软件设计6 一、部分设计思想的说明6 二、参考程序9总结12参考文献13第一章 简介一、基于单片机的数字钟介绍1.单片机定义:“单片机”就是将计算机的基本部件集成到一块芯片上,包括CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random
3、Access Memory)、并行口(Parallel Port)、串行口(Serial Port)、定时器计数器(Timer/Counter)、中断系统(Interrupt System)、系统时钟及系统总线等。2数字钟介绍:时钟是将小时、分钟、秒钟显示于人的肉眼的计时装置。而单片机模块中最常见的正是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。而LED电子定时时钟是以单片机为基础的数字电路实现对时、分、秒的数字显示的数字计时装置,它的计时周期为12小时,另外应有校时功能和一些显示
4、日期、闹钟等附加功能。由于时钟的实用性和在人们生活中的重要性,所以尝试设计以单片机为核心的数字时钟是很有意义的。钟表原先的报时功能已经原不能满足人们日益增长的要求,现代的电子时钟多带有类似自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、通断动力设备、甚至各种定时电气的自动启用等功能。 二、本系统的特点和功能介绍1 特点:我所设计的是LED显示的自动报时系统,是一种基于单片机技术的电子产品,用到的单片机芯片是AT89C52芯片,除此之外还包括晶振电路和复位电路构成单片机最小应用系统,还有按键电路,显示电路,报时电路等等。计时方案采用软件控制利用AT89C52单片机内部的定时/计
5、数器进行定时,配合软件延时实现时、分的计时。2本单片机报时控制系统具备以下功能(1)有电子时钟,定时闹铃功能。(2)时钟显示功能:4位LED从左到右依次显示“分分秒秒”,采用12小时制显示。(3)采用4个独立按键(移位键、加1键、减1键、校时置入键)移位键:每按动移位键一次,小数点从左向右移动1位。加1键:对小数点所在位的数什进行十进制加1。减1键:对小数点所在位的数值进行十进制减1。校时置入键:将显示的时间值置入实时时钟的计时缓冲区。(4)预设定时时间到则发出闹铃声第二章 硬件设计一、总体设计方案本LED定时闹钟,是以单片机及外围接口电路为核心硬件,辅以其他外围硬件电路,用软件程序来实现的。
6、单片机定时报时控制系统硬件原理图见设计原理图如下图所示。主控制器AT89C52晶振LED显示电路图2-1 总体设计方框图二、硬件结构设计 1、51单片机的最小系统 (见图2-2、2-3、2-4所示)在晶振电路中XTAL1、XTAL2为AT89C52中连接晶振的管脚,本系统中所使用的晶振频率为12MHZ 。XTAL1为振荡器反相放大器及内部时钟发生器的输入端,XTAL2为振荡器反相放大器的输出端。其中电容C18、C19起着系统时钟频率微调的作用,因此,在本定时报时系统的实际应用中一定要注意正确选择参数(3010PF),并保证对称性(尽可能匹配),可能的话,温度系数要尽可能的低。实验表明这两个电容
7、元件对时钟走时误差有较大关系。本系统采用了RC复位电路,其实现简单,成本低,但复位可靠性相对较低。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。2、显示部分设计用4位LED七段数码管作为显示器,到达定时时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。其驱动电路简单。采用了两片74HC595来驱动段码,8个510欧姆的限流电阻。图2-2 引脚图 图2-3 晶振 图2-4 复位电路 图2-4 LED显示器图2-5 显示驱动部分 3、电源部分设计如果是用电池供电,就比较方便携带,但是本系统,采用了数码管作为显示器,功耗较大,需要经常更换电池。况且,本系统
8、的体积较大,即使使用电池供电也不能随身携带,因此,用电池供电不大合适,所以用外部稳压电源来供电。应当说明的是,尽管有很多型号的7805三端稳压集成芯片,其标称最大输出电流均为1.5v,但在实际应用中,该最大的输出电流值往往取决于两个方面:足够的散热面积和不同的成产厂家。在设计中必须保证7805的输入电压Vi和输出电压Vo的压差大于2.5v,否则会失去稳压能力;同时考虑到功耗问题,此压差有不宜太大,太大则增加7805本身的功率消耗,增加芯片的温升,不利于安全。因此,本系统采用9v直流稳压源。图2-6 电源电路 4、串口通部分块设计软件程序可通过此口写入51单片机中,其原理图如图2-7所示。5、报
9、时部分的设计报时指示可以有声或光两种形式,本系统采用声音指示。关键元件是蜂鸣器,蜂鸣器有无源和有源两种,前者需要输入声音频率信号才能正常发声,后者则只需外加适当直流电源电压即可,元件内部已封装了音频震荡电路,在得电状态下即起振发声。市场上的有源蜂鸣器分为3V、5V、6V等系列,以适应不同的应用需要,本系统采用5V有源蜂鸣器实现报时。由软件产生方波输出经三极管放大后驱动蜂鸣器发音,不用硬件振荡电路,电路图如图2-8所示。图2-7 串口通信电路 图2-8 报时电路 6、键盘部分的设计如果设置过多按键,将会占用较多I/O口,而且会给布线带来不便,因此采用4个独立按键。由于按键较少,在修改时间时就不能
10、直接输入,只能通过加或减完成,稍为麻烦一些,但其程序简单,而且并不需要经常修改时间。图2-9 键盘电路 7、总体硬件电路图 通过Proteus画出的总体硬件电路图如下所示。图2-10 总体硬件电路图第三章 软件设计一、部分设计思想的说明软件设计的重点在于秒脉冲信号的产生、显示的实现、以及按键的处理等。基于软件的秒脉冲信号通常有延时法和中断法。延时法一般采用查询方式,在延时子程序前后必然需要查询和处理的程序,导致误差的产生,因此其秒脉冲精度不高;中断法的原理是,利用单片机内部的定时器溢出中断来实现 。本系统中所使用的晶振频率为12MHZ,采用中断的方法实现计时操作。根据工作流程,软件设计可分为以
11、下几个功能模块:1、主程序:是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终的功能的多少和性能的好坏。其流程图见图3-12、计时:系统定时采用定时器与软件循环相结合的方法。定时器0每隔100MS溢出中断1次,则循环中断10次延时时间为1S,上述过程重复60次为1MIN,分计时60次为1H,小时计时12次则时间重新回到00:00,如果使用时钟芯片,系统就不怕掉电且时间精确。但这种芯片比较贵,况且,设计本系统主要是为了学习单片机程序的编写和调试以及设计硬件电路的一些方法,因此采用软件的方法来计时而没有采用价
12、格较高的时钟芯片图3-1 主函数流程图3、时间设置:由键盘出入设置当前时间4、LED数码管扫描显示:完成4位LED显示5、键盘扫描:判断是否有键按下,无键按下则循环等待,有键按下则求承诺键号并将键号送累加器A返回。程序中的去抖延时和循环等待延时都用显示子程序来代替,从而保证随时刷新显示,软件的去抖动的实质是软件延时,即检测到某一键状态发生变化后延时一段时间,再检测该按键的状态是否还保持着,如是则作为按键处理,否则,视为抖动,不予理睬。去抖中的延时时间一般参考资料多描述为10ms,实际应用中,应大于20ms,会导致按一次作多次处理,影响程序正常执行。键盘管理程序的功能是检测有无键闭和,如有键闭和
13、,消除抖动,根据键号转接到相应的键处理程序。其程序流程图如图3-26、报时处理:判断时间是否到否,如时间到,则启动报时处理程序。闹铃判别与闹铃处理的关键在于判别何时要进行闹铃,当任一位发生改变(进位)时,就必须进行闹铃判别,比较当前计数时间与定时时间是否相等,若相等则将闹铃标志位置数,开始响铃。为了避免响铃影响显示,采用了每显示几屏以后在显示程序中出现脉冲,驱动蜂鸣器,不会影响显示。之后对按键进行判断,程序设计思想如图3-3。 图3-2 键盘管理程序流程图 图3-3 闹铃实现思想流程图二、参考程序#include#define uchar unsigned char#define uint u
14、nsigned intucharcode seg17=0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x00;uint min,sec,hour,sec1,sec2,min1,min2,n,hour1,hour2;sbit beep=P14; ;位寻址,P1.4接的蜂鸣器void delay(uchar tt) ;延时处理 uchar i;for(;tt0;tt-)for(i=0;i200;i+);void LED(uchar d1,uchar d2) ;显示部分 INT0=0;S
15、BUF=d2;while(!TI);TI=0;SBUF=d1;while(!TI);TI=0;INT0=1;void init1() ;初始化变量 min=0;sec=0;hour=0;sec1=0;sec2=0;min1=0;min2=0;hour1=0;hour2=0;TMOD = 0x01;TH0 = (0xffff-50000)/256;TL0 = (0xffff-50000)%256;IE=0x82;TR0 = 1;void clock() ;报时处理 if(min=00&sec=04)beep=0;delay(100);beep=1;void TT() interrupt 1 ;定
16、时器0中断处理函数入口 TH0 = (0xffff-50000)/256;TL0 = (0xffff-50000)%256; n+; if( 20=n ) n=0; sec+; if(sec=60) sec=0; min+; if(min=60) min=0; hour+; if(hour=12) hour=0; sec1=sec/10; sec2=sec%10; min1= min/10; min2=min%10; hour1= hour/10; hour2= hour%10; main() ;主函数入口 SCON=0x00;init1();while(1) clock();LED(segm
17、in1,0xef);delay(10);LED(segmin2,0xdf);delay(10);LED(segsec1,0xbf);delay(10);LED(segsec2,0x7f);delay(10);总 结由于时间,还有能力与精力的关系,对程序还不完善,键盘处理部分的程序未能加入进去,该系统还需要以后进行完善。 通过本次的课程设计,我学会了单片机的一般设计过程,通常都要进行系统扩展与配置,因此,要完成一个单片机的设计工作,必须依次做到下述工作:1、硬件电路的设计、组装与调试;2、应用软件的编写、调试;3、完整应用软件的调试、固化和脱机运行。而在进行硬件系统设计时我们应当尽量做到:(1)
18、、尽可能的选择典型电路,并符合单片机的常规使用方法;(2)、在充分满足系统功能要求前提下,留余地以便于二次开发;(3)、硬件结构设计应与软件设计方案一并考虑;(4)、整个系统相关器件要力求性能的匹配;(5)、硬件上要有可靠性与抗干扰设计;(6)、充分考虑单片机的带载驱动能力。课程设计过程也使我了解了自己能力的不足,在实际的编程以及调试程序过程中,我发现自己应该学的还有太多太多,不过通过资料收集和文献查询等方法,找出了设计过程中的一些问题以及解决问题的方法,从而完成了这个设计任务。这次自己所做的设计取得了一些宝贵的经验,提高了自己的动手能力,为将来的学习和工作很有好处。总之,理论必须和实际结合才
19、有威力,知识必须通过应用才能实现其价值!所学的东西最终是要面向社会,是在以后的工作能够更好的应用,此时的知识积累是为以后的工作做好坚实的基础。这个设计总体上不算完美,但是在这个课程设计的经历的好处是不可估量的。参 考 文 献1 李群芳,张士军,黄建.单片微型计算机与接口技术.北京:电子工业出版社, 2008.52 周润景,张丽娜.基于PROTEUS的电路及单片机系统设计与仿真.北京:北京航空航天出版社,2006.53 王治刚. 单片机应用技术与实训.北京:清华大学出版社,2007.123 李群芳,张士军,黄建.单片微型计算机与接口技术.北京:电子工业出版社, 2008.55 沈红卫.基于单片机的智能系统设计与实现.北京:电子工业出版社,2005.16 韩成,张延伟.拿来就用单片机.北京:人民邮电出版社,2008.9