Arduino 点阵 LED 的动画显示
驱动原理
模块原理图
MAX7219 点阵 LED 模块原理图如下
MAX7219简介
MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。
其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。
MAX7221与SPI™、QSPI™以及 MICROWIRE™相兼容,同时它有限制回转电流的段驱动来减少EMI(电磁干扰)。
一个方便的四线串行接口可以联接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219/MAX7221同样允许用户对每一个数据选择编码或者不编码。
整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。
功能及时序
时序图
MAX7219功能特点
- 10MHz 连续串行口
- 独立的LED 段控制
- 数字的译码与非译码选择
- 150μA 的低功耗关闭模式
- 亮度的数字和模拟控制
- 高电压中断显示
- 共阴极LED 显示驱动
- 限制回转电流的段驱动来减少EMI(MAX7221)
- SPI, QSPI, MICROWIRE串行接口(MAX7221)
- 24 脚的DIP 和SO 封装
程序代码
#include <LedControl.h>
const int DIN_PIN = 7;
const int CS_PIN = 6;
const int CLK_PIN = 5;
const uint64_t IMAGES[] = {
0x444830f0f060c000,
0x6c28381c3c183000
};
const int IMAGES_LEN = sizeof(IMAGES)/8;
LedControl display = LedControl(DIN_PIN, CLK_PIN, CS_PIN);
void setup() {
display.clearDisplay(0);
display.shutdown(0, false);
display.setIntensity(0, 10);
}
void displayImage(uint64_t image) {
for (int i = 0; i < 8; i++) {
byte row = (image >> i * 8) & 0xFF;
for (int j = 0; j < 8; j++) {
display.setLed(0, i, j, bitRead(row, j));
}
}
}
int i = 0;
void loop() {
displayImage(IMAGES[i]);
if (++i >= IMAGES_LEN ) {
i = 0;
}
delay(300);
}
取模网站:LED Matrix Editor (xantorohara.github.io)
视频效果
<iframe src="https://player.bilibili.com/player.html?isOutside=true&aid=409554613&bvid=BV1DG411Y7jC&cid=1361163020&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe> |