本帖最后由 cornrn 于 2016-8-22 09:42 编辑
在闲鱼买了几块LED点阵屏,想着用战舰mini控制显示玩,都说很简单.1.LED显示屏的扫描方式 LED显示屏的扫描方式有静态、1/2、1/4、1/8、1/16几种。 这些扫描方式具体是什么意思呢?我们以1/16扫描方式为例来说明。因为LED显示屏是逐行刷新显示的,所以在任意时刻我们只能控制其任意一行的显示,每次刷新显示一行,16行为一个扫描周期,这就是1/16扫描方式。当然了,一个扫描周期的时间必须要小于人眼视觉暂留的时间(约0.05秒到0.2秒),否则,人眼会观察到LED显示屏所呈现的画面出现闪烁。 2.LED显示屏的接口形式 LED显示屏的接口形式有04接口、08接口、12接口几种,这里只介绍08接口。 08接口的管脚定义如图1所示。 图1 08接口管脚定义 其中,管脚LA、LB、LC、LD表示行信号;管脚R1、R2、G1、G2表示列信号;管脚EN表示使能信号;管脚SCK表示时钟信号;管脚STB表示锁存信号;管脚GND表示接地。 那么,管脚LA、LB、LC、LD是如何来控制行信号,从而实现1/16扫描方式的。其实很简单,这是通过两个3-8译码器74HC138芯片来实现,通过这两个芯片可以实现如下的功能: 当管脚LD、LC、LB、LA的输出分别为0000时,LED显示屏的第一行被选中; 当管脚LD、LC、LB、LA的输出分别为0001时,LED显示屏的第二行被选中; 当管脚LD、LC、LB、LA的输出分别为0010时,LED显示屏的第三行被选中; ...... 当管脚LD、LC、LB、LA的输出分别为1111时,LED显示屏的第十六行被选中。 现在,我们已经知道如何通过08接口的四个行信号LA、LB、LC、LD来控制LED显示屏的每一行了。将08接口的四个列信号都接地,循环给四个行信号输入0000到1111,就可以点亮整个LED显示屏了。 但是要在LED显示屏上显示出汉字或是图形,仅仅对行信号进行控制是远远不够的,我们还需要对列信号进行控制。 3.LED显示屏的列驱动 LED显示屏的列驱动使用了74HC595芯片,该芯片具有8位串行输入、8位串行/并行输出,8位锁存功能。 对于64*32的LED显示屏来说,因为其总共有64列,所以通过对8个74HC595芯片进行级联,即可将其扩展为64位串行输入,64位并行输出,从而实现对64列信号进行控制。 08接口中的管脚R1、R2、G1、G2就是用来输入64位串行数据的。其中,R1、G1分别用来控制上半屏(16行)的红、绿信号;R2、G2分别用来控制下半屏(16行)的红绿信号。因此,对于64*32的双色LED显示屏来说,总共需要使用32个74HC595芯片。 显然,当红绿信号同时使能时(列信号低电平使能),就可以控制LED显示屏显示出黄色来了。 现在,我们已经知道LED显示屏的列驱动原理,下一步就可以编写程序,让LED显示屏显示出任意我们想要的汉字或图形了。 4.示例程序 了解了LED显示屏的驱动原理之后,编写单片机程序,利用08接口对其进行控制是很容易的。 程序的大致流程应该是这样的: (1)初始化单片机的GPIO引脚。 (2)设置08接口的使能信号EN。 (3)利用行信号选中第1行,移位串行输入第1行的列信号数据,锁存列信号,并行输出显示。 (4)利用行信号选中第2行,移位串行输入第2行的列信号数据,锁存列信号,并行输出显示。 (5)依次遍历,直到第32行,并行输出显示为止。 (6)循环进行3-5的过程。
|