基于 STC89C5xRC 的八位数码管时钟(完整代码+仿真)

✅ 文末提供代码和仿真文件!

该时钟能够实现时、分、秒的实时显示,采用动态扫描方式驱动多位数码管,通过定时器中断实现精确计时功能。

本设计主要使用以下硬件资源:

STC89C5xRC 系列单片机
8 位共阴极数码管(通过动态扫描方式驱动)
两个 GPIO 引脚(P1^0 作为 CLK 时钟线,P1^1 作为 DAT 数据线)
数码管显示采用串行数据传输方式,通过 CLK 和 DAT 两根线控制 8 位数码管的段选和位选信号,减少了对单片机 IO 口的占用。

程序工作流程

  1. 系统上电后,首先初始化定时器 0,设置为 50ms 中断一次
  2. 主循环中不断通过动态扫描方式刷新 8 位数码管
  3. 每产生一次定时器中断,计数器加 1
  4. 当计数器达到 20 时(累计 1 秒),秒数加 1,并处理进位
  5. 数码管上实时显示当前的时、分、秒,格式为 “HH-MM-SS”

仿真效果

在这里插入图片描述

主函数代码

void main()
{
    loading();  // 初始化定时器
    while(1)
    {
        // 动态扫描显示各个位
        sendbyte(second%10);	// 秒,个位
        delay(5);
        sendbyte_1(second/10);	// 秒,十位
        delay(5);
        sendbyte_2(10);	// 显示"-"
        delay(5);
        sendbyte_3(minite%10);	// 分,个位			
        delay(5);
        sendbyte_4(minite/10);	// 分,十位			
        delay(5);
        sendbyte_5(10);	// 显示"-"
        delay(5);
        sendbyte_6(hour%10);	// 小时,个位
        delay(5);
        sendbyte_7(hour/10);	// 小时,十位							
        delay(5);
    }
}

完整代码获取

在小程序内复制网盘链接下载后,直接解压即可。
https://www.kdocs.cn/l/cdKOEx0g5dWQ

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值