当前位置: 首页 > news >正文

保姆级教程!1 位数码管 0-9 循环展示(附长杂版 + 极致精简版代码)

文章目录

  • 入门必看!1 位数码管模拟值显示实验(附完整代码)
        • 简介什么是一位数码管
        • 材料用具
        • 实物连接图:
        • 长杂版代码:
    • 视频展示
        • 结束语

入门必看!1 位数码管模拟值显示实验(附完整代码)

简介什么是一位数码管

一位数码管是常用的简易显示器件,由 8 个发光二极管组成(7 个构成数字 0-9 的 A-G 段,1 个是小数点 DP),用于显示单个数字或符号。

内部结构:包含 7 段数字段(A-G)+1 个小数点 DP,共 8 个发光二极管。

分类及工作原理:按二极管连接方式分共阳、共阴两类:
共阳数码管:所有二极管阳极接公共端 COM(接 + 5V),某字段阴极接低电平→该字段点亮。
共阴数码管:所有二极管阴极接公共端 COM(接 GND),某字段阳极接高电平→该字段点亮。

材料用具
材料数量
Arduino 板1
USB数据线1
杜邦线若干
:—:—:
面包板1
1kΩ电阻8
共阴极数码管1

共阴极数码管
将数码管的正面朝向我们,自上而下从左往右的引脚分别定义成
1~10,其中 3 号引脚和 8 号引脚都是公共端,用于接入电路中
的阴极(也叫GND),数码管中共有8个发光二极管,分别表示
成 a ~ h(h 为小数点),各个引脚所控制的发光二极管图中也
标出来了:
1 -> g
2 -> f
4 -> a
5 -> b
6 -> e
7 -> d
9 -> c
10 -> h

实物连接图:

实物图

长杂版代码:
int a = 2; // 定义数字接口2 连接a
int b = 3; // 定义数字接口3 连接b
int c = 4; // 定义数字接口4 连接c
int d = 5; // 定义数字接口5 连接d
int e = 6; // 定义数字接口6 连接e
int f = 7; // 定义数字接口7 连接f
int g = 8; // 定义数字接口8 连接g
int h = 9; // 定义数字接口9 连接h,也就是数码管中的dp
void setup() {
// put your setup code here, to run once:
int i;
for(i=2;i<=9;i++){
pinMode(i,OUTPUT); // 设置2~9号引脚为输出模式
}
}
void loop() {
// put your main code here, to run repeatedly:
digital_0(); // 显示数字0
delay(1000);
digital_1(); // 显示数字1
delay(1000);
digital_2(); // 显示数字2
delay(1000);
digital_3(); // 显示数字3
delay(1000);
digital_4(); // 显示数字4
delay(1000);
digital_5(); // 显示数字5
delay(1000);
digital_6(); // 显示数字6
delay(1000);
digital_7(); // 显示数字7
delay(1000);
digital_8(); // 显示数字8
delay(1000);
digital_9(); // 显示数字9
delay(1000);
}
// 显示数字0
void digital_0(void){
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
digitalWrite(h,HIGH);
}
// 显示数字1
void digital_1(void){
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,HIGH);
}
// 显示数字2
void digital_2(void){
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
}
// 显示数字3
void digital_3(void){
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
}
// 显示数字4
void digital_4(void){
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
}
// 显示数字5
void digital_5(void){
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
}
// 显示数字6
void digital_6(void){
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
}
// 显示数字7
void digital_7(void){
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,HIGH);
}
// 显示数字8
void digital_8(void){
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
}
// 显示数字9
void digital_9(void){
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
}

在这个代码中,很多东西都是重复的,作用一致所以我们可以改进他得到以下代码:

// 数码管段码数组:行对应0-9,列对应a(2)、b(3)、c(4)、d(5)、e(6)、f(7)、g(8)、h(9)引脚的电平
// HIGH=亮,LOW=灭(共阴极数码管,若为共阳极则电平反转)
const int segCodes[10][8] = {{HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW, HIGH},    // 0{LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH},       // 1{HIGH, HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH},    // 2{HIGH, HIGH, HIGH, HIGH, LOW, LOW, HIGH, HIGH},    // 3{LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH, HIGH},     // 4{HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH, HIGH},    // 5{HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH},   // 6{HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH},      // 7{HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH},  // 8{HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH, HIGH}    // 9
};
// 引脚映射:a(2)、b(3)、c(4)、d(5)、e(6)、f(7)、g(8)、h(9)
const int pins[8] = {2, 3, 4, 5, 6, 7, 8, 9};
void setup() {// 批量设置2-9号引脚为输出模式for (int i = 0; i < 8; i++) {pinMode(pins[i], OUTPUT);}
}
void loop() {// 循环显示0-9,每个数字显示1秒for (int num = 0; num < 10; num++) {displayDigit(num);delay(1000);}
}
// 通用数字显示函数:根据数字索引输出对应段码
void displayDigit(int num) {for (int i = 0; i < 8; i++) {digitalWrite(pins[i], segCodes[num][i]);}
}

