MAX7219四合一点阵显示模块
四合一点阵显示模块采用MAX7219作为控制,它是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。它可以连接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219同样允许用户对每一个数据选择编码或者不编码。
整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。
只需要3个IO口即可驱动1个点阵!点阵显示时无闪烁!支持级联!
模块来源
资料下载链接:
https://pan.baidu.com/s/19WdOd8D2QlPi1Q_EWlb3fQ
资料提取码:b822
规格参数
工作电压:4-5.5V
工作电流:8-330MA
扫描速率:500-1300Hz
通信协议:串行通信
管脚数量:5 Pin(2.54mm间距排针)
硬件连接
对于四合一的点阵模块(通常包含4个8x8的点阵,由单个MAX7219芯片驱动),连接方式如下:
- VCC:连接到开发板的5V。
- GND:连接到开发板的GND。
- DIN:数据输入,连接到开发板的一个数字引脚(比如11号引脚)。
- CS:芯片选择,连接到开发板的一个数字引脚(比如10号引脚)。
- CLK:时钟,连接到开发板的一个数字引脚(比如13号引脚)。
使用方法
安装库文件(如果已经安过则无需理会)
- 打开Arduino IDE。
- 选择“工具” > “管理库…”。
- 通过“管理库”安装LedControl库(在工具>库>管理库…中搜索LedControl并安装)。
编写代码
c
/******************************************************************************
* 测试硬件:ColorEasyDuino开发板
* 版 本 号: V1.0
* 修改作者: www.lckfb.com
* 修改日期: 2024年03月28日
* 功能介绍:
*****************************************************************************
* 开发板软硬件资料与相关项目软硬件资料官网全部开源
* 开发板官网:www.lckfb.com
* 技术支持常驻论坛,任何技术问题欢迎随时交流学习
* 立创论坛:club.szlcsc.com
* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!
* 不靠卖板赚钱,以培养中国工程师为己任
******************************************************************************/
#include "LedControl.h"
// 参数分别是DIN, CLK, CS, 设备数量(现在是4)
LedControl lc = LedControl(11, 13, 10, 4);
void setup() {
// 初始化所有模块
for (int module = 0; module < 4; module++) {
lc.shutdown(module, false); // 启动模块(关闭省电模式)
lc.setIntensity(module, 2); // 设置亮度,0是最低,15是最高
lc.clearDisplay(module); // 清屏
}
}
void loop() {
for (int module = 0; module < 4; module++) {
drawSmiley(module);
delay(500);
}
// 清除所有模块的显示
for (int module = 0; module < 4; module++) {
lc.clearDisplay(module);
}
delay(500);
}
void drawSmiley(int module) {
// 定义笑脸图案,1表示亮,0表示灭
byte smiley[] = {
B00111100, //第一行
B01000010, //第二行
B10100101, //第三行
B10000001, //第四行
B10100101, //第五行
B10011001, //第六行
B01000010, //第七行
B00111100 //第八行
};
// 遍历数组,绘制图案到指定模块
for (int row = 0; row < 8; row++) {
lc.setRow(module, row, smiley[]);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60