一、HUB75(E) 接口定义
针脚定义参考:https://www.deanled.cn/index.php?m=home&c=View&a=index&aid=549
上图中有 A/B/C/D 4根地址线,所以是16扫( 2^4=162 )
上图所示HUB75接口,有两个RGB通道,共占用6个IO(R1/R2/G1/G2/B1/B2)。
剩下的 A/B/C/D/E 为地址通道,LAT为行数据锁存通道,CLK为数据时钟,OE为低电平使能LED显示。
图片这里没有E,证明它是16扫的,有E就会把B上面的地改为E,如下图所示:
上图中有 A/B/C/D/E 5根地址线,所以成32扫(2^5=32))。
16扫控制16行显示(16行中显示一行),共2个RGB通道所以16扫可以控制 16*2=32行 显示(32行同时显示2行,比如第1行和第16行…第15行和第31行,所以是2/32扫,即1/16扫)。
(1)单元板的显示为单位时间内显示一行数据,然后短时间内切换到另一行显示,16扫,即一个显示周期为切换16次。
(2)两个RGB通道分别控制上下两部分的RGB灯。举例 32*16 的LED灯屏,需要4个地址ABCD,假设ABCD,4个IO为高电平意味着选定第15行跟第31行,R1/G1/B1通道数据被写到第15行,R2/G2/B2数据被写到第31行。
(3)OE使能:失能LED显示,写入一行数据,选定行,锁存,使能LED显示。(有高电平显示,有低电平显示)
(4)全彩显示:颜色渐变。方法是同一行扫描32次,假设R1只显示一次,那它占空比就是1/32,显示次数越多越来亮。
二、一款 8x8 LED 单元板介绍(2R1G)
单元板外观:
注:LED单元板上通常没有存储,所以需要FPGA快速刷新以显示图像!
单元板HUB75接口:
单元板点亮顺序:
单个单元板,一共8行,可同时点亮2行,故为1/4扫。
三、一款 64x64 LED 单元板介绍(RGB)
单元板外观:https://www.deanled.cn/index.php?m=home&c=View&a=index&aid=163
单元板HUB75接口:
它具有2个R/G/B数据输入引脚,5个地址引脚和3个控制引脚(时钟,锁存器和使能)。
故仍然还是32扫,通过同时控制两行的方式实现64行控制,即2/64=1/32扫。
控制时序:(以上半部分32行为例,下半部分自动匹配上半部分选中的行)
1.使用5个地址字节选择要显示的行,从32行中选择1行。
2.通过将Blank管脚设为高电平来关闭显示器,这可以防止故障。【或者说消隐!】
3.使用Clock引脚和RGB引脚进行选中的行数据输入。
4.将锁存器引脚切换为高->低以将数据加载到选中的行。
5.通过将Blank引脚拉低来打开显示器。
注:其中的Blank,代表输出使能 OE 引脚!
链接>>各款单元板规格参数请参考产品页!
链接>>模组单元板使用IC规格书文档请参考网站IC参考页搜索下载!
有2个R,G和B引脚。如果选择地址0,则R0/G0/B0将数据写入第0行,而R1/G1/B1将数据写入第32行;选择地址1,则R0/G0/B0将数据写入第1行,而R1/G1/B1将数据写入第33行。要显示图像,你需要写一行,稍等一下才能显示它,再写下一行,依此类推。为了获得图像,需要以60Hz的频率写入和显示64行,或者为了获得不错的帧速率,可以更快提高频率。但遗憾的是,以这种方式写线时,LED会熄灭或亮起。使用RGB,仅可以显示8种不同的颜色,而不完全是漂亮的图像。
全彩显示
获得更多颜色意味着对显示进行PWM。进行此显示的PWM的唯一方法是在转到下一行之前多次写一行:
1、将数据移至如上所述的选中行
2、等待一位的时间
3、在同一行中移动下一个值
4、等待一位的时间
5、重复此N次,对于4位PWM为16次,对于8位PWM为256次。
6、移至下一行
一种简化方法是将二进制编码调制(BCM)与BCM一起使用,过程如下:
1、将数据移至选中行
2、等待x时间
3、在同一行中移动下一个值
4、等待x * 2时间
3、在同一行中移动下一个值
5、等待x * 4次。
6、重复N次,对于4位PWM重复4次,对于8位PWM重复8次。
7、移至下一行
驱动矩阵
FPGA代码可能非常简单,从帧缓冲区读取数据并传输到RGB矩阵。
为了简化显示,以发送格式来组织帧缓冲存储器。
我没有将数据存储为RGB值,而是将它们拆分为64位行数据。这样,数据发送器块只需要读取数据,将其移出时钟并等待所需的时间即可。
这是用于4位的BCM,但是用于8位的图像会有点大。这样,FPGA代码的传输就是一个简单的状态机。
首先,它获取数据。其次,它发送它并等待正确的时间,然后才能发送下一行。
LED单元板驱动原理
LED 单元板就是大量单色或三色 LED 的点阵,扫描式驱动,一般是行线共阴、单列单色 LED 共阳,采用专用芯片进行恒流驱动。所谓扫描式驱动,就是每一列的数据线共享、单元板的同一时刻只有一行被选中并点亮,通过快速的扫描加上人眼视觉暂留来实现整屏显示。有些做的比较好的单元板提供内置的余晖、消隐功能,在扫描其他行时之前点亮的行仍会继续点亮、重新扫描当前行时会强制熄灭不应点亮的像素,以降低屏幕的闪烁、提升画面的显示效果。
所以不难理解,单元板的驱动过程就基本是两个阶段:
1、选择当前扫描的行
2、点亮当前行的数据
什么是32 扫?行选择阶段
如果学过计算机组成原理之类的课程,应该听说过存储器的地址线。
HUB75 的行选择信号与存储器的地址线运作方式相同,使用多条地址线,用高低电平组合出二进制的各位数字,然后通过译码器将 n 条地址线的组合信号变为 2^n 选 1 的行选择信号。HUB75 接口的多种变体基本上就是从这里派生。
一般情况 HUB75 的插座使用 16P 简易牛角座,下面是接口示意图:
注意 9、10、11 三个引脚,名称分别为 A、B、C,这三根线就是 3 位地址线的 A0、A1、A2 三位,单元板的内部实现中,会使用一个 3-8 译码器将这 3 根输入地址线高低电平的二进制组合转化为 8 根输出片选线中其中一根的选中状态。
例如当这四位的电平值分别为 H、L、L 时,代表了当前行地址为 001b,所以 1 号地址线(即代表第二行)为选中状态,其他为非选中状态。
由于各厂商具体内部设计的差异,行选择激活状态可能为高电平,也可能为低电平,所以这里不能确定具体电平的高低,只能确定哪条线处于激活状态。(一般低有效,高消隐)
由于同一时刻 8 条行选择中只有一条被激活,即同一时刻有 1/8 的行正在被点亮,所以这种扫描方式被称作 1/8 扫描,行业简称8 扫。
变体由此产生。有些单元板的行数不足 8 行,不需要如此多的地址线,所以会把不需要的地址线空置或接地,比如 1/4 扫描的单元板会将 11 号 C 引脚空置,仅使用 2 条地址线。1/32 扫描的单元板会将 12 号、6 号引脚作为 D、E 信号即行地址二进制的第四、五位,使用 5-32 译码器来提供 32 条行地址线来进行更大范围的扫描,此时形成了 HUB75 最常用的变体>HUB75E。
那为什么 32 扫的接口可以驱动 64 行的单元板?
这里会有同学疑惑,市场上也有很大一部分单元有 64 行,但却使用的 HUB75E 接口,怎样实现使用 5 条地址线完成 64 行(地址二进制有 6 位)的扫描呢?如果单元板提供了说明,你会发现此时单元板仍然是 1/32 扫描,上面说 32 行同时点亮 1 行,那么如果是 64 行,就是同时点亮 2 行。没错,这就是几乎所有使用 HUB75 接口的单元板,有 n 行像素、使用 n/2 扫方式驱动的原因——单元板被分成了上下两部分,行选择信号会同时选择上下两部分中的各一行,通过两路信号同时点亮两行,这样就实现了更少的地址线以及更高的扫描频率。减少地址线、增加数据线,学过计算机组成原理的同学们想起来了没?
行内数据如何传入?行数据传输阶段
简单点说就是,串入并出加锁存。同学们一定听说过赫赫有名的移位寄存器——74595,没错,这东西塞满了整块单元板。观察 HUB75 接口的 13、14、15 三个引脚,分别为串行数据时钟、锁存时钟、输出使能三个引脚,功能上完全对应 74595 的三个对应引脚。而它的串行数据输入有 6 根,即 1、2、3、5、6、7 这 6 个,分别代表上下两半部分的 R、G、B 像素信号。这 6 根数据线共用相同的时钟线,并行传输行内的像素数据。
任意行被选择后,当 14(锁存)引脚拉高,数据开始进行传输,13(数据时钟线)为低电平时 6 根数据线并行输入数据,数据就绪后数据时钟拉高触发寄存器移位,然后数据时钟拉低触发寄存器完成历史数据的输出,同时数据线准备下一位的数据。所有数据移位输入完成后拉高锁存时钟,完成整行数据传输。对于有些提供余晖、消隐功能的单元板,需要根据要求给15(低电平输出使能)一个适当宽度的高电平信号来触发消隐和余晖。这样快速反复的行选择、数据传输过程,就完成了每一行的扫描与显示。
多块单元板如何连接?
每块单元板都提供了两个接口,一个输入一个输出。多块单元板之间就是串联关系,上一块板子的输出对应连接在下一块板的输入即可。这样一连串单元板的时钟信号共用、数据信号串接,调整每行传输的数据长度,即可实现对不同数量单元板的驱动过程。
如何实现全彩?
每个像素的每个单色子像素只有两种状态——点亮和熄灭,那么可以通过 PWM 或 BCM 调制来实现子像素的灰阶。可以通过把一行重复扫描 n 次、点亮 m 次实现 m/n 亮度的灰阶,也可以把每一帧图像重复扫描 n 场,m/n 灰阶的子像素选择其中 m 场点亮来实现。两种方式各有优劣,需要根据单元板的实现原理、程序编写难度等来选择不同的全彩实现方式。
能否简化连线?
我们注意到 HUB75 实际是由一组组合逻辑的并行传输行信号和一组 6 路时序逻辑的像素数据信号(可认为是并行 SPI)组成的。通过将 6 路 SPI 数据线输入输出首尾串接,可以将 6 路并行 SPI 变为 1 路串行 SPI,同时再通过一片 74595 可以实现行信号的并行输出。使用一个非门制作一个 1-2 译码器,实现行选择串行数据、行数据串行数据的选择,配合适当的数据信号,就可以实现仅通过 3 根数据线(功能选择、数据、时钟)实现整组单元板的数据传输,节省引脚有利于使用更小型的单片机进行显示。当然这样会大大受制于 SPI 频率而降低单元板的刷新频率,孰轻孰重视具体情况具体选择。
--本文修辑自以下文章,^_^----------------------------------------------
版权声明:本文为CSDN博主「ReCclay」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ReCclay/article/details/115307011
------------------------------------------------------------