【花雕学编程】Arduino动手做(220)---P6全彩LED模组8扫电子屏16X32显示屏单元板

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十:P6全彩LED模组16X32显示屏单元板 P6-RGB-16X32-8S室内全彩8扫电子屏(HX-P6-16X32-A)

在这里插入图片描述
在这里插入图片描述

P6全彩LED模组 16x32显示屏单元板是一种常用的LED显示屏模块,常用于广告牌、信息显示、指示牌以及其他需要显示动态图像、文字和视频的场景。P6代表着LED像素的间距为6mm,表示每个LED像素点之间的距离为6毫米。此模块一般被广泛应用于户内或近距离显示的场合,具有较高的分辨率和较清晰的显示效果。

主要特点:

  1. 模块尺寸和像素
    • 显示尺寸:通常每个模块的尺寸是16x32像素,即一个模块由16行32列的小型LED点阵组成。
    • 像素间距:6mm的像素间距,即每个LED点之间的距离为6毫米,适合近距离查看。
  2. 全彩显示:
    • 全彩色:P6模块支持红、绿、蓝三种颜色的混合,通过调节不同的颜色亮度,形成丰富的彩色图像、文字和动画效果。
    • 显示效果:能呈现高质量的图片、视频、文本,适用于动态广告显示和信息广播。
  3. 扫描方式:
    • 8扫描:这表示每个模块的扫描方式为8扫描。扫描方式是指模块在显示时,LED每8行进行一次扫描更新,意味着每次显示的行数是8行,通过扫描显示,减少了电流和驱动电路的压力,保证了显示屏的稳定性和功耗。
    • 驱动IC:常见的P6模块使用的是定制的驱动芯片,如MBI5024,它负责驱动每个LED点的亮灭。
  4. 接口方式:
    • 串口/并口接口:通常通过串口(如UART)或并口(如TTL)来控制P6模块。通过微控制器(如Arduino、Raspberry Pi和ESP32等)进行数据传输和显示控制。
    • 连接方式:多个模块可以通过排线连接形成更大的显示屏,拼接起来达到任意显示尺寸。
  5. 应用场景:
    • 广告牌和电子屏幕:由于其色彩鲜艳,分辨率较高,广泛应用于户内广告、商场展示、车站和机场的公告显示。
    • 动态信息显示:用于显示新闻、天气、公告和实时动态信息。
    • 图像和视频播放:由于支持全彩显示,可以播放图像、动画视频等内容。

典型应用:
• 室内广告牌:商场、车站、电影院、地铁站等地方,用于动态显示广告内容。
• 信息发布系统:用于发布企业、学校、交通、公共场所等的实时信息。
• 创意显示:可以用在舞台、演唱会等场合,作为装饰性显示屏,展示实时画面或动态效果。

在这里插入图片描述
在这里插入图片描述

室内P6全彩LED显示单元板主要参数
规格像素:32X16
像素密度:27777点/㎡,
点间距: 6mm ;
亮度 ≥1200cd/㎡;
最佳视角(H/V):水平120度,垂直120度;
峰值功率:1000W/㎡;
运行功率:500W/㎡;
盲点率:小于万分之一;
换帧频率: ≥60帧/秒;
工作电压:5V 稳压电源输入,
工作电流: 2A
连续工作时间(小时):≥7×24hrs ,支持连续不间断显示;
平均无故障时间(小时):≥10000;
使用寿命(小时):≥10万;工作环境温度(度):-20~+50 ;
工作环境湿度:10%~90%
单元板尺寸:192 毫米 x 96 毫米 x 12 毫米(7.6 英寸 x 3.8 英寸 x 0.5 英寸)
带 IDC 电缆和电源线的面板重量:250 g
数据逻辑电平输入:5V
面板接口:12 个数字引脚(6 位数据、6 位控制),全彩HUB75接口
扫描速率:1/8S
室内显示:150度可视性
显示器是“可链接的” - 将一个输出连接到下一个输入。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单元板电原理图

在这里插入图片描述

HUB75接口
是一种广泛应用于LED显示屏的并行通信接口,主要用于驱动大尺寸、高密度的LED点阵屏(如室内外广告屏、舞台背景屏等)。

  1. 物理接口特性
    • 引脚数量:16针(常见排列为双排8×2)。
    • 信号类型:数字信号(TTL电平)。
    • 主要功能:传输RGB颜色数据、控制信号和行选信号。

  2. 引脚定义
    以下是典型HUB75接口的引脚功能(不同厂商可能存在差异)

