欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > C++趣味编程玩转物联网:用树莓派Pico控制四位数码管

C++趣味编程玩转物联网:用树莓派Pico控制四位数码管

2025/2/5 14:39:35 来源:https://blog.csdn.net/shaosheng2008/article/details/144003559  浏览:    关键词:C++趣味编程玩转物联网:用树莓派Pico控制四位数码管

数码管是一种常用的数字显示器件,广泛应用于电子时钟、记分牌和智能设备显示界面。在本项目中,我们将通过树莓派Pico板控制一个四位数码管模块,展示从 00009999 的数字动态显示。这不仅是一次硬件和软件结合的实践,还可以帮助初学者深入理解嵌入式系统中的显示技术。


项目背景与目标

四位数码管模块因其价格低廉、显示清晰而被广泛使用。通过这个项目,学习者将掌握以下知识:

  • 数码管的基本原理与硬件结构。
  • TM1650芯片的工作方式及其在数码管控制中的应用。
  • 使用树莓派Pico与Arduino编程实现动态数字显示。

项目所需元件

  • 树莓派Pico开发板 × 1
  • 树莓派Pico扩展板 × 1
  • 四位数码管模块(TM1650驱动芯片) × 1
  • 4P 转杜邦线 × 1
  • USB数据线 × 1

硬件知识:TM1650四位数码管

TM1650的特性

TM1650是一款用于驱动四位共阳数码管的芯片,具备以下特性:

  • 支持2线制通信(CLK和DIO),简化了电路连接。
  • 兼容3.3V和5V电平,适合多种微控制器平台。
  • 支持亮度调节和点阵显示,功能丰富。
模块规格
  • 工作电压:DC 3.3V-5V
  • 最大电流:100mA
  • 最大功率:0.5W
模块原理

TM1650通过CLK(时钟)和DIO(数据)与主控芯片通信,发送控制信号,实现数码管的段选与位选操作。


电路连接与TM1650库配置

电路连接
  • CLK引脚(时钟信号):连接至树莓派Pico的GP21。
  • DIO引脚(数据信号):连接至树莓派Pico的GP20。
  • VCC与GND:分别连接至树莓派Pico的电源引脚(3.3V和GND)。

电路图

连线图

TM1650库的安装

在Arduino IDE中添加TM1650库以简化驱动代码:

  1. 点击“项目” > “加载库” > “添加 .ZIP 库”。
  2. 导入 TM1650.ZIP 文件,完成库的安装。

核心代码实现

以下代码实现了四位数码管从 00009999 的动态显示:

#include "TM1650.h"const int CLK = 21;    // 时钟引脚
const int DIO = 20;    // 数据引脚TM1650 DigitalTube(CLK, DIO);void setup() {// 设置亮度 (0 到 7,默认值为2)// DigitalTube.setBrightness(2); // 开启显示DigitalTube.displayOnOFF(1); // 1=打开, 0=关闭// 清除所有位数据for (char b = 1; b < 5; b++) {DigitalTube.clearBit(b);}
}void loop() {for (int num = 0; num < 10000; num++) {int thousands = (num / 1000) % 10;int hundreds = (num / 100) % 10;int tens = (num / 10) % 10;int units = num % 10;// 显示每一位的数字DigitalTube.displayBit(1, thousands);DigitalTube.displayBit(2, hundreds);DigitalTube.displayBit(3, tens);DigitalTube.displayBit(4, units);delay(500); // 每次更新延时500ms}
}

代码解析

  1. 库初始化

    • TM1650 DigitalTube(CLK, DIO):通过时钟与数据引脚初始化TM1650芯片。
  2. 清除与亮度设置

    • DigitalTube.clearBit(b):清除指定位的数据。
    • DigitalTube.setBrightness(2):设置亮度级别,0为最暗,7为最亮。
  3. 数字显示

    • 使用 DigitalTube.displayBit() 指定每个位的数字值。
  4. 动态显示逻辑

    • 通过取模与整除操作分解整数的每个位数字,实现 00009999 的逐次递增显示。

项目现象

代码成功上传并运行后,四位数码管将依次显示从 00009999 的数字,并循环显示。这一现象直观展示了数码管的基本功能与TM1650的强大控制能力。


技术扩展与优化

  1. 动态亮度调节 增加按键输入,实时调整数码管亮度:

    DigitalTube.setBrightness(buttonValue);

  2. 增加显示内容 配合传感器,实时显示环境温湿度、时间等动态数据。

  3. 低功耗优化 使用睡眠模式降低功耗,适合便携设备应用。

  4. 多位数码管扩展 利用多个TM1650模块,实现多行数字显示或图案。


教育意义与学习目标

  • C++核心技能:熟悉库调用、函数设计与循环结构。
  • 嵌入式开发基础:理解I2C通信协议与硬件控制逻辑。
  • 项目式学习:通过动手实践,培养软硬件结合的工程能力。

结语

通过本项目,您将掌握四位数码管的显示原理与C++编程的结合应用,为进一步探索嵌入式开发打下坚实基础。未来,您可以结合更多传感器和模块,设计出更实用、更复杂的智能系统。

如果您觉得这篇文章对您有帮助,请点赞、收藏并分享,让更多人参与到嵌入式开发的学习中来!

 动手实践学习套件请点击-》实践开发套件

欢迎加V交流

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com