|
单片机教程
栏目导航
第一页..单片机入门教程
第二页..单片机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时推出调整状态,时钟继续走动。 |