C++趣味编程玩转物联网:用树莓派Pico实现一位数码管动态显示

七段数码管是一种经典的电子显示器件,广泛应用于数字时钟、电子仪表等设备。本文将通过树莓派Pico开发板,介绍如何用C++代码控制一位七段数码管显示数字。作为一个嵌入式开发项目,这不仅是初学者理解数码管工作原理的好机会,也是C++开发者在硬件编程中的一个实践案例。
项目背景与目标
七段数码管的工作原理
七段数码管由七个LED组成(共阴极或共阳极设计),通过点亮不同的LED组合显示数字0-9。它是一种经济实用的显示解决方案,特别适合初学者学习电路控制和嵌入式编程。
项目目标
实现数码管动态显示数字9到0,通过延时循环显示数字序列,掌握数码管的基础控制方法以及C++程序与硬件的结合应用。
项目所需元件

- 树莓派Pico × 1
- 一位七段数码管(共阴极) × 1
- 220Ω电阻 × 8
- 面包板 × 1
- 公对母杜邦线若干
- USB数据线 × 1
数码管的接线原理与注意事项
1. 共阴极数码管接线
- 共阴极设计:所有段的负极连接在一起,并接到Pico的GND引脚。要点亮某段LED,需将对应引脚设置为高电平。
- 限流保护:每个段LED需通过220Ω电阻连接,以避免过电流烧毁LED。
2. GPIO引脚分配
a段:GP17b段:GP16c段:GP14d段:GP13e段:GP12f段:GP18g段:GP19dp(小数点):GP15
项目电路图和接线图


