我尝试通过移位寄存器级联+三八译码器,实现用3跟控制线,驱动1616LED点阵屏的效果。这是第二篇博客,讲述LED点阵屏的工作原理。
如下图的88LED点阵屏,要想控制第2行第3列的LED灯(简称LED(2,3))亮起来,可以让引脚V7输出高电平,G3输出低电平。如果想控制LED(2,3)与LED(4,3)同时亮起来,可以让V7与V5输出高电平,G3输出低电平。
用这种方法一次只能点亮1列或者1行的LED。我们可以称为逐行扫描或者逐列扫描。如果想一次点亮多列的LED,同一行的LED状态不一样,会让控制这一行的电平陷入矛盾。假如需要LED(1,1)与LED(2,2)亮,但是LED(1,2)不亮,那么V8应该输出高电平还是低电平呢?
逐行扫描或者逐列扫描利用了视觉暂留原理。人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,视觉的这一现象则被称为“视觉暂留”。先让V8为高,G1为低,把LED(1,1)亮。然后快速让V8为低,G2为低,把LED(1,2)熄灭,且同时V7变为高电平把LED(2,2)点亮。只要切换的速度够快,等到每一列都循环一次,再次轮到G1这一列的时候,重新点亮了LED(1,1),然而你的眼睛仍然没反应过来,那么你就会以为LED(1,1)不曾熄灭。关键点在于刷新速度要快。
不难理解,要驱动8×8LED点阵,需要8行8列共16根控制线, 2个74HC595芯片。我们把V1-V8连接74HC595芯片U1的并行输出引脚QA-QH,G1-G8连接U2的QA-QH。当然反过来接也可以。U1与U2级联,U1的SER接控制芯片的串行数据输入,U1的QH’接U2的SER。U1与U2的输出使能接低电平(可输出),复位接高电平(不复位)。如此一来,只需要移位寄存器时钟输入、存储寄存器时钟输入、数据串行输入,这3根线,就可以驱动LED点阵屏了。