news 2026/3/29 21:32:03

如何完成一个方便简单的Arduino共阳极数码管实验(从0~9依次循环亮起)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何完成一个方便简单的Arduino共阳极数码管实验(从0~9依次循环亮起)

文章目录

    • 实验演示
    • 共阴极数码管和共阳极数码管的区别
    • 所需器材
    • 连接草图
    • 程序代码
    • 代码说明
      • 代码功能概述
      • 核心数据结构
      • 关键函数逻辑
    • 小结

实验演示

共阴极数码管和共阳极数码管的区别

在开始实验之前,请让我简单解释一下共阴极数码管和共阳极数码管的区别,这是这个实验中一个非常重要的概念

共阴极:把所有段的 “负极” 捆在一起接GND,想点亮某一段,就给该段的 “正极” 接高电平(相当于给这段通正向电)
共阳极:把所有段的 “正极” 捆在一起接VCC,想点亮某一段,就给该段的 “负极” 接低电平(相当于给这段通反向电)

就以上面的实验演示来说,可以看到我的数码管下方连接的是arduino5v引脚,在使用我下面的代码,能够点亮,说明是共阳极数码管,但如果是连接的是arduinoGND引脚,那就不能点亮

所需器材

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

连接草图

程序代码

// 一维数组:映射a~h段到Arduino 2~9号引脚(a=2, b=3, c=4, d=5, e=6, f=7, g=8, h=9)constintsegPins[8]={2,3,4,5,6,7,8,9};// 二维数组:共阳极数码管0~9对应的a~h引脚电平(LOW=点亮,HIGH=熄灭)// 行:数字0-9;列:a, b, c, d, e, f, g, h(h=dp小数点)// 共阳极逻辑:段引脚输出LOW则点亮,输出HIGH则熄灭constintnumSegs[10][8]={{LOW,LOW,LOW,LOW,LOW,LOW,HIGH,LOW},// 0: a-f亮,g灭,小数点亮{HIGH,LOW,LOW,HIGH,HIGH,HIGH,HIGH,LOW},// 1: b-c亮,其余灭,小数点亮{LOW,LOW,HIGH,LOW,LOW,HIGH,LOW,LOW},// 2: a,b,d,e,g亮,c,f灭,小数点亮{LOW,LOW,LOW,LOW,HIGH,HIGH,LOW,LOW},// 3: a,b,c,d,g亮,e,f灭,小数点亮{HIGH,LOW,LOW,HIGH,HIGH,LOW,LOW,LOW},// 4: b,c,f,g亮,a,d,e灭,小数点亮{LOW,HIGH,LOW,LOW,HIGH,LOW,LOW,LOW},// 5: a,c,d,f,g亮,b,e灭,小数点亮{LOW,HIGH,LOW,LOW,LOW,LOW,LOW,LOW},// 6: a,c,d,e,f,g亮,b灭,小数点亮{LOW,LOW,LOW,HIGH,HIGH,HIGH,HIGH,LOW},// 7: a,b,c亮,其余灭,小数点亮{LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW},// 8: 全亮{LOW,LOW,LOW,LOW,HIGH,LOW,LOW,LOW}// 9: a,b,c,d,f,g亮,e灭,小数点亮};voidsetup(){// 遍历引脚数组,初始化所有段引脚为输出模式for(inti=0;i<8;i++){pinMode(segPins[i],OUTPUT);}}voidloop(){// 循环显示0~9,每个数字显示1秒for(intnum=0;num<10;num++){displayNumber(num);// 调用通用显示函数delay(1000);}}voiddisplayNumber(intnum){// 边界检查:防止传入非法数字导致数组越界if(num<0||num>9){return;}// 遍历所有段引脚,按共阳极段码设置电平for(inti=0;i<8;i++){digitalWrite(segPins[i],numSegs[num][i]);}}

代码说明

代码功能概述

该Arduino程序控制共阳极7段数码管,循环显示数字0-9。通过预定义的段码表(numSegs)和引脚映射(segPins)实现动态数字显示

