一款电路极简的单片机电子钟设计详解.docVIP

  • 0
  • 0
  • 约6.4千字
  • 约 24页
  • 2017-10-13 发布于江苏
  • 举报

一款电路极简的单片机电子钟设计详解.doc

一款电路极简的单片机电子钟设计详解

电路特点 这里介绍的电子钟,电路可称得上极简,它仅使用单片的20引脚单片机完成电子钟的全部功能,而笔者见到的其它设计方案均采用二片以上的多片IC实现。 电路见图1。 一片20引脚的单片机AT89C2051为电子钟主体,其显示数据从P1口分时输出,P3.0~3.3则输出对应的位选通信号。由于LED数码管点亮时耗 电较大,故使用了四只PNP型晶体管VT1~VT4进行放大。本来笔者还有一种更简的设计方案(见图2),可省去VT1~VT4及R1~R4八个元件,但 这种设计由于单片机输出口的灌入电流有限(约20mA),数码管亮度较暗而不向读者介绍,除非你采用了高亮度的发光数码管。 P3.4、P3.5、3.7外接了三个轻触式按键,这里我们分别命名为:模式设定键set(P3.4)、时调整键hour(P3.5)、分调整键 min(P3.7)。C1、R13组成上电复位电路。VT5及蜂鸣器Bz为闹时讯响电路。三端稳压器7805输出的5V电压供整个系统工作。此电子钟可与 任何9~20V/100mA的交直流电源适配器配合工作,适应性强。 电子钟功能 1.走时:通过模式设定键set选择为走时,U1、U2显示小时,U3、U4显示分。U2的小数点为秒点,每秒闪烁一次。 2.走时调整:通过模式设定键set选择为走时调整,按下hour键对U1、U2的走时“时”显示进行调整(每0.2秒递加1)。按下min键对U3、U4的走时“分”显示进行调整(每0.2秒递加1)。 3.闹时调整:通过模式设定键set选择为闹时调整,按下hour键对U1、U2的闹时“时”显示进行调整(每0.2秒递加1)。按下min键对U3、U4的闹时“分”显示进行调整(每0.2秒递加1)。 4.闹时启/停设定:通过模式设定键set选择为闹时启/停设定,按下min键U3的小数点点亮,闹时功能启动;按下hour键U3的小数点熄灭,闹时功能关停。 由于电路设计得极其简单,因此丰富的功能只能由软件完成,这里软件设计成为了关键。下面介绍软件设计要点。 图3为主程序状态流程。 图3 运行时建立的主要状态标志如下: flag—掉电标志。掉电后,flag内为一随机数;重新设定时间后flag内写入标志数55H。 set—工作模式设定标志。 hour—走时“时”单元。 min—走时“分”单元。 sec—走时“秒”单元。 deda—走时5mS计数单元 t_hour—闹时“时”单元。 t_min—闹时“分”单元。 d_05s—0.5秒位标志。每秒钟的前0.5秒置1,后0.5秒置0,以使秒点闪烁。 o_f—闹时启/停位标志。闹时启动置1,闹时关停置0。 另外将定时器T0设定为5mS的定时中断。这里晶振频率为12MHz,因此5mS的初值为-5000,但实际上程序还要作其它运算,使得时间偏长,经调整 为-4800后试验刚好。计时单元deda每次中断均加1。走时函数判断deda=200时即令秒单元sec加1。同理秒单元sec满60后令分 单元min加1。分单元min满60后令时单元hour加1。时单元hour满24后清0。 上电后,首先进行初始化,对各状态标志、输入输出口及定时器T0进行初始化工作,以适应后面程序的要求。 随后程序判断有无set键按下,如按下,则set键值从0起加1。set键值只能从0加到3,然后又回到0。 接下来,根据键值进行散转。若set=0,运行走时程序;若set=1,进入调整闹时时间程序;若set=2,进入调整走时时间程序;若set=3,显示已调好的闹时时间,同时进入启/停闹时程序。 散转完后,进行判断掉电标志flag是否等于55H。若不等,说明刚开机上电或运行过程中掉过电,这时四个数码管以1Hz的频率闪烁四个8字,提示时间不准;若相等,说明未掉电,RAM区内容未变化,时间准确。 再下来程序又转回到初始化之后进行循环运行。 由于使用了四只数码管密集排列,因此只能采用双面印刷板设计,图4、5分别为正面(元件面)、反面的印板图。尺寸3000milx4000mil(7.62cmx10.16cm)。图6为计算机输出的三维仿真印制板。 图4 图5 图6 元件选用 为了走时准确,晶振X最好选用温漂小的。四个数码管U1~U4可选用发绿光的,这样光泽较柔和。蜂鸣器Bz要购买绕线型的电动式蜂鸣器(市场上有一种加电压即工作的蜂鸣器这里不适用),因驱动信号为脉冲信号。其它元件一般无特殊要求。 使用方法 上电后,四个LED数码管闪烁四个8字。 按一下set键,

文档评论(0)

1亿VIP精品文档

相关文档