MAX7219 · LED Matrix / 7-Segment

MAX7219 点阵 / 8位数码管显示模块资料

把 1 位、2 位、4 位、8 位、16 位 MAX7219 点阵模块和 8 位数码管模块先合并成一页通用资料。重点说明接线、级联、库选择、硬件方向和 Arduino IDE 测试代码。

Quick Facts

  • 接口:DIN、CS/LOAD、CLK 三线控制
  • 供电:常用 5V
  • 级联:DOUT 接下一块 DIN
  • 库:LedControl / MD_MAX72XX / MD_Parola

Scope

这页适合哪些规格

根据本地产品表,MAX7219 相关规格较多,先按用途合并整理。后面如果某个 SKU 有专用图片、不同方向或特殊代码,再单独拆页。

SKU / 编码规格说明
H541 位红色 MAX7219 SMD 模块客户常用入门点阵模块
B203直线 4 位 7219 红色表格备注 FC-16,方向仍以实物为准
K2 / K1024 合一 MAX7219 黄绿光 / 蓝光常见 8x32 点阵,适合滚动文字
O53MAX7219 8 位数码管显示模块适合时钟、计数、温度显示
O30 / B5048x8 点阵 DIY 套件焊接方向和点阵型号需看实物
C102 / S0406 / M710 / S1104 / K1042/4/8/16 位点阵规格级联数量和方向待按批次确认

Wiring

Arduino / ESP32 通用接线

MAX7219 不是 I2C,也不是 UART;模块常见接口是 VCC、GND、DIN、CS/LOAD、CLK、DOUT。

MAX7219 Arduino UNO 接线图
MAX7219Arduino UNO/NanoESP32 常用
VCC5V5V / VIN
GNDGNDGND
DIND11GPIO23
CS / LOADD10GPIO5
CLKD13GPIO18
DOUT接下一块 DIN接下一块 DIN

如果只亮一部分或文字方向不对,先检查 IN/OUT 方向、模块数量和库里的硬件类型设置。

Arduino Code

LedControl 入门测试代码

这段适合先确认单块 MAX7219 能不能点亮。UNO/Nano 默认 D11=DIN、D10=CS、D13=CLK;ESP32 需要把引脚改为 23、5、18。

#include <LedControl.h>

// LedControl(dataPin, clkPin, csPin, numDevices)
// Arduino UNO/Nano: DIN=D11, CLK=D13, CS=D10
LedControl lc = LedControl(11, 13, 10, 1);

void setup() {
  lc.shutdown(0, false);   // 退出省电模式
  lc.setIntensity(0, 5);   // 亮度 0~15
  lc.clearDisplay(0);
}

void loop() {
  for (int row = 0; row < 8; row++) {
    lc.setRow(0, row, B11111111);
    delay(120);
    lc.setRow(0, row, B00000000);
  }

  for (int col = 0; col < 8; col++) {
    lc.setColumn(0, col, B11111111);
    delay(120);
    lc.setColumn(0, col, B00000000);
  }
}

MD_MAX72XX

4 合一 / 8x32 点阵滚动文字建议

4 合一点阵常见用 MD_MAX72XX 或 MD_Parola。很多“代码不能通用”的原因,不是芯片不同,而是硬件方向、模块数量和库版本设置不同。

#include <MD_MAX72xx.h>
#include <SPI.h>

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CS_PIN 10

MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

void setup() {
  mx.begin();
  mx.control(MD_MAX72XX::INTENSITY, 3);
  mx.clear();
}

void loop() {
  for (uint8_t col = 0; col < MAX_DEVICES * 8; col++) {
    mx.setColumn(col, 0xFF);
    delay(60);
    mx.setColumn(col, 0x00);
  }
}

Troubleshooting

常见问题排查

上电全亮或乱亮

先确认 VCC/GND 是否接反、5V 是否稳定、CS/CLK/DIN 是否接对。MAX7219 上电后需要程序初始化,未初始化时显示状态可能不固定。

点阵方向反了、文字倒了

常见原因是模块硬件类型不同。MD_MAX72XX 里可以试 `FC16_HW`、`GENERIC_HW`、`PAROLA_HW` 等类型,直到方向正确。

多块级联后只亮第一块

检查 DOUT 是否接下一块 DIN,库里的模块数量是否设置正确,例如 4 合一要设 `MAX_DEVICES 4`。

8 位数码管和点阵代码是否通用

底层 MAX7219 通信类似,但显示对象不同。8 位数码管适合用 `setDigit()` / `setChar()`,点阵适合用 `setRow()`、`setColumn()` 或 MD_MAX72XX 图形库。

ESP32 能不能直接接

ESP32 可用 SPI 引脚 GPIO23/GPIO18/GPIO5。模块供电一般仍接 5V;3.3V 控制信号多数模块能识别,但长线、多模块或干扰环境建议实测,必要时加电平转换。

Customer Reply

淘宝客户简短话术

您好,MAX7219 模块不是 I2C,常规接线是 VCC 接 5V,GND 接 GND,DIN 接数据脚,CS/LOAD 接片选脚,CLK 接时钟脚。Arduino UNO 常用 D11→DIN、D10→CS、D13→CLK。多块级联时前一块 DOUT 接下一块 DIN。

您好,不同 MAX7219 点阵模块代码不完全通用,主要差异是模块数量、点阵方向和库里的硬件类型设置。4 合一模块一般先试 MD_MAX72XX 的 FC16_HW;如果文字倒置或错位,再换 GENERIC_HW / PAROLA_HW 测试。

References

官方与公开资料