Arduino共阴极数码管0-9数字循环显示

一、所需硬件

Arduino 板1个
USB下载数据线1根
面包板1个
杜邦线若干
1k 电阻 8 个
共阴极数码管1个

二、接线图

                                                                                                                                                                      三、代码

// 1. 定义常量与数组(核心优化:用数组替代硬编码)
// 一维数组:引脚映射(a-h对应Arduino引脚2-9,顺序与段码列一致)
const int segPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // 索引0=a,1=b,2=c,3=d,4=e,5=f,6=g,7=h
// 二维数组:共阴极段码表(行=数字0-9,列=a-h电平:0=LOW(亮),1=HIGH(灭))
const byte segCodes[10][8] = {
  {0,0,0,0,0,0,1,1}, // 0: a,b,c,d,e,f亮;g,h灭
  {1,0,0,1,1,1,1,1}, // 1: b,c亮;其余灭
  {0,0,1,0,0,1,0,1}, // 2: a,b,g,d,e亮;c,f,h灭
  {0,0,0,0,1,1,0,1}, // 3: a,b,c,d,g亮;e,f,h灭
  {1,0,0,1,1,0,0,1}, // 4: b,c,f,g亮;a,d,e,h灭
  {0,1,0,0,1,0,0,1}, // 5: a,c,d,f,g亮;b,e,h灭
  {0,1,0,0,0,0,0,1}, // 6: a,c,d,e,f,g亮;b,h灭
  {0,0,0,1,1,1,1,1}, // 7: a,b,c亮;其余灭
  {0,0,0,0,0,0,0,1}, // 8: 全亮;h灭
  {0,0,0,0,1,0,0,1}  // 9: a,b,c,d,f,g亮;e,h灭
};
const int PIN_COUNT = sizeof(segPins)/sizeof(segPins[0]); // 自动计算引脚数量(无需硬编码8)

// 2. 封装函数:初始化引脚(模块化,易复用)
void initSegPins() {
  for(int i=0; i<PIN_COUNT; i++) {
    pinMode(segPins[i], OUTPUT); // 遍历引脚数组初始化
  }
}

// 3. 封装函数:显示单个数字(核心封装,输入0-9即可显示)
void showNumber(int num) {
  // 边界校验:仅处理0-9,避免数组越界
  if(num < 0 || num > 9) return;
  // 遍历引脚+段码,设置电平
  for(int i=0; i<PIN_COUNT; i++) {
    digitalWrite(segPins[i], segCodes[num][i]);
  }
}

// 4. 初始化函数(简化,仅调用封装函数)
void setup() {
  initSegPins(); // 调用封装的引脚初始化函数
}

// 5. 主循环(极简,逻辑清晰)
void loop() {
  // 遍历0-9,调用封装函数显示,延迟1秒
  for(int num=0; num<10; num++) {
    showNumber(num);
    delay(1000);
  }
}
  • 引脚输出LOW(低电平)→ 对应段导通发光
  • 引脚输出HIGH(高电平)→ 对应段截止熄灭
  • 代码驱动共阴极 8 段数码管循环显示 0~9 ,每个数字保持显示 1 秒,一直循环。
  • 四、效果图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值