在这里插入图片描述

在这里插入图片描述

  1. 工作原理
    • 逐行扫描:通过行选信号(A/B/C/D/E)逐行选中LED屏的某一行,随后通过RGB通道发送该行的颜色数据。
    • 数据移位:CLK时钟信号将RGB数据按位移入移位寄存器,LAT信号锁存数据后更新显示。
    • 多路复用:通过分时复用技术,快速切换行选信号,利用人眼视觉暂留效应形成完整图像。
    • 亮度控制:OE信号可通过PWM(脉宽调制)调节LED的亮度。

  2. 应用场景
    • LED显示屏:全彩或双色LED矩阵屏(如64x32、128x64像素等)。
    • 级联扩展:支持多块屏幕级联,形成更大尺寸的显示区域。
    • 高刷新率:适用于需要动态显示的场景(如视频播放、实时信息展示)。

  3. 硬件连接
    • 驱动芯片:通常配合移位寄存器(如74HC595)或专用LED驱动IC(如TLC5940)。
    • 控制器:需使用FPGA、专用LED控制器或微控制器(如ESP32、Raspberry Pi)生成控制信号。
    • 电源要求:LED屏功耗较高,需独立大电流电源(5V或更高,具体取决于屏幕规格)。

  4. 注意事项
    • 信号干扰:长距离传输需使用屏蔽线或差分信号,避免数据错误。
    • 时序精度:CLK、LAT、OE信号的时序必须严格符合规格,否则可能导致显示错乱。
    • 电源隔离:逻辑信号与LED电源需分开供电,防止电流波动影响控制电路。
    • 散热设计:大功率LED屏需配备散热装置。

  5. 常见变种
    • HUB75E:支持更高行数的扩展版本(如1/32扫描屏)。
    • HUB12/HUB08:简化版接口,适用于低分辨率屏幕。

  6. 开发资源
    • 库支持:Arduino库(如Adafruit_GFX、FastLED)、Python库(如rpi-rgb-led-matrix)。
    • 工具:LED屏幕配置工具(如LEDStudio),用于生成图像和动画数据。

HUB75接口凭借其高效的并行数据传输能力,成为中大型LED屏的主流选择。实际应用中需结合具体屏幕规格设计电路和代码,确保稳定显示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
驱动板使用ESP32

在这里插入图片描述
在这里插入图片描述
自己制作一个简易扩展板

在这里插入图片描述
在这里插入图片描述

忙乎大半天,终于整好了

在这里插入图片描述

引脚接线设置,主要参考这个

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用P16排线连接扩展板与P6全彩16X32单元板

在这里插入图片描述
在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十:P6全彩LED模组 16X32显示屏单元板 P6-RGB-16X32-8S室内全彩8扫电子屏(HX-P6-16X32-A)
项目一:P6全彩16X32单元板点亮几个灯

实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百二十:P6全彩LED模组 16X32显示屏单元板 P6-RGB-16X32-8S室内全彩8扫电子屏(HX-P6-16X32-A)
  项目一:P6全彩16X32单元板点亮几个灯  
*/

#include <ESP32-HUB75-MatrixPanel-I2S-DMA.h>
#include <Adafruit_GFX.h>

// 创建配置(32x16,一块面板)
HUB75_I2S_CFG mxconfig(32, 16, 1);

// 使用你指定的引脚配置
void setupPins() {
  mxconfig.gpio.r1 = 25;  // 红色通道引脚
  mxconfig.gpio.g1 = 26;  // 绿色通道引脚
  mxconfig.gpio.b1 = 27;  // 蓝色通道引脚

  mxconfig.gpio.a  = 23;  // 地址 A 引脚
  mxconfig.gpio.b  = 19;  // 地址 B 引脚
  mxconfig.gpio.c  = 5;   // 地址 C 引脚
  mxconfig.gpio.d  = 17;  // 地址 D 引脚

  mxconfig.gpio.lat = 4;  // latch 引脚
  mxconfig.gpio.oe  = 15; // 输出使能引脚

  // 注意:clk 默认为 GPIO 16,如你用其它引脚,请加上
  // mxconfig.gpio.clk = ...; 
}

// 创建矩阵对象
MatrixPanel_I2S_DMA matrix(mxconfig);

