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

news/2026/1/16 19:40:16/文章来源:https://www.cnblogs.com/yangykaifa/p/19493823

文章目录

  • 入门必看!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.mzph.cn/news/1169674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AL_ControlInd代码注释

///////////////////////////////////////////////////////////////////////////////////////// /**\param alControl 请求的新的状态\param alStatusCode 请求的状态码\brief 这个函数处理EtherCAT状态机。它被调用* 在AL控制时间发生&#xff08;0x220的位0&…

使用Beyond Compare5.0+的方法

很多文章都提了用某个keygen脚本 但是没提要先改windows系统下的bc.exe 这里摘录了一位大佬的方法。原文链接&#xff1a; https://github.com/garfield-ts/BCompare_Keygen?tabreadme-ov-file 下载的脚本在这里&#xff1a; https://github.com/garfield-ts/BCompare_Ke…

【2026】超详细BurpSuite安装保姆级教程,Burp Suite的基本介绍及使用,收藏这一篇就够了

【2026】超详细Burp Suite安装保姆级教程&#xff0c;Burp Suite的基本介绍及使用&#xff0c;收藏这一篇就够了 一、简介 Burpsuite 是用于攻击 web 应用程序的集成平台。它包含了许多 Burp 工具&#xff0c;这些不同的 Burp 工具通过协同工作&#xff0c;有效的分享信息&am…

Hadoop_Spark背后的CAP定理:大数据框架设计哲学

Hadoop/Spark背后的CAP定理&#xff1a;大数据框架设计哲学关键词&#xff1a;CAP定理、分布式系统、一致性、可用性、分区容错性、Hadoop、Spark摘要&#xff1a;本文将带你走进分布式系统的"三角困境"——CAP定理&#xff0c;用生活中的小故事和大数据框架&#xf…

性价比高的厌氧池清淤哪个靠谱

厌氧池清淤哪家好&#xff1f;2024年性价比TOP5专业深度测评开篇&#xff1a;行业痛点与测评使命厌氧池作为污水处理的核心设施&#xff0c;其清淤作业直接影响企业环保合规与生产效率。然而&#xff0c;市场上清淤服务商资质参差不齐&#xff0c;价格从每立方几十元到数百元差…

深入解析BPFDoor:利用BPF技术的隐蔽Linux后门

嗨&#xff0c;恶意软件爱好者们&#xff0c; 今天&#xff0c;我将分析一款名为“BPFDoor”的恶意软件。该恶意软件于2022年被发现。 在分析恶意软件之前&#xff0c;别忘了使用虚拟机&#xff0c;并始终记住使用仅主机模式连接。 摘要 BPFDoor 是一款 Linux/Unix 恶意后门程序…

手把手教你用9款AI工具一键生成毕业论文全程指南

一、毕业论文工具选择&#xff1a;9款AI工具核心功能对比表 写论文前最头疼的是“选对工具”——不同工具擅长的环节不同&#xff0c;选错了反而浪费时间。下面这张表格帮你快速定位每个阶段最适合的工具&#xff0c;核心推荐的「鲲鹏智写」会用★标注&#xff0c;方便你重点关…

HTTPS加密与JWT鉴权机制详解

HTTPS加密与JWT鉴权机制详解 1.HTTPS 数据传输加密流程 非对称加密&#xff08;公钥/私钥&#xff09;并不直接用于数据传输 • 直接用公钥加密大量业务数据效率太低&#xff08;RSA、ECC 这种算法比 AES 慢几个数量级&#xff09;。• 实际上&#xff0c;非对称加密只用来 …

OV SSL证书为什么是助力企业网站实现HTTPS加密的优选方案?怎么快速获取?

一、为什么 OV SSL 证书是企业网站实现 HTTPS 加密的优选方案&#xff1f; &#xff08;一&#xff09;核心优势&#xff1a;安全 可信 合规的黄金三角 1. 身份强验证&#xff0c;终结“真假官网”难题 双重审核机制&#xff1a;不同于 DV&#xff08;域名验证&#xff09…

Ubuntu 22.04上的Bitsandbytes模型量化完全指南:从原理到实践 - 实践

