一种基于单片机的多功能定时器的设计摘要与关键词:定时器、目录:1.设计任务2.方案设计与论证3.硬件电路设计3.1STC单片机的最小系统3.2LED显示与单片机接口3.3发光二极管、按键、继电器与单片机接口4.软件设计4.1发光二极管指示程序4.2键扫描程序4.3数码管的显示程序5.系统调试6.电路原理图7.源程序8.主要参考文献前言正文结论致谢附录参考文献1.1.设计任务设计一个基于单片机控制的专用定时器。要求定时器可以实现三个时间的显示,而且每个时间的初值都可以改变,独立完成系统的分析、设计和程序编写,记录开发过程中的问题及解决方法,要有设计过程和原理图,并自行设计满足设计任务的稳压电源。设计主要指标参数:(1)定时时间1。1S~99S,可调。(2)定时时间2。1S~99S,可调。(3)定时时间3。1min~99min,可调。(4)所有时间数字均可调。(5)用LED数码管显示剩余时间。1.2设计意义近年来随着科技的飞速发展,单片机的应用正不断地走向深入,同时带动传统控制检测的日新月异地更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,根据具体硬件结构以及具体应用对象的特点,与软件相结合,加以完善。单片机之所以在工业控制中有大量的应用,就在于它有独特的定时、计数功能。在工业检测、控制中,许多场合都要用到计数或定时的功能。例如,对外部脉冲进行计数、产生精确的定时时间等。人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。“定时器”总的来说有两种类型。一种是基于模拟技术的传统产品,这种定时器的功能简单,尽管曾经被广泛应用过,但已列入淘汰之列。另一种是基于数字技术的新一代产品,这种产品功能强,是前者的代换之物。本设计开发了一种基于单片机的多用途定时器。它造价低,功能全,整体功能价格比较高,配以小键盘和LED显示器,可适应各种场合的定时预警之用。1.3整体设计方案基于单片机系统的定时器电路包含了如下的功能模块:基本的单片机系统单片机的定时中断单片机的外围电路外部按键输入装置数码管LED显示装置设计要求输出如图1.1所示的时间定时输出,并显示每个时间的剩余时间。其中三个时间有各自的调节范围:T1,1S~99S;T2,1S~99S;T3,1min~99min.1.31方案一:利用单片机的定时器完成定时要求。利用单片机定时输出Y1,Y2,Y3,并用发光二极管表示其时间的长短,用LED显示定时的剩余时间。时间长短通过按键调节。继电器是定时后的具体应用器件。串口用来对单片机在线编程。方案一的原理图见6.2方案二:高频脉冲信号作为定时器的时间基准,计时器实现定时。该系统的工作原理是:震荡器产生的稳定的高频脉冲信号,作为定时器的时间基准,经分配器输出标准脉冲。T1减计数器即使时间通过T1预置数显示器显示T1的剩余时间,同时使T1的时间输出器和指示灯工作,当T1计数满之后,T2计数器开始工作,并对T2预置数。T2减计数器工作方式同T1。当T2计数满之后T3减数开始工作。工作方式同T1,T2,如此循环,便能实现该设计的功能。原理图T3时间输出和指示T2时间输出和显示T1时间输出和显示T3显示T2显示译码器T1显示译码器译码器T3减计数器T2减计数器T1减计数器T1预置数T2预置数STC89S52单片机发光二极管显示和指示按键的调节、选择串口LED显示ULN2803驱动继电器应用T3预置数振荡器分频器1.3.2方案选择对以上两个方案进行论证,并加以选择,确定该设计的总体方案框图以便进一步设计。方案一:有点是利用单片机的定时器定时,时间精度、稳定、可爱,并可以利用单片机的功能很好的进行时间的显示、指示、输出。原理简单,使用的原件少,相对来说在实物调试时出现的问题就少。该方案还有一个好处是成本低。此外,经过无数人证明,用单片机完全可以实现定时功能,失败风险小。缺点是使用单片机要求写程序。对于不熟悉软件的人来要单独完成该设计有一定的难度。方案二:优点是该方案应用稳定的高脉冲信号作为定时器的时间基准,可以说也有同单片机一样的精确、稳定、可靠的输出时间,且对软件编写要求不高,能很好地实现设计要求的功能。缺点是该方案复杂,一般不容易弄明白它的原理,而且应用的元器件较多,在实物调试时出现的问题可能比较多。由于元器件比较多,所以相对来说实物的成本也比较高,而且在PCB布线时更加麻烦,由于原理复杂,所以成功完成该设计的概率较低。通过以上设计的方案比较,该设计选用方案一进行设计。1.4硬件电路设计该设计选用STC单片机,STC单片机的内部框图如图4)STC89S52微处理器低功耗,高速(0~90MHZ,高可靠掉电模式;1280BSRAM8/16/32/64KB内存内置系统ISP监控程序看门狗E*EPROMDataFlash专业复位电路集成MAX810URT(串口)3个定时器双数据指针A/D四个8位并行端口和P4.0~~P4.3四个附属I/O端口A/D(高速)可做按键扫描电池电压检测掉电检测音量和频谱检测等P0口地址OE8HINT2/P4.3INT3/P4.2P4口均可位寻址STC89S52系列单片机是兼容8051内核的单片机,是高速、低功耗的新一代8051单片机,12时钟/机器周期和6时钟/机器周期可反复设置,最新的D版内集成MAX810专用复位电路。用STC提供的STC~ISP.exe工具将原有的代码下载进STC相关的单片机即可,或是通用编程器编程。RC/RD+D系列为真正的看门狗,默认为关闭(冷启动),启动后无法关闭,可放心省去外部看门狗。内部Flash擦写次数为100000次以上,STC89S52RC/RD+系列单片机出出厂时就已完全加密,无法加密。用户程序是用ISP/IAP机制写入,一边校验一边写,无读出命令,彻底无法解密。选用STC89S52单片机的理由:加密性强,无法解答;超强抗干扰,轻松过4KV快速脉冲干扰EFT;高抗静电(ESD),6KV静电可直接承受在芯片管脚上;超低功耗,PowerDown0.1Ua,可外部中断优先级可设置成4级;PLCC-44、PQFP-44封装,有P4口(可位寻址);并增加两个外部中断,Int2/P4.3、Intl/P4.2;6时钟/机器周期或12时钟/机器周期可任意设置;可在系统可编程,无需编程器,可远程升级;可供应内部集成MAX810专业复位电路,原复位电路可以保留,也可以不用,不用时RESET引脚直接短接到地。STC89系列单片机大部分具有在系统可编程(ISP)特性,ISP的好处是省去了购买通用编程器的开销,单片机在用户系统上即可下载/烧录用户程序,无需将单片机从生产好的产品上拆下,再通用编程器将程序代码烧录进的单片机内部。由于可以将程序直接下载进单片机查看运行结果,故也可以不用仿真器。1.4.1STC单片机的最小系统(1)复位电路从原理上,一般采用上电复位电路。这种复位电路工作原理是:通电时,电容两端相当于短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降到一定程度,即为低电平,单片机开始正常工作。该设计中复位电路选用由10UF的电容和10K的电阻及IN4148二极管组成。在满足单片机可靠复位的电路前提下该复位电路的优点在于降低复位引脚的对地阻抗,可以显著增强单片机复位电路的抗干扰能力。二极管可以实现快速释放电容电量功能,满足短时间复位的要求。具体如图5(2)晶振电路单片机的晶振电路是一种典型的电路,分析内部时钟和外部时钟两种方式。内部时钟方式如图6内部时钟电路的晶振频率一般选择在4MHZ~~12MHZ之间(该设计选用12MHZ),外接两个谐振电容。该电容的典型为30PF,该设计选用22PF。1.4.2LED显示器有7段(或8段,8段比7段多了一个小数点“dp”段)这种显示器有共阳极和共阴极两种。该设计中选用的是共阴极。图7共阴极LED显示器的发光二极管的阴极连接在一起,通常该共阴极接地。当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。使用LED显示器时,为了显示数字或符号,要为LED显示提供代码,因为这些代码是通过段的亮与灭来显示不同字形,因此称之为段码。7段发光二极管,再加上一个小数点位,共计8段,因此提供给LED显示器的段码正好一个字节。各段字节中各位的对应关系如图显示数dpGfedcba断码0001111113FH10000011006H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FH9011011116FH由于单片机I/O的电气特性决定了单片机的端口的驱动能力有限,一般的,单片机的端口只是驱动TTL电平,不提供或者提供很小的驱动电流,所以在带负载时,单片机应当在I/O口加上驱动芯片。该设计中使用ULN2803驱动芯片。发光二极管工作电流在10mA左右,而一般I/O接口不能提供这么大的电流,需要使用驱动电路,常使用的有ULN2003A,7段驱动;ULN2803,8段驱动。LED与单片机的接线如图8使用ULN2803驱动芯片对LED进行驱动,ULN2803相当于一个反向驱动器,其内部具体结构如图9ULN2803的特点:最大驱动电流可达到500MA;反向驱动;需要限流电阻,数码管越多,限流电阻的阻值越小。ULN2803的额定值如表额定值符号值单位输出电压V050V输入电压Vi30V集电极电流连续Ic500mA基极电流—连续Ib25mA工作环境温度范围Ta0~~+7保存温度Tstg-55~+150结温Ti1251.4.3发光二极管、按键、继电器与单片机接线发光二极管、按键、继电器与单片机接线如图10所示。1发光二极管发光二极管在两端的电压差超过其导通压降时开始工作,发光二极管的导通压降一般为1.7~~1.9V。此外,工作电流要满足该二极管的工作电流,满足电流和电压的要求,发光二极管就可以发光了。单片机系统中往往是数字信号,其电源不是5V就是0V,所以只要将二极管的正负极和电源对应上就行了。发光二极管前面接一个电阻,这个电阻的作用在于限制二极管的电流,从而达到减少功耗或者满足端口对最大电流的限制。一般二极管的点亮电流为5MA~~10MA,在5V电源驱动时,厂家多采用470欧。限流电阻,在该设计中选用510欧,这样既不会超出单片机的I/O口最大限流,二极管也比较明亮。2.按键按键使用上拉电阻方式接入单片机。未按下时对单片机输入一个高电平,按下后输入一个低电平。它在这个设计中的作用是用来调节T1、T2和T3的大小。键的闭合与否,反映在行线输出电压上就是呈现出高电平或低电平,如果高电平表示断开的话,那么低电平则表示闭合,所以通过对行线电平的高低状态的检测,便可以确认按键按下与否。为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响。3.继电器继电器在这个设计中作为输出设备,即是输出该定时时间的中转站。继电器是一个感性元件,感性件在使用过程中要加一个保护二极管,然而在上图中并没有这个二极管,不是该图设备不合理,而是在该设计中使用的驱动芯片ULN2803中已经带有这个起保护作用的二极管了。1.5软件设计首先介绍程序中硬件功能,再进行发光二极管指示程序、键扫描程序和数码管的显示程序的设计。1.5.11.程序中硬件功能介绍STC89S52:单片机,控制LED的数据显示。LED:两个一位的7断码LED,用于显示单片机的数据。74LS53:锁存器,74LS573入的D端和输出Q端依次排列在芯片的两侧,为给印制电路板时的布线提供了方便。其功能与74LS373相同,可用来替代.ULN2803:驱动LED,相当于一个反相器。按键S3:S3=1时时间正常运行,S3=0时开始控制三个时间中的一个,再次让S3=0时表示复位,时间又开始正常运行。按键S2:S2=0时每按一次表示时间自减一,当S2=1时,时间不变。按键S1