Arduino制作数字时钟


东枝
原创
发布时间: 2026-01-30 16:05:02 | 阅读数 0收藏数 0评论数 0
封面
本文介绍了如何使用 Arduino UNO、四位共阴极数码管和定时器库 TimerOne 构建一个简易数字时钟。通过定时器每秒触发中断,Arduino 自动累加秒和分钟,并实时刷新数码管显示,实现分钟:秒的计时功能。本文详细说明了硬件连接、数码管驱动、定时器设置及程序逻辑,非常适合初学者学习 Arduino 的定时控制、数码管显示和中断应用原理。

准备工作:

材料:

  1. Uno R3开发板
  2. 配套USB数据线
  3. 面包板及配套连接线
  4. 四位共阴极数码管
  5. 4个220Ω限流电阻


1

定时器库安装

在IDE中点击项目—>加载库—>管理库,嗖嗖TimerOne进行安装。 如图

2

根据原理图搭建电路。

根据四位数码管的引脚定义,将其段选引脚 a、b、c、d、e、f、g 以及小数点 dp,分别连接到开发板的数字引脚 7、6、5、10、11、8、9 和 4,用于控制各段的点亮状态。

数码管的位选引脚 1、2、3、4 分别串联一个 220Ω 限流电阻后,连接至开发板的数字引脚 2、3、12 和 13,用于实现数码管的动态扫描显示。限流电阻的作用是防止电流过大,保护数码管和开发板接口。


链接效果如图2所示

3

编码

新建sketch,拷贝如下代码替换自动生成的代码并进行保存。 连接开发板,设置好对应端口号和开发板类型,进行程序下载。


/*
SevTimer
使用定时器驱动四位数码管实现分钟:秒钟的数字时钟显示
*/

#include "TimerOne.h"
#include "SevSeg.h"

SevSeg sevseg;

// 定义时间变量
int minutes = 0; // 分钟
int seconds = 0; // 秒钟

// 数码管配置
const byte NUM_DIGITS = 4; // 数码管位数
const byte DIGIT_PINS[NUM_DIGITS] = {2, 3, 12, 13}; // 数码管位选引脚(连接 Arduino)
const byte SEGMENT_PINS[8] = {7, 6, 5, 10, 11, 8, 9, 4}; // 数码管段选引脚 a,b,c,d,e,f,g,dp
const byte HARDWARE_CONFIG = COMMON_CATHODE; // 共阴极数码管

void setup() {
// 初始化数码管
sevseg.begin(HARDWARE_CONFIG, NUM_DIGITS, DIGIT_PINS, SEGMENT_PINS);

// 初始化定时器 Timer1 为 1 秒周期
Timer1.initialize(1000000);
Timer1.attachInterrupt(timerISR); // 设置中断回调函数
}

void loop() {
// 显示时间,格式 MMSS(分钟*100 + 秒)
sevseg.setNumber(minutes * 100 + seconds, -1); // -1 表示不显示小数点
sevseg.refreshDisplay(); // 刷新显示,必须循环调用
}

// 定时器中断服务程序,每秒触发一次
void timerISR() {
seconds++;
if (seconds > 59) {
seconds = 0;
minutes++;
if (minutes > 59) {
minutes = 0;
}
}
}

4

完成

效果看媒体

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报