#头条文章发文任务#
本期文章较长,干货满满,耐心看完还不懂提刀来砍我,哈哈
前言
走在大街上,会发现门面上面都会挂着点阵屏,这样内容就一目了然

那你们是否好奇过点阵屏是如何工作的吗?
引入
如果将单片机每个IO口接上LED的话

结果是很 浪费 单片机IO口
如果按以上接法的话,假定有256个LED就要接256个IO口,这方案显然是不行的

那如果只接3条线的话,这样是不是就减小了IO口的浪费?

74H595实现过程
下面给出芯片引脚图

从图中可以看出,QH端输入是串行的,而输出是并行的
SCK和RCK是时钟信号,SER是串行数据输入信号,QH是串行数据输出信号

目标: 要让前4个亮,后4个不亮
详细解释 :先让SER持续4个周期的高电平,然后再4个周期的低电平(这里周期指的是SCK时钟);每当SCK的处于上升沿(低电平变高电平的一瞬间)就会接受数据,但接受了数据并不会输出,还需要RCK置为高电平,这样就由串行输入变为并行输出了
这样就可以用一个74H595控制8个LED灯,而且还减少了IO口的浪费

74H595级联
依照以上的方法来实现的话,增加LED数量就要相应增加74H595的数量
下面介绍74H595如何级联的?

详细解释 :如果已经输入了8位数据了,再输入就溢出了,从而把最后一位数据挤出来,输入16位数据,就会被挤出8位数据,从而输入到下一个74H595

将两个74H595的时钟信号连在一起(同步时钟),将上一个74H595的QH串行输出端接到SER串行数据输入端
如果要控制64个LED的话,就需要8个74H595来控制,最前一个74H595就要输入64位数据

控制64个LED就需要8个74H595,显然这有点 浪费 芯片
点阵屏工作原理
如果将64个LED的阴极和阳极并联在一起,那就引出了8个阳极和8个阴极,是不是就只有需要2个芯片呀?

逐行扫描(动态)
给其中一行低电平,其余行高电平,即选中了这一行
给其中一列高电平就可以点亮了
最后逐行扫描,只要速度快够快,人眼就看不出来延迟,这是因为人眼的视觉暂留(感兴趣可留言或自行百度)
注: 该动态扫描方式同时只能有一个LED亮
如此一来,就解决了浪费芯片的问题了

虽然动态扫描人眼看不出来,但是如果用手机看的话,就会发现是一行一行扫描的了

举例说明
一个芯片可以控制单个8个LED
两个芯片可以控制8行8列构建的矩阵LED也就是64个LED
四个芯片可以控制16行16列构建的矩阵LED,也就是256个LED
以此类推
下面以 512 个LED构建的点阵屏举例

点阵屏(背面)
可以看出芯片一共有 16 个
依据以上方法可以推出只需要 6 个芯片就可以了实现 动态扫描 了(16行32列)
那 为什么要16个呢?
将32个LED每4个并联后,就和控制单个LED一样了,可以实现 静态扫描 ,不存在延迟

所以一个芯片控制32个LED,那512个LED就需要16个芯片来控制
这样的好处是静态扫描,不存在延迟
总结
控制点阵屏有静态扫描和动态扫描两种方式,各有利有弊
静态扫描需要较的芯片,但没延迟
动态扫描则不需要较多的芯片,但有延迟
看完本期文章的老铁,可以试试判断所看到的点阵屏到底是什么扫描方式,试着分析一下