Arduino中使用TM1650四位数码管

四位数码管由四个独立的七段数码管组成,每个数码管可以显示0-9的数字。

四位数码管由四个独立的七段数码管组成,每个数码管可以显示0-9的数字。它们通常有共阴或共阳两种类型,共阴数码管的阴极连接在一起,共阳数码管的阳极连接在一起,如下图所示:

Arduino中使用TM1650四位数码管

四位数码管引脚较多,一般搭配驱动芯片来使用以节省I/O端口,常见的驱动芯片有74HC595、TM1650、TM1637等,本文使用TM1650驱动的四位数码管模块。

TM1650是一种带键盘扫描接口的LED驱动控制专用电路,只需要通过二个引脚(SCL和SDA)与MCU通讯就可以完成数码管的驱动,可节省MCU引脚资源。

安装TM1650库

在arduino.cc网站的library频道搜索“tm1650",下载最新版本的zip文件,通过“导入库”->“添加.zip库”方式安装,安装后查看验证。

Arduino中使用TM1650四位数码管

实例

硬件连线:CLK引脚接SCL、DIO引脚接SDA

#include <TM1650.h>

TM1650 tm1650; // 实例化

void setup() {
  Serial.begin(115200);

  Wire.begin();
  tm1650.init();  // 初始化
}

void loop() {
  tm1650.displayOff();
  tm1650.displayString("____");
  tm1650.setBrightness(TM1650_MIN_BRIGHT);
  tm1650.displayOn();
  Serial.println("显示:____");
  delay(1000);

  char line[] = "1234";
  tm1650.displayString(line);
  Serial.println("显示:1234");
  tm1650.setBrightnessGradually(TM1650_MAX_BRIGHT);
  delay(2000);
  tm1650.setBrightnessGradually(TM1650_MIN_BRIGHT);
  tm1650.displayOff();
  delay(1000);
  
  tm1650.displayString("abcd");
  Serial.println("显示:abcd");
  tm1650.displayOn();
  delay(2000);
  
  Serial.println("滚动显示:1234567890abcdefghjlnop");
  if (tm1650.displayRunning("1234567890abcdefghjlnop")) {
    while (tm1650.displayRunningShift()) delay(500);
  }
  delay(2000);
  
  Serial.println("亮度交替调节(5次)");
  for (int i = 0; i<5; i++) {
    tm1650.setBrightness(1);
    delay(200);
    tm1650.setBrightness(7);
    delay(200);
  }

  Serial.println("逐个闪烁显示:小数点(5次)");
  for (int i = 0; i<5; i++) {
    for (int j = 0; j<4; j++) {
      tm1650.setDot(j,true);
      delay(200);
    }
    for (int j = 0; j<4; j++) {
      tm1650.setDot(j,false);
      delay(200);
    }
  }

  String chars = "ABCD";
  Serial.println("在指定位显示字符");
  for (int i=0; i<chars.length();i++) {
    tm1650.clear();
    byte b = ((byte) chars[i]) & 0b01111111;
    tm1650.setPosition(i,  TM1650_CDigits[b]);
    Serial.println("在指定位显示字符");
    delay(2000);
  }

  String numbers = "5678";
  Serial.println("在指定位显示数据");
  for (int i=0; i<numbers.length(); i++) {
    tm1650.clear();
    byte b = ((byte) numbers[i]) & 0b01111111;
    tm1650.setPosition(i,  TM1650_CDigits[b]);
    Serial.println("在指定位显示字符");
    delay(2000);
  }
} 

关于TM1650库的更多信息,请访问以下网站:
https://github.com/arkhipenko/TM1650

- 本文为本站原创文章,转载请保留出处。
- 文章链接:https://www.xpstem.com/article/2000423

2024-08   阅读(112)   评论(0)
 标签: 创客 Arduino 四位数码管

涨知识
图灵测试

图灵测试的方法是:被测试人,和一个待测试的机器。测试时,测试人与被测试人是分开的,测试人只有以纯文本的方式向被测试人问一些问题,这些问题随便是什么问题都可以。问过一些问题后,如果测试人能够正确地分出谁是人谁是机器,那机器就没有通过图灵测试,如果测试人没有分出谁是机器谁是人,那这个机器就是有智能的。

评论:
相关文章
【ESP32 C++教程】Unit1-2 C++类基础知识

本小节主要介绍C++ 类相关的基础知识,包括类的定义、继承、多态,范围作用域等。


【ESP32 C++教程】Unit1-1 开发环境准备

本讲主要介绍VSCode Arduino开发环境的搭建,及与Arduino IDE开发环境的比较。


Arduino-ESP32与ESP-IDF的版本对应表

Arduino-ESP32与ESP-IDF的版本对应表。


ESP32 + Arduino使用TFT_eSPI库

Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789


物联网项目开发实战-第3章-自动浇花项目迭代3

本节我们在迭代二的基础上使用四位数码管和OLED显示屏显示相关交互信息。


Arduino 数据结构: 队列Queue

Queue 库提供了一个通用的 C++ 动态队列实现,专为在 Arduino 项目中使用而定制。


小鹏浇花套件单机版程序V1.0.0

本程序是小鹏物联网智能浇花套件的单机版程序(不连接物联网),供同学们参考。


Arduino 数据结构: ArrayList

ArrayList 类是一个 C++ 模板类,它提供了 ArrayList 的实现,以便轻松存储任何指定类型的值。它允许使用索引进行高效存储和检索,支持排序操作。


ESP32 FreeRTOS 双核使用

ESP32系列(包括ESP32-S3)搭载Xtensa双核处理器,默认情况下Arduino框架仅使用单核运行用户代码,通过多核编程,可以充分利用硬件资源来提升系统响应和性能。


理解 MSBFIRST(最高有效位)和 LSBFIRST(最低有效位)

在本文中,先解释 MSB(最高有效位)和 LSB(最低有效位)的概念,以及 MSBFIRST 和 LSBFIRST。然后展示了 MSBFIRST 和 LSBFIRST 的使用如何影响移位寄存器的输出。