用数组存储段码,替代冗余的独立函数:将 0-9 对应的数码管段电平(a-h 引脚)集中存储在二维数组中,彻底消除多个重复的数字显示函数。
引脚映射数组化,批量操作引脚:用数组存储 a-h 对应的引脚号(2-9),实现引脚模式和电平的批量设置,避免单独变量声明。
通用显示函数 + 循环遍历,简化主逻辑:通过一个函数读取段码数组控制引脚,在 loop 中循环 0-9 调用该函数,减少重复代码。

视频展示

数码管

结束语

通过这个1位数码管显示实验,相信你不仅掌握了数码管的工作原理、硬件接线方法,更学会了“去除冗余、数组化优化”的编程思路——从80行重复代码精简到20行核心逻辑,这正是Arduino编程“简洁高效”的核心魅力。

如果后续想拓展功能,比如添加小数点显示、实现数字计数递增/递减,或者升级为两位数码管显示,只需在精简版代码的基础上修改段码数组、引脚映射或循环逻辑即可。动手实践中遇到接线问题、代码报错,不妨回头对照原理部分逐一排查,技术成长正是在“实践-优化-拓展”中积累的~

快去拿起面包板和杜邦线,亲手实现属于你的数码管显示效果吧!如果需要进一步拓展实验(如多位数码管、动态显示等),随时可以留言交流~

http://www.jsqmd.com/news/254385/

相关文章:

  • 使用Beyond Compare5.0+的方法
  • 【2026】超详细BurpSuite安装保姆级教程,Burp Suite的基本介绍及使用,收藏这一篇就够了
  • Hadoop_Spark背后的CAP定理:大数据框架设计哲学
  • 性价比高的厌氧池清淤哪个靠谱
  • 深入解析BPFDoor:利用BPF技术的隐蔽Linux后门
  • HTTPS加密与JWT鉴权机制详解
  • 手把手教你用9款AI工具一键生成毕业论文全程指南
  • OV SSL证书为什么是助力企业网站实现HTTPS加密的优选方案?怎么快速获取?
  • Ubuntu 22.04上的Bitsandbytes模型量化完全指南:从原理到实践 - 实践
  • 3月份SSL证书有效期缩短为200天?企业应该如何有效的应对?
  • 网络安全等级保护制度详解,一文掌握核心要点!
  • 2026年靠谱GEO助手源码哪家?源头作者直推 - 源码云科技
  • 全网最全9个一键生成论文工具,继续教育学生轻松搞定毕业论文!
  • yum命令用法与技巧总结
  • 靶场 一个免费的CTF靶场练习平台
  • 计算机专业必看,大学如何规划才能跑赢同龄人?
  • 2026集美装修公司哪家好?口碑+性价比精选,装修博主实测分享! - 品牌测评鉴赏家
  • 2026年口碑好的温州商务车租车,温州大巴55座租车,温州商务车出租公司用户好评名录 - 品牌鉴赏师
  • dnf包管理器使用指南与技巧总结
  • 红队视角:内网是如何被一步步打穿的?
  • RPM命令详解与技巧总结
  • 海沧装修大揭秘!这几家公司你绝对不能错过 - 品牌测评鉴赏家
  • 集美装修不踩坑!4家宝藏装修公司,风格、性价比全拿捏 - 品牌测评鉴赏家
  • 黑客比普通程序员高在哪里
  • 海沧装修大揭秘:带你找到梦中情司 - 品牌测评鉴赏家
  • 2026年分布式供电架构/集中式供电架构/升压站架构制造企业推荐榜:电力系统架构实力供应商精选 - 品牌推荐官
  • RPM .spec 文件详解
  • 分销商城系统开发流程,分销系统哪个好用2026 - 码云数智
  • 2026同安装修攻略:千达成装饰深度解析,装修小白避坑必备 - 品牌测评鉴赏家
  • rpmbuild命令详解