核心代码实现
以下是实现数字9到0动态显示的C++代码:
#include <Arduino.h>// 定义每个段的GPIO引脚
int a = 17, b = 16, c = 14, d = 13, e = 12, f = 18, g = 19, dp = 15;// 显示数字的函数
void digital_0() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, LOW); digitalWrite(dp, LOW); }
void digital_1() { digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(dp, LOW); }
void digital_2() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, LOW); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, LOW); digitalWrite(g, HIGH); digitalWrite(dp, LOW); }
void digital_3() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(f, LOW); digitalWrite(e, LOW); digitalWrite(dp, LOW); digitalWrite(g, HIGH); }
void digital_4() { digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(dp, LOW); digitalWrite(g, HIGH); }
void digital_5() { digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(dp, LOW); digitalWrite(g, HIGH); }
void digital_6() { digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(dp, LOW); digitalWrite(g, HIGH); }
void digital_7() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(dp, LOW); digitalWrite(g, LOW); }
void digital_8() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(dp, LOW); digitalWrite(g, HIGH); }
void digital_9() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(dp, LOW); digitalWrite(g, HIGH); }void setup() {for (int i = 12; i <= 19; i++) {pinMode(i, OUTPUT); // 将GPIO 12-19设置为输出模式}
}void loop() {digital_9(); delay(1000); digital_8(); delay(1000); digital_7(); delay(1000);digital_6(); delay(1000); digital_5(); delay(1000); digital_4(); delay(1000);digital_3(); delay(1000); digital_2(); delay(1000); digital_1(); delay(1000);digital_0(); delay(1000);
}
知识点解析
1. GPIO引脚控制
C++代码通过 pinMode 设置引脚为输出模式,通过 digitalWrite 控制引脚电平,点亮相应段。
2. 数字逻辑与分段控制
数字0到9的显示是基于七段LED的组合,代码中的每个函数定义了对应数字的点亮逻辑。
3. 延时与循环
delay(1000) 用于每秒切换一次数字,while 循环确保数字序列持续显示。
扩展与优化
-
添加交互性 引入按键或旋钮,控制数字切换速度或显示内容。
-
动态效果 使用PWM技术实现亮度渐变,提升视觉效果。
-
多位数码管 扩展项目至多位数码管,显示多位数字或简单字符。
-
与传感器结合 结合温度传感器或光传感器,实时显示环境数据。
项目教育意义
- C++基础巩固:数组管理、函数调用、循环控制等。
- 硬件认知提升:掌握数码管的显示原理与电路设计。
- 项目思维培养:理解从代码到硬件控制的完整链路。
结语
一位数码管的项目看似简单,却是嵌入式开发中的基础练习。通过项目实践,您不仅能熟悉C++与硬件的结合,还能为更复杂的嵌入式开发奠定基础。希望本文对您的学习有所启发!
如果您觉得本篇文章对您有帮助,欢迎点赞、收藏并分享,让更多人了解嵌入式开发的魅力!
本文章对应的精彩视频请点击-》C++编程&玩转物联网-用树莓派Pico实现一位数码管动态显示
动手实践学习套件请点击-》物联网-树莓派开发套件
欢迎加V交流

相关文章:
C++趣味编程玩转物联网:用树莓派Pico实现一位数码管动态显示
七段数码管是一种经典的电子显示器件,广泛应用于数字时钟、电子仪表等设备。本文将通过树莓派Pico开发板,介绍如何用C代码控制一位七段数码管显示数字。作为一个嵌入式开发项目,这不仅是初学者理解数码管工作原理的好机会,也是C开…...
SPA 单页面深入解读:优劣势剖析及实现方法
SPA(Single Page Application)单页面应用 什么是 SPA? SPA(Single Page Application,单页面应用)是一种 Web 应用程序,它通过 JavaScript 动态更新单一页面上的内容,而不是像传统的多页面应用程序那样每次用户与应用交互时都请求一个新的 HTML 页面。通过使用 AJAX 请…...
机器学习系列----关联分析
目录 1. 关联分析的基本概念 1.1定义 1.2常用算法 2.Apriori 算法的实现 2.1 工作原理 2.2 算法步骤 2.3 优缺点 2.4 时间复杂度 2.5实际运用----市场购物篮分析 3. FP-Growth 算法 3.1 工作原理 3.2 算法步骤 3.3 优缺点 3.4 时间复杂度 3.5实际运用——网页点…...
json数据四大加载方式
效果: 一、使用 import 静态加载 JSON 原理 使用 ES 模块的 import 语法直接引入 JSON 文件。Webpack/Vite 等构建工具会将 JSON 文件解析成 JavaScript 对象。 优点 简单直接,适合静态数据。不需要额外的网络请求。数据会随着打包文件一起部署。 缺点 J…...
JavaScript 中的数组(Array)对象的内置方法
JavaScript 中的数组(Array)对象提供了许多内置方法,用于对数组进行创建、操作、遍历和搜索等操作。以下是一些常用的数组方法及其简要说明: 创建和初始化数组 Array(): 创建一个新的空数组,或者根据提供的参数创建一…...
网络安全之国际主流网络安全架构模型
目前,国际主流的网络安全架构模型主要有: ● 信息技术咨询公司Gartner的ASA(Adaptive Security Architecture自适应安全架构) ● 美国政府资助的非营利研究机构MITRE的ATT&CK(Adversarial Tactics Techniques &…...
电子应用设计方案-16:智能闹钟系统方案设计
智能闹钟系统方案设计 一、系统概述 本智能闹钟系统旨在为用户提供更加个性化、智能化和便捷的闹钟服务,帮助用户更有效地管理时间和起床。 二、系统组成 1. 微控制器 - 选用低功耗、高性能的微控制器,如 STM32 系列,负责整个系统的控制和数据…...
【FRP 内网穿透 从0到1 那些注意事项】
【摘要】 最近跟第三方团队调试问题,遇到一个比较烦的操作。就是,你必须要发个版到公网环境,他们才能链接到你的接口地址,才能进行调试。按理说,也没啥,就是费点时间。但是,在调试的时候&#…...
力扣 LRU缓存-146
LRU缓存-146 /* 定义双向链表节点,用于存储缓存中的每个键值对。 成员变量:key和value存储键值对。preb和next指向前一个和后一个节点,形成双向链表。 构造函数:默认构造函数:初始化空节点。参数化构造函数࿱…...
Elasticsearch简介与实操
Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。以下是对Elasticsearch的详细介绍: 一、基本概述 Elasticsearch是Elastic Stack(以前称为ELK Stack)的核心组件,Logstash和Beats有助于收集、聚合和丰富数据并将…...
用python将一个扫描pdf文件改成二值图片组成的pdf文件
使用墨水屏读书现在似乎越来越流行,这确实有一定的好处,例如基本不发热,电池续航时间超长,基本不能游戏所以有利于沉浸式阅读,还有不知道是不是真的有用的所谓防蓝光伤害。但是,如果阅读的书籍是扫描图片组…...
Failed to start Docker Application Container Engine
说明: 1)访问应用业务,读取不到数据,show databases;查看数据库报错 2)重启docker服务,服务启动失败,查看日志报错如下图所示 3)报错信息:chmod /data/docker: read-only…...
ESLint的简单使用(js,ts,vue)
一、ESLint介绍 1.为什么要用ESLint 统一团队编码规范(命名,格式等) 统一语法 减少git不必要的提交 减少低级错误 在编译时检查语法,而不是等js引擎运行时才检查 2.eslint用法 可以手动下载配置 可以通过vue脚手架创建项…...
实景三维赋能国土空间智慧治理
随着城市化进程的不断推进,国土空间的合理规划与高效管理成为政府面临的一项重大挑战。在这个过程中,实景三维技术作为一种新兴的信息技术手段,正在逐渐改变传统国土空间治理的方式,为智慧城市的建设提供了新的可能。本文旨在探讨…...
树链剖分(重链剖分)
树链剖分的核心思想就是将一棵树剖分成一条一条的链 因为树不好处理 但链比较好处理 为了学会它 我们先要学会树上dfs(深度优先搜索) 然后就没了(雾) Because 树链剖分需要用到两个dfs 哦对了 我们还要了解以下的知识点 1.子…...
幻读是什么?用什么隔离级别可以防止幻读?
幻读是什么? 幻读(Phantom Read) 是数据库事务中的一种现象,指的是在一个事务中,当执行两次相同的查询时,第二次查询返回的结果集包含了第一次查询中不存在的行,或者第一次查询中存在的行在第二…...
[Unity Demo]从零开始制作空洞骑士Hollow Knight第二十集:制作专门渲染HUD的相机HUD Camera和画布HUD Canvas
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作HUD Camera以及让两个相机同时渲染屏幕二、制作HUD Canvas 1.制作法力条Soul Orb引入库2.制作生命条Health读入数据3.制作吉欧统计数Geo Counter4.制作…...
智能安全配电装置在高校实验室中的应用
摘要:高校实验室是科研人员进行科学研究和实验的场所,通常会涉及到大量的仪器设备和电气设备。电气设备的使用不当或者维护不周可能会引发火灾事故。本文将以一起实验室电气火灾事故为例,对事故原因、危害程度以及防范措施进行分析和总结…...
网络安全等级保护测评机构管理办法(全文)
网络安全等级保护测评机构管理办法(公信安〔2018〕765号) 第一章 总则 第一条 为加强网络安全等级保护测评机构(以下简称“测评机构”)管理,规范测评行为,提高等级测评能力和服务水平,根据《中华人民共和国网络安全法…...
Flutter:shared_preferences数据存储,数据持久化,token等信息存储
官方示例:简单调用 // 初始化示例 final SharedPreferences prefs await SharedPreferences.getInstance(); // 存int await prefs.setInt(counter, 10); // 存bool await prefs.setBool(repeat, true); // 存double await prefs.setDouble(decimal, 1.5); // 存st…...
2026有赞春季发布会:有效果的AI驱动增长,智能体和数字员工交出成绩单
5月21日,有赞2026年春季发布会在杭州举办,主题是“有效果的AI”。过去一年,有赞智能体和数字员工已经迈入交付结果的新阶段。数据显示,2025年有赞AI智能体活跃使用商家18220个,整体调用量超3600万次,引导成…...
AI人工智能行业的现状:为什么说AI从业者的需求越来越大
一、AI产业爆发式增长:需求激增的时代底色2026年,人工智能产业已步入爆发式增长的黄金期,成为驱动全球经济复苏与产业变革的核心引擎。从全球市场来看,2025年AI市场规模达7575.8亿美元,同比增长18.7%,预计2…...
将Claude Code编程助手无缝对接至Taotoken解决账号与Token限制
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 将Claude Code编程助手无缝对接至Taotoken解决账号与Token限制 对于依赖Claude Code进行编程辅助的开发者而言,遇到官方…...
新手网站建设教程:域名、主机、建站方式一次讲清楚
在数字化时代,拥有一个属于自己的网站,无论是用于展示个人作品、创建企业官网,还是开启电商副业,都是一项极具价值的长线投资。但对于零基础的新手来说,搭建网站似乎总是隔着“代码”这座大山。其实,随着技…...
2026年5月19日OpenBSD 7.9发布:多架构更新、内核创新,安全与性能双提升!
2026年5月19日,开源操作系统OpenBSD 7.9正式发布,作为第60个版本,它带来内核与用户空间多层面更新,预计在开源社区持续发挥重要作用。平台支持全面扩展arm64架构新增Rockchip RK3588与RK3576芯片支持,amd64平台MAXCPUs…...
2026数字营销岗位需要具备的能力有哪些
数字营销这几年变化很快,到了2026年,岗位要求已经不再只是“会投放、会写文案、会做表格”这么简单了。很多职场人都能明显感觉到:过去靠经验拍脑袋做营销,越来越难;未来真正有竞争力的人,往往是那些既懂业…...
Servlet 容器 vs Spring 容器 超详细对比
目录 一、先搞懂两个容器本质 1. Servlet 容器(Web 容器) 2. Spring 容器(IoC 容器) 二、核心相同点 三、核心不同点(重点) 四、最直白通俗理解 五、Web 项目完整启动顺序(必背面试题) 容器层级关系 六、请求处理流程差异 1. 原生 Servlet 模式(只有 Servle…...
开源数据库 TimescaleDB 2.27.1 发布:性能改进与多项错误修复,官方建议尽快升级
开源数据库 TimescaleDB 2.27.1 版本正式发布,较 2.27.0 版本有性能改进和错误修复,官方建议用户尽快升级。 TimescaleDB 简介 TimescaleDB 是基于 PostgreSQL 构建的开源数据库,打包为 PostgreSQL 扩展程序,可让 SQL 扩展到时间序…...
观察Taotoken用量看板如何帮助控制月度API支出
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察Taotoken用量看板如何帮助控制月度API支出 在项目开发中,大模型API的调用成本往往是预算管理的重要一环。如果缺乏…...
避坑!STM32CubeIDE偏好设置改了回不去?这份备份与恢复攻略请收好
STM32CubeIDE配置管理实战:从个人备份到团队协作的最佳实践 引言 当你花了整个下午精心调整STM32CubeIDE的代码配色方案,却发现某个关键语法高亮突然失效;当团队新成员反复询问如何统一代码格式化规则;当更换电脑后不得不重新配置…...
