单片机简易数字钟c语言程序,用AT89C51/AT89S52单片机制作的简易数字钟

本文介绍的单片机控制数字钟硬件结构简单,所需元器件少,价格低廉,制作容易,适合初学者习作。单片机选用带flashROM的51系列,具体型号AT89C51或AT89S52等。PO口、Pl口、P2口、P3口各接一共阳数码管,直接驱动。PO和P1所接的数码管分别显示分、十分。P2口所接的数码管显示小时,为了和分钟数字区别开,该数码管的小数点常亮。P3口的P3.O和P3,1分别接第四个数码管的b、c段显示1,即十小时。如果不到十小时,则不显示。

小时为12进制,分为60进制。时钟为12MHz。两按钮分别校时和校分。复位按钮清零。总体框图如上图。

一、硬件电路(参见原理图下图)

1、电源:51系列单片机需要5V直流稳压电源。将220V交流电降压,变压器选择5W,次级电压为10V。桥式整流,二极管选择1N4002。选三端稳压器7805。2个100UF25V电容在输入和输出滤波。在5V输出端再加一个0.01uF瓷片电容进行高频滤波。

2、复位电路:复位电路采用上电复位和按钮复位。由一个10UF的电容和一个按钮以及51kQ、2.2kQ电阻各一个构成。

3、外部晶振电路:外部晶振电路由2个30pF的电容和一个12MHz的晶体振荡器构成。

4、校时和校分电路:由P3.3外接一个按钮开关到地作为校时键。由P3.2外接一按钮到地作为校分键。

5、显示电路:因为P口的灌电流在15mA左右,可直接驱动数码管。由PO口和P1口各外接一个共阳极数码管,直接驱动,PO所接数码管显示分,P1所接数码管显示十分,小数点不点亮。P2口外接一个数码管显示小时,但小数点要点亮,用以分隔时分。P3口的P3.1和P3.0分别外接到一数码管的b段和c段,显示十小时,如果不到十小时,该两段灭。小时的显示为12进制。

27f09f8b35b1796722faeb061b98728b.png

9d0eea31233bec9965c4f7a9c88e46dd.png

二、软件系统

软件系统分四个部分:主程序部分,计时显示中断子程序部分,校时中断子程序部分,校分中断子程序部分,分别介绍如下:

1、主程序部分

主程序流程如右图.主要有设置堆栈,清R2(为50ms计数器)、R3(分计数器)、R4(十分计数器)、R5(小时计数器)、R6(十小时计数器);设置定时器,设置中断等,汇编语言源程序如下:

cb74b70eb2c60144374aab6661d35dcc.png

fa70984aec315d8c6f4d1da2f6d16876.png

b25ac688bcbcc3029d6d16ac44c0ae5c.png

13d029ff0566226c4558349b1d63add0.png

42341dc542bb3cca687e3411002fe60d.png

三、电路安装和调试

电路安装参考图(万能板焊接面)如下图。为了安装方便,其中各数码管管脚和单片机P口各驱动电阻端直接用细软导线相连,下图中未画出。只要安装无误,硬件方面不需调试。如时间误差过大(每天误差大于10秒),在软件方面,可修改计时显示中断子程序中装入TLO中的初值BOH,加大或减小即可。

eba67bafeb7ec277b38f5a6c2e0a2606.png

四、元器件明细表

c4cd154b32460b2a2475dbf76d29dfd3.png

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值