自动控制的时钟设计方案较多,利用中小规模集成电路设计,或利用专用的时钟芯片设计,也可以利用单片机进行设计等,且各有特点。其中利用单片机实现时钟的设计方法,具有电路简单、编程灵活、便于扩展、精确度高、稳定性好等优点,本文介绍一种选择利用单片机编程六位数码自动控制钟的设计。
在选择单片机时,考虑到AT89C2051体积较小、性价比较高,在家电产品、工业控制、计算机产品、医疗器械、汽车工业、智能仪器等应用领域已成为用户降低成本的首选产品。所以,该设计选用AT89C2051作为时钟的中心控制单元,结合相关外围电路,实现了时间显示、时钟调整、闹钟设置、整点报时及省电等多种功能。
1 自控钟的系统设计
1.1定时器工作方式选择
时钟设计的关键问题是秒信号的产生,在使用MCS51的定时器/计数器生成秒信号时,若选用12 MHz晶振,选择工作方式0时,最大定时时间为8.19 ms;选择工作方式1时,最大定时时间为65.54 ms;选择工作方式2,3时,最大定时时间为0.26 ms。因为进入中断要做很多判断,如果中断时间太短则不能完成任务,导致时钟误差增大,所以选择中断时间最长的工作方式1。这时定时器最大定时时间只能达到65.5 ms,离1 s还相差甚远。因此,该设计采用硬件定时和软件计数相结合的方式实现秒信号的,即把秒定时时间定为50 ms,软件计数20次为1 s。
1.2定时初值的计算
MCS51系列单片机的定时器为加法计数器计满溢出时申请中断,所以在给定时器赋初值时,不能直接输入所需的计数值,而应输入定时器的计数最大值与需要定时值的差值。采用定时器/计数器0,选择工作方式1,在选用12 MHz系统晶振时,要得到50 ms定时,设定时初值为X,则有如下等式:(216-X)�?=50 000
计算得定时初值X=15 536,二进制表示为1110010110000B,16进制表示为3CB0H。
为了实现调整时间时的闪烁显示功能,采用T1定时器,定时初值仍可延用上面计算结果。
1.3存储单元的设置
为了方便实现其他附加功能,将计时存储单元、显示存储单元与闹钟时间存储单元分开。其中显示装置是用6位LED数码管,时钟的时、分和秒各占2位。在闹钟设置时显示闹钟时间,其余时间显示时钟。
2 自控钟的电路设计
2.1时钟电路原理图
数码管时钟电路以AT89C2051单片机最小系统为基础,显示采用LED动态扫描方式实现,P3.7口接设置按钮,用来实现调时钟、调闹钟、省电3种状态的转换,在闹钟和时钟调整时为上翻键,也是关闭闹钟的按键。为了提供LED数码管的驱动电流,用三极管9012作输出驱动。为了提高秒计时精确度,系统选用12 MHz晶振,即电路主要是由单片机、复位电路、振荡电路和显示电路4部分组成。复位电路采用上电复位,振荡电路选用12 MHz中晶振和2个30 pF的瓷介电容。(图略)
2.2 AT89C2051芯片简介
AT89C2051是Atmel公司生产的带2 kB FLASH存储器(PEROM)的8 位单片机,它具有如下主要特性:与MCS51兼容;内部带2 kB可编程FLASH存储器;工作电压范围为2.7~6 V;全静态工作频率为0 Hz~24 MHz;128�?位内部RAM;2个16位定时器/计数器;片内振荡器和时钟电路;片内精确模拟比较器;低功耗的休眠和掉点模式。
AT89C2051减少了两个外部端口,因而芯片的外部引脚大大减少,芯片尺寸很小。它是一个有20引脚双列直插式的芯片。
2.3显示电路
时钟采用6个共阳极的数码管完成时、分、秒的显示,P3口的低6位分别通过5.6 k的限流电阻与相应的驱动三极管的连接,三极管的导通与否决定对应位是否显示。其中数码管引脚与单片机引脚的连接关系如表1所示,数码管的显示代码如表2所示:
表1数码管引脚与单片机引脚的连接关系
表2数码管的显示代码
3 自控钟的软件设计
3.1主程序
主程序主要完成系统的初始化和按键的捕获,在键没有被按下时调用显示子程序。
3.2 显示程序
需要显示时,从P1口送出时钟的显示段码,从P3口低6位送出时钟的位选信号,通过动态扫描的方式实现时钟的显示功能。应该注意的是,16进制数所表示的共阳极的段码最高位都为1,这样在显示时它将P1.7强行置1,即直接关闭响铃,所以在显示数据送给P1口之前要进行判断,如果P1.7为0,则将显示数据与立即数7fH逻辑与;如果P1.7为1,则不做任何,直接输出处理。这样,显示时就不会影响响铃的正常进行。
3.3 T1中断服务程序
T1中断服务程序用来实现闪烁显示功能。在调整时钟或设置闹钟的状态下,使对应显示单元的数据在时间数据和“熄灭符”数据(#0AH)之间以0.3 s为间隔交替显示,这样,对应的调整单元数据就会闪烁,以便于调整。
3.4 调时程序
首先需要说明长按和短按的标准,其标志是铃声,当在铃响之前放开按键则是短按,之后放开则是长按。调时程序的设计方法是:2次连续短按进入省电状态(时钟继续,但数码管不亮);第一次短按,第二次长按进入调时状态,此时关闭T0,时钟停止,开始调整时间,短按实现分钟加1操作,分钟调整完毕后,若长按则进入小时调整状态,同样,短按实现小时加1操作,当小时调整好后长按则退出时间调整,开启T0,启动时钟。
在响闹铃的时候,有按键按下,其作用是关闭闹铃,不进入调时状态。
3.5 闹钟调整程序
一次长按进入闹钟调整程序。其中闹钟调整和时钟调整的方法完全相同,只是时钟调整时关闭T0,而在闹钟调整程序中T0需要继续工作。另外,要设置不同的标志,以实现闹钟调整时闪烁的数据是闹钟。
总之,在应用单片机设计的电路中,程序设计很重要,尤其是硬件电路比较简单的情况下,这就需要软件完成和补充其他功能。主要思想为将总体功能分解成若干个模块,每个功能模块完成特定的功能,并且确定各模块之间的关系,最终完成设计的所有功能。
文章来源于网络