用AT89C2051单片机组成的数字定时器

🏠 首页 《无线电》杂志 2004年 🔗 第9期 🔗 第37页 分类:电脑与单片机 🔗 崔亦斌 🔗, 张继辉 🔗

本文介绍一个采用AT89C2051单片机构成的“数字定时器”实用电路,其硬件电路和控制软件均已通过调试运行并已在某生产单位投入使用。通过该电路,您可以进一步了解到单片机电路的应用扩展功能和指令应用技巧。

一、电路的主要特点

1.由于电路采用了晶体振荡时钟,具有极高的频率稳定性,同时,定时系统采用数字计数方式,因而每次定时的时间准确度高,一致性好,可有效地避免采用RC元件构成的延时电路普遍存在定时时间不准确、不可靠,特别是一致性较差的问题。

2.本电路的定时时间可在1分钟(最短时间)至99分钟(最长时间)之间任意设置,其分辨率为1分钟。

3.定时时间的设置可通过SB0“十位-1”与SB1“个位-1”两只按钮分别进行,设置输入方便、快捷。

4.在进行设置和整个定时的过程中,均采用2位数码管做“十位”和“个位”的倒计时显示,同时用数码管上小数点的闪亮作为秒显示,显示直观、准确。

5.初始加电时,电路的2位数码显示器将自动显示系统默认的“定时时间”(本例中为99分钟),只要不进行新的时间设置,电路就将按系统默认的定时时间开始运行,此时,两个数码管上的小数点将同步闪亮,VT1同时导通,K1也立即吸合,其接点可控制外电路工作。

6.如果需要重新设置定时时间,只要按动SB0和SB1键,分别使十位和个位的数码管做减1显示(倒计数),使之显示出需要的定时时间即可。当调整到数码管显示为0时,若再按动SB0或SB1键,对应的数码管将自动回到9,因此,设置可以循环调整和显示。在设置时,只要一按动SB0或SB1键,数码管上的小数点将立即停止闪动,表明电路已进入设置状态,此时电路将自动退出定时状态,VT1也同时截止,使K1立即释放,外电路停止工作。

7.当设置完成后,必须要按动一下SB2“启动”键,电路才可按照新设定的时间,开始进入定时状态,这时,数码管上的小数点将恢复闪亮,VT1也同时导通,使K1恢复吸合。

8.每一次新的设置完成后,只要不断电,电路具有自动记忆本次设置的功能,当一次定时的过程完成后,若需再次进行相同时间的定时,无须重新输入定时时间,只需按动一下SB2“启动”键即可,故在重复使用时操作非常简单、方便。

9.当电路的定时时间结束时,两位数码管将各显示一个负号,且数码管上的小数点将停止闪亮,VT1也将立即截止,使K1释放,外电路停止工作。

10.当电路正处于定时的过程中(定时时间未到)时,按一下SB3“退出”键,电路将立即退出定时状态,此时,两位数码管同样将各显示一个负号,数码管上的小数点也将停止闪亮,VT1立即截止,使K1释放。若需恢复定时状态,仍必须再按一下SB2(启动)键,电路才可按照系统先前所记忆的上次设置的定时时间(或系统默认的定时时间)重新开始定时。

二、电路硬件

电原理图见图1。AT89C2051单片机为本电路的核心,C3和R1构成了简易的上电自动复位电路。B、C2与IC1相关引脚构成了单片机的时钟电路。显示器采用两只“共阳”型数码管。IC1的15个I/O口全部使用,其中,P1.0为秒显示输出口,通过一只限流电阻接至各数码管的小数点电极上,正常工作时,将以小数点的闪亮作为秒信号显示; P1.1~P1.7作为七段数码管的段选信号(低电平有效)输出口,分别通过一只限流电阻,接至各数码管的相应电极上。数码管显示采用动态扫描的方式进行,其动态位选信号分别由IC1的P3.4和P3.5输出,高电平有效,其输出信号通过VT2、VT3分别驱动两只数码管交替(动态)显示。IC1的P3.0~P3.3分别为 “十位-1(SB0)”、“个位-1(SB1)”、“启动(SB2)”、“退出(SB3)”四个功能键的输入口,其对“地”间各接有一只常开型自复位按键开关;P3.7为输出控制口,通过一只电阻接至VT1的基极,由VT1适时驱动继电器K1吸合与释放; 电源变压器、桥式整流器、7805三端稳压器及C4~C7组成了电源电路,可为整个电路提供稳定的+5V直流工作电源。

图1
图1 🔍原图 (709×466)

电路中所需元件的规格参数均见图1。

三、程序介绍

本程序使用汇编语言编写。主程序和定时中断子程序的流程图分别如图2a、图2b所示。程序运行后,在初始化程序中,首先对片内RAM空间进行分配和定义,其中,42H和43H分别用于存放个位和十位数码管中拟显示的数据;4AH和4BH为两个定时参数的记忆单元,分别用于存放设置好的十位和个位的定时数据,当电路进入定时状态时,被分别读入42H和43H中。在定时计数中断子程序中,要完成秒信号的产生、60秒计数、定时时间到否的查询等功能。其中,秒信号的产生是利用对单片机内部定时器T1产生的中断信号进行多次累加后形成的,该信号将由P1.0输出,用以完成秒闪烁功能。同时,该信号还经过60次计数后产生分信号,最后,再以分钟为时间间隔,从设置好的定时时间数据内逐一递减并随时显示剩余的定时时间参数,形成倒计数的显示方式。当42H和43H同时都减为0时,整个定时过程也就完成了,此时,系统将控制P3.7输出低电位,使VT1截止,继电器释放,控制外电路停止工作。在按键处理子程序中,要完成对四种按键信号的输入识别、键接点的软件延时除颤、十位和个位定时数据的分别减1设置等功能。在显示子程序中,采用典型的查表程序分别完成十位和个位数码管的动态显示,其指令表如附表所示。由于本程序已经调试运行通过,因此,读者只需利用单片机编译软件将本文提供的源程序编译成目标程序并将其写入AT89C2051芯片,再将芯片插入硬件电路即可投入正常使用。

图3
图3 🔍原图 (398×317)

四、程序清单

已实际调试运行通过的源程序可见本期配刊光盘的“本期程序”文件夹。

(文/张继辉 崔亦斌)