|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
作者:吴汉清
本文介绍的用单片机AT89C2051制作的计时器,采用倒计时方式,剩余时间一目了然。时间到了还会发出报警声。
一、硬件电路工作原理
电路见附图,由单片机电路和数码显示电路等组成。使用复位和开始两个按钮,用三位数码管分别显示分和秒。
AT89C205l、TX、R1、C1等组成单片机电路。数码管DS1~DS3、VT1~VT3、R3~R12等组成数码显示电路。本机采用动态显示方式,使用共阳数码管,P3.3~P3.5口作数码管的位码输出,通过三极管驱动数码管。P1.0~P1.6口作段码输出,用以驱动数码管的各字段。BL是自带振荡器的讯响器。当P3.0输出低电平时,BL发出报警声。
二、软件设计
程序用C语言编写,由主程序、定时器T0中断服务程序、定时器T1中断服务程序、延时子程序等模块组成。主程序主要完成程序的初始化和对开始按键S1的检测。
TO中断服务程序由动态扫描显示等部分组成。T0的中断时间设置为5ms。采用三位显示,T0每中断一次显示一位,3次中断,即15ms,刷新一次数据。程序中用到三个数组:DisoTab[l0]用来存放字形码;BitTab[3]存放位驱动码;DispBuf[3]存放待显示的数,其中DispBuf[0]存放分钟数,DispBuf[1]、DispBuf[2]分别存放秒的十位和个位。T1中断服务程序用作时间计数。中断时间设置为50ms。为了获得1秒钟的时间。使用了变量n,T1每中断一次n加l。当n=20时即得到1秒的时间。程序中s作秒计数,m作分计数,它们的初始值为s=0。m=5。当n计满20时s减l(当s为0时结果取59):当s计满60个数时m减1:m、s均为0说明5分钟的定时时间到。BL发出1秒钟报警声。
在计时过程中。如果要提前结束计时,只需按一下复位键S2,这时数码显示5:00;当按开始键S1后。倒计时开始。
三、元器件选择与安装
DS1~DS3选共阳LED数码管,BL选用内部带振荡器的讯响器。其余元器件的参数见附图。 先将C语言源程序用KEILC51编译成目标文件。即HEX文件。再用编程器将HEX文件写入AT89C205l中。安装时,将表示分的数码管DSI和表示秒的数码管DS2、DS3分开一定的距离。 |
|