核心数据结构

segPins数组
定义数码管a~h段对应的Arduino引脚(2-9号引脚),顺序为a→h

numSegs二维数组
存储0-9数字的共阳极段码逻辑:

每行对应一个数字(0-9)
每列对应a~h段电平(LOW=点亮,HIGH=熄灭)
第8位(h)控制小数点

关键函数逻辑

setup()
初始化所有段引脚为输出模式,确保能驱动数码管。

loop()
主循环每1秒切换显示一个数字(0→9),调用displayNumber()实现具体显示。

displayNumber(int num)

参数验证:仅处理0-9的输入
数字显示:根据numSegs数组设置各引脚电平,共阳极逻辑下LOW点亮对应段

小结

这虽然是一个简单的实验,但是每一个环节都是环环相扣,就像一个部件都是由于许多个零件组成的,即使零件再小,但只要缺少一个零件就无法运行,即使其中的代码再简单,也需要怀着一颗细致的心

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 1:02:07

JConsole 中 GC 时间统计的含义

要理解 JConsole 中 GC 时间统计的含义,需结合 垃圾收集器类型​ 和 统计维度​ 拆解: 1. 关于 PS MarkSweep 上的 12.575 秒 (16 收集) PS MarkSweep:是 JVM 中用于清理 老年代(PS Old Gen)​ 的垃圾收集器(属于 Full GC 收集器,触发时会暂停所有应用线程,即 STW)。…

作者头像 李华
网站建设 2026/3/27 0:39:55

自由职业与咨询:测试工程师的另一种活法

在数字经济的浪潮中&#xff0c;软件测试工程师的角色正从传统的全职雇佣模式&#xff0c;向更灵活的自由职业与咨询路径扩展。随着人工智能、云计算和敏捷开发的普及&#xff0c;测试行业对专业化、独立服务的需求日益增长。本文基于2025年的行业现状&#xff0c;探讨测试工程…

作者头像 李华
网站建设 2026/3/23 19:38:45

告别手动更新烦恼:Latest让你的macOS应用始终保持最新状态

告别手动更新烦恼&#xff1a;Latest让你的macOS应用始终保持最新状态 【免费下载链接】Latest A small utility app for macOS that makes sure you know about all the latest updates to the apps you use. 项目地址: https://gitcode.com/gh_mirrors/la/Latest 你是…

作者头像 李华
网站建设 2026/3/25 16:12:06

谈判技巧:在offer阶段如何为自己争取更好的薪酬包?

软件测试从业者的薪酬谈判机遇与挑战 在2025年底的软件测试行业中&#xff0c;随着人工智能和自动化测试工具的普及&#xff0c;企业对高素质测试人才的需求持续增长&#xff0c;这为从业者争取更优薪酬包创造了有利条件。然而&#xff0c;许多测试工程师在offer阶段因缺乏谈判…

作者头像 李华
网站建设 2026/3/17 7:19:51

Open-XiaoAI:如何让小爱音箱真正听懂你的声音,解锁无限可能

Open-XiaoAI&#xff1a;如何让小爱音箱真正听懂你的声音&#xff0c;解锁无限可能 【免费下载链接】open-xiaoai 让小爱音箱「听见你的声音」&#xff0c;解锁无限可能。 项目地址: https://gitcode.com/gh_mirrors/op/open-xiaoai 在智能音箱普及的今天&#xff0c;你…

作者头像 李华
网站建设 2026/3/27 1:10:56

在线字体编辑器终极指南:轻松编辑转换字体文件

在数字化设计时代&#xff0c;字体已成为提升作品质量的关键元素。在线字体编辑器让每个人都能轻松编辑、转换和优化字体文件&#xff0c;无需安装复杂软件。fonteditor作为一款功能全面的开源工具&#xff0c;支持TTF、WOFF、WOFF2、OTF、SVG、EOT等多种格式&#xff0c;让字体…

作者头像 李华