Ubuntu 22.04上的Bitsandbytes模型量化完全指南:从原理到实践 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &q…

3月份SSL证书有效期缩短为200天?企业应该如何有效的应对?

一、政策背景与核心解读 政策背景​ 国际标准组织 CA/浏览器论坛&#xff08;CA/Browser Forum&#xff09;通过了《SC-081v3 提案》&#xff0c;决定逐步缩短 SSL/TLS 证书最长有效期&#xff0c;旨在降低私钥泄露风险、加速加密算法迭代&#xff0c;并提升网络安全整体水平。…

网络安全等级保护制度详解,一文掌握核心要点!

网络安全等级保护制度详解&#xff0c;一文掌握核心要点&#xff01;_等级保护相关政策和法律法规 一、等级保护制度发展情况 等级保护制度的法律依据 《计算机信息系统安全保护条例》&#xff08;1994年General Office of the State Council第147号令&#xff09; 公安部主…

全网最全9个一键生成论文工具,继续教育学生轻松搞定毕业论文!

全网最全9个一键生成论文工具&#xff0c;继续教育学生轻松搞定毕业论文&#xff01; AI 工具助力论文写作&#xff0c;轻松应对学术挑战 在当今快速发展的教育环境中&#xff0c;继续教育学生面临着越来越高的学术要求。尤其是在撰写毕业论文时&#xff0c;如何高效完成内容创…

2026年靠谱GEO助手源码哪家?源头作者直推 - 源码云科技

2026年靠谱GEO助手源码哪家?源头作者直推2026年AI搜索风口全面爆发,生成式引擎优化已然成为企业引流获客的核心赛道,选择一家靠谱的GEO优化服务商,拿到一手GEO优化源码,直接决定了创业项目的盈利上限和市场竞争力…

yum命令用法与技巧总结

yum是RHEL、CentOS等Linux系统上强大的软件包管理器&#xff0c;能自动解决依赖问题。掌握它的核心操作和技巧&#xff0c;能极大提升你的系统管理效率。 &#x1f4e6; yum核心操作速查 你可以将yum理解为Linux的“应用商店”&#xff0c;它通过仓库&#xff08;Repository&…

靶场 一个免费的CTF靶场练习平台

靶场 | 一个免费的CTF靶场练习平台 介绍 一个动态flag练习靶场平台拥有容器管理、题库管理、动态flag、作弊检测、公告通知、题库隔离、排行榜等功能&#xff0c;能够实现动态启动题库、快速部署、权限分离、一键部署、多端口开放&#xff0c;并提供compose容器支持&#xff…

计算机专业必看,大学如何规划才能跑赢同龄人?

计算机专业必看&#xff0c;大学如何规划才能跑赢同龄人&#xff1f; 计算机专业 -COMPUTER SCIENCE- 你有没有发现——同样学计算机&#xff0c; 有人**一毕业****月薪两三万、**甚至年薪百万&#xff1b; 也有人六七千、甚至对口工作都找不着。 差距到底在哪&#xff1…

2026集美装修公司哪家好?口碑+性价比精选,装修博主实测分享! - 品牌测评鉴赏家

2026集美装修公司哪家好?口碑+性价比精选,装修博主实测分享!一、引言:集美装修选公司,别再盲目踩坑! 1.1 集美业主装修的痛点与需求 在集美,不管是拿到新房钥匙、满心憧憬未来生活的业主,还是打算对老房子进行…

dnf包管理器使用指南与技巧总结

一、命令结构概览基本语法dnf [选项] <子命令> [参数]二、核心子命令详解1. 安装相关命令install - 安装软件包sudo dnf install package_name sudo dnf install package1 package2 package3 # 多个包 sudo dnf install package-1.0-1.el8.x86_64 # 指定版本 sudo dnf…

2026年口碑好的温州商务车租车,温州大巴55座租车,温州商务车出租公司用户好评名录 - 品牌鉴赏师

引言在当今出行需求日益多样化的时代,租车服务成为了许多人商务出行、旅游度假等活动的重要选择。温州作为经济活跃、旅游资源丰富的城市,其租车市场也呈现出蓬勃发展的态势。为了帮助消费者在众多的租车公司中挑选到…