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