void setup() {
  setupPins();              // 设置引脚
  matrix.begin();           // 初始化矩阵屏幕
  matrix.setBrightness8(64); // 设置亮度,范围 0~255

  matrix.fillScreen(matrix.color565(0, 0, 0)); // 清屏,填充黑色

  // 显示测试点(红、绿、蓝)
  matrix.drawPixel(0, 0, matrix.color565(255, 0, 0)); // 红色
  matrix.drawPixel(1, 0, matrix.color565(0, 255, 0)); // 绿色
  matrix.drawPixel(2, 0, matrix.color565(0, 0, 255)); // 蓝色
}

void loop() {
  // 主循环为空,保持显示内容
}

代码解读

  1. 引入所需库
    #include <ESP32-HUB75-MatrixPanel-I2S-DMA.h>
    #include <Adafruit_GFX.h>

ESP32-HUB75-MatrixPanel-I2S-DMA.h:这是一个用于驱动 HUB75 接口的 LED 矩阵屏的库,专为 ESP32 设计,利用 I2S 接口和 DMA 技术实现高效的图像刷新。
Adafruit_GFX.h:这是 Adafruit 提供的图形库,提供了绘制图形和文本的基本功能,ESP32-HUB75-MatrixPanel-I2S-DMA 库兼容此库,使得在 LED 矩阵上绘制图形变得更加方便。​

  1. 创建显示配置对象

HUB75_I2S_CFG mxconfig(32, 16, 1);
HUB75_I2S_CFG:这是一个结构体,用于配置 LED 矩阵的参数。

(32, 16, 1):这三个参数分别表示矩阵的宽度(32 个像素)、高度(16 个像素)和级联的面板数量(1 块)。​

  1. 设置引脚配置函数

void setupPins() {
mxconfig.gpio.r1 = 25;
mxconfig.gpio.g1 = 26;
mxconfig.gpio.b1 = 27;

mxconfig.gpio.a = 23;
mxconfig.gpio.b = 19;
mxconfig.gpio.c = 5;
mxconfig.gpio.d = 17;

mxconfig.gpio.lat = 4;
mxconfig.gpio.oe = 15;
}
此函数用于配置 ESP32 与 LED 矩阵之间的连接引脚。

r1、g1、b1 分别对应红、绿、蓝色通道的引脚。

a、b、c、d 是矩阵的地址引脚,用于选择显示的行。

lat 和 oe 分别是锁存器和输出使能引脚,控制数据的锁存和显示。

这些引脚的配置需要根据实际硬件连接进行调整。​

  1. 创建矩阵对象

MatrixPanel_I2S_DMA matrix(mxconfig);
MatrixPanel_I2S_DMA:这是一个类,用于控制 LED 矩阵的显示。

mxconfig:传入之前配置的矩阵参数。

通过此对象,可以调用各种方法来控制矩阵的显示内容。​

  1. 初始化设置

void setup() {
setupPins(); // 设置引脚
matrix.begin(); // 初始化矩阵屏幕
matrix.setBrightness8(64); // 设置亮度,范围 0~255

matrix.fillScreen(matrix.color565(0, 0, 0)); // 清屏,填充黑色

// 显示测试点(红、绿、蓝)
matrix.drawPixel(0, 0, matrix.color565(255, 0, 0)); // 红色
matrix.drawPixel(1, 0, matrix.color565(0, 255, 0)); // 绿色
matrix.drawPixel(2, 0, matrix.color565(0, 0, 255)); // 蓝色
}
setupPins():调用之前定义的函数,设置引脚。

matrix.begin():初始化矩阵屏幕,准备开始显示内容。

matrix.setBrightness8(64):设置矩阵的亮度,范围是 0(最暗)到 255(最亮)。

matrix.fillScreen(matrix.color565(0, 0, 0)):清空屏幕,填充黑色。

matrix.drawPixel(x, y, color):在指定位置绘制一个像素,color565(r, g, b) 用于将 RGB 值转换为 16 位颜色值。​

  1. 主循环函数

void loop() {
// 主循环为空,保持显示内容
}
此函数为空,表示程序只在 setup() 中进行初始化和显示设置,之后不再进行其他操作。​

总结
这段代码的主要功能是:​
配置 ESP32 与 HUB75 接口的 LED 矩阵之间的连接引脚。
初始化矩阵屏幕,并设置亮度。
清空屏幕并显示红、绿、蓝三种颜色的测试点。​

实验场景图

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值