返回主页 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 进入论坛

 单片机教程 栏目导航   第一页..单片机入门教程    第二页..单片机c语言   第三页..红外遥控和步进电机    第四页..单片机问答

第7章 实例2 数码管时钟电路的设计---51系列单片机设计实例教程

LED数码管时钟电路采用24h计时方式,时、分、秒用六位数码管显示。该电路采用AT89C2051单片机,使用3V电池供电,只使用一个按键开关即可进入调时、省电(不显示LED数码管)和正常显示三种状态。

1.时钟电路硬件的设计

数码管时钟电路如图7.1所示,其采用AT89C2051单片机最小化应用设计,LED显示采用动态扫描方式实现,P1口输出段码数据,P3.0到P3.5口作扫描输出,P3.7接按钮开关。为了提供LED数码管的驱动电流,用三极管9012作电源驱动输出。为了提高秒计时的精确性,采用12MHz晶振。

                                              图7.1 采用89C2051的六位时钟电路

2.系统主要程序的设计

(1)主程序

本设计中的计时采用定时器TO中断完成,其余状态循环调用显示子程序,当P3.7端口开关按下时,转入调式功能程序。系统主程序流程图如图7.2所示。

(2)显示子程序

数码管显示的数据存放在内存单元70H—75H中,其中70H—71H存放秒数据,72H—73H存放分数据,74H—75H存放时数据,每一地址单元内存均为十进制BCD码数据的对应段码存放在ROM表中。显示时,先取出70H—75H某一地址中的数据,然后查得对应的显示用段码从P1口输出。P3口将对应的数码管选中,就能显示该地址单元的数据值。

                 图7.2 主程序流程图

(3)定时器TO中断服务程序

定时器TO用于时间计时。定时溢出中断周期设为50ms,中断累计20次(即1s)时对秒计数单元进行加1操作。时间计数单元地址分别在70H—71H(s)76H—77H(min)、78H—79H(h),7AH单元内存放“熄灭符”数据(#0AH)。在计数单元中采用十进制BCD吗计数,满60进位。TO中断服务程序流程图如图7.3所示。

                                      图7.3 TO中断服务程序

(4)T1中断服务程序

T1中断服务程序用于指示调整单元数字的亮闪。在时间调整状态下,每过0.3s,将对应单元的显示数据换成“熄灭符”数据(#OAH)。这样,在调整时间时,对应调整单元的显示数据就会间隔闪亮。

(5)调时功能程序

调时功能程序的设计方法是:按下按键,若按下时间小于1s,进入省电状态(数码管不亮,时钟不停),否则进入调分状态,等待操作,此时,计时器停止走动。当再次按下按钮时,若按下时间小于0.5s,则时间加1min;若按下时间大于0.5s,则进入小时调整状态。在小时调整状态下,当按键按下的时间大于0.5s时推出调整状态,时钟继续走动。

12个经典单片机程序设计实例:

闪烁LED小灯主程序图

数码管时钟电路的主程序

单键学习型遥控器的设计

15路电器遥控器的设计

自行车里程/速度计的设计

自动往返行驶小汽车的设计

遥控小汽车的设计

数码管时钟电路的设计

8*8点阵LED字符显示器的设计

8路输入模拟信号数值显示电路的设计

8路输入模拟信号数值显示电路程序

单键学习型遥控器的程序

如果对本文有疑问,请到论坛提问 编辑:51单片机学习网 @ 2009-10-20校对 中国开发板最佳品牌  版权:部分由编辑摘引,权利属原著作人