【雕爷学编程】Arduino动手做(163)---大尺寸8x8LED方格屏模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十三:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
知识点:MAX7219芯片
是美国MAXIM 公司推出的多位LED 显示驱动器,采用3 线串行接口传送数据,可直接与单片机接口连接,用户能方便修改其内部参数,以实现多位LED 显示。它内含硬件动态扫描电路、BCD译码器、段驱动器和位驱动器。此外,其内部还含有8X8 位静态RAM,用于存放8 个数字的显示数据。显然,它可直接驱动64 段LED点阵显示器。当多片MAX7219 级联时,可控制更多的LED 点阵显示器。显示的数据通过单片机数据处理后,送给MAX7219 显示。
MAX7219内部结构图
作为一块专用的LED显示驱动芯片,MAX7219能够以动态形式驱动8位数码显示器。还可以用 n 片MAX7219进行级连,以驱动8 * n位数码显示。MAX7219与数码显示器的之间的电路极为简单,几乎连限流电阻都不用。MAX7219与单片机之间也仅仅需要连接3条引线。当单片机把数据送到MAX7219后,它就可以独立的进行动态扫描显示,无需单片机再进行干预。对于单片机来说,这些数码显示器,看起来似乎都是在进行静态显示,可以说是驱动多位数码显示器的最佳选择。
MAX7219各引脚的功能:
DIN:串行数据输入端
DOUT:串行数据输出端,用于级连扩展
LOAD:装载数据输入
CLK:串行时钟输入
DIG0~DIG7:8位LED位选线,从共阴极LED中吸入电流
SEG A~SEG G DP 7段驱动和小数点驱动
ISET: 通过一个10k电阻和Vcc相连,设置段电流
MAX7219技术参数:
种类: LED显示驱动器
系列: MAX7219
数位数量: 8
片段数量: 64
安装风格: SMD/SMT
封装 / 箱体: SOIC-Wide-24
工作电源电压: 4 V to 5.5 V
电源电流— 大值: 330 mA
小工作温度: - 40 C
大工作温度: + 85 C
封装: Reel或Tube
高度: 2.35 mm
长度: 15.6 mm
产品: LED Display Drivers
宽度: 7.6 mm
高电平输出电流: - 2 mA
低电平输出电流: 5 mA
Pd-功率耗散: 941 mW
工厂包装数量: 1000
零件号别名: MAX7219
单位重量: 734.500 mg
MAX7219功能特点:
1 10MHz连续串行口
2 独立的LED段控制
3 数字的译码与非译码选择
4 150μA的低功耗关闭模式
5 亮度的数字和模拟控制
6 高电压中断显示
7 共阴极LED显示驱动
8 限制回转电流的段驱动来减少EMI(MAX7221)
9 SPI, QSPI, MICROWIRE串行接口(MAX7221)
10 24脚的 DIP和 SO 封装
大尺寸8x8LED方格屏模块主要特性:
1:使用MAX7219专用驱动芯片,可级联
2、只需要3个IO即可驱动,不需MCU扫描,节省MCU资源
3、大尺寸的6mm像素大小的方块点阵,有红色,翠绿,蓝色,白色可选,效果非常漂亮,可独立控制每个点的亮灭
4、支持8级亮度调节
5、板子带两个3mm安装孔方便固定,拼接时可掰断安装孔无缝拼接
6、模块尺寸:7.1*6.0(cm)
大尺寸8x8LED方格屏模块电原理图
★ 能在低电压、小电流条件下驱动发光
★ 发光响应时间极短(<0.1μs),高频特性好,单色性好,亮度高
★ 体积小,重量轻,抗冲击性能好.固态封装,封装方式为灌胶型,稳定性高
★ 寿命长,使用寿命在5万小时以上
★ 可连续扫描驱动各字节
★ 良好的显示效果、视角宽
★ 推荐恒流使用,恒压会出现亮度不均匀现象
★ 表面有保护膜的产品,可以在使用前撕下来
★ 焊接温度: 260℃ 停留时间最长5秒
★ 当工作温度高于25℃时,Ifm,ifp和Id必须降低;电流降低率是-036mA/℃(直流驱动),或-0.86mA/℃(脉冲驱动)功耗率是-0.75mW/℃。产品的工作电流不能大于对应工作温度条件Ifm或Ifp的60%。
★ 蓝色,翠绿色,白色请采取防静电措施
大尺寸8x8LED方格屏接线方式:
(在IN方向的针脚)
Arduino Uno --- MAX7219
5V <---> VCC
GND <---> GND
12 <---> DIN
11 <---> CS
10 <---> CLK
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十三:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
1、下载库 https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip
2、项目之一:快速扫描所有64个点阵(对于测试矩阵很有用)
3、连线:
MAX7219 UNO
VCC →→→→→ 5V
GND →→→→→ GND
DIN →→→→→ D12 (MOSI)
CS →→→→→ D11 (SS)
CLK →→→→→ D10 (SCK)
Arduino实验开源代码
/* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度 1、下载库 https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip 2、项目之一:快速扫描所有64个点阵(对于测试矩阵很有用) 3、连线: MAX7219 UNO VCC →→→→→ 5V GND →→→→→ GND DIN →→→→→ D12 (MOSI) CS →→→→→ D11 (SS) CLK →→→→→ D10 (SCK) */ #include <Sprite.h> //导入精灵矩阵库 #include <Matrix.h> const int numChips = 1; //DIN, CLK, CS, #chips Matrix myLeds = Matrix(12, 10, 11, numChips); void setup() { myLeds.clear(); } void loop() { byte x, y; // 一次点亮一个 LED,从左到右扫描 // 从上到下......对于测试矩阵很有用 for (y = 0; y < 8; y++) { for (x = 0; x < (numChips * 8); x++) { myLeds.write(x, y, HIGH); delay(40); myLeds.write(x, y, LOW); } } }
Arduino实验场景图
下载相关驱动库
1、 [https://github.com/riyas-org/max7219](https://github.com/riyas-org/max7219)
2、 [https://github.com/wayoda/LedControl](https://github.com/wayoda/LedControl)
3、 [https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip](https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip)
4、 [Https://github.com/shaai/Arduino_LED_matrix_sketch/archive/master.zip](https://github.com/shaai/Arduino_LED_matrix_sketch/archive/master.zip)
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十三:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之二:在屏幕上闪烁欢迎面孔(间隔1秒)
Arduino实验开源代码
/* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度 项目之二:在屏幕上闪烁欢迎面孔(间隔1秒) 接脚连线: MAX7219 UNO VCC →→→→→ 5V GND →→→→→ GND DIN →→→→→ D12(数据) CS →→→→→ D11(负载) CLK →→→→→ D10(时钟) */ #include <Sprite.h> #include <Matrix.h> Matrix myMatrix = Matrix(12, 10, 11);// Matrix(DIN, CLK, CS) void setup(){ } void loop(){ myMatrix.clear(); // 显示清屏 delay(1000); myMatrix.write(1, 5, HIGH); // 打开相关位置的像素(点阵) myMatrix.write(2, 2, HIGH); myMatrix.write(2, 6, HIGH); myMatrix.write(3, 6, HIGH); myMatrix.write(4, 6, HIGH); myMatrix.write(5, 2, HIGH); myMatrix.write(5, 6, HIGH); myMatrix.write(6, 5, HIGH); delay(1000); }
Arduino实验场景图
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十三:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之三:在屏幕上显示正弦波动态图形
Arduino实验开源代码
/* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度 项目之三:在屏幕上显示正弦波动态图形 接脚连线: MAX7219 UNO VCC →→→→→ 5V GND →→→→→ GND DIN →→→→→ D12(数据) CS →→→→→ D11(负载) CLK →→→→→ D10(时钟) */ #include <Sprite.h> #include <Matrix.h> Matrix myMatrix = Matrix(12, 10, 11);// Matrix(DIN, CLK, CS) // 创建一个新的 Sprite 实例, 8 像素宽,4 像素高 Sprite wave = Sprite( 8, 4, B00011000, B00100100, B01000010, B10000001 ); void setup() { } int x = 0; void loop() { myMatrix.write(x, 2, wave); // 将精灵程序放在屏幕上 myMatrix.write(x - 8, 2, wave); // 再次放置精灵,在屏幕上的其他地方 delay(75); // 稍等一下 myMatrix.clear(); // 为下一个动画帧清除屏幕 if (x == 8) // 如果到达动画序列的末尾 { x = 0; // 从头开始 } x++; // 向右推进 x 坐标 }
Arduino实验场景图