LED显示屏由于其具有耗电少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远等特点,已经成为新一代的信息传播媒体工具。LED与LCD相比较最突出的特点是亮度高、成本低且屏幕尺寸可根据现场情况用标准LED单元板拼制。按安装位置可分为:室外、半室外和室内;按颜色可分为:单色、双基色和彩色;按发光二极管点距可分为:φ5.0,φ3.75及φ3.0等。本文以市场上常见的室内双色LED单元板为控制对象,说明基于STC单片机的LED显示屏控制系统工作原理以及数据组织方法。
1 标准双色LED单元板的硬件组成及工作原理
市场上常见的室内双色LED单元板电路框图如图1(a)所示。其中行扫描电路由2片74HC138(3-8译码器)构成的4-16译码器加上多个4953(MOS管)组成的,扫描方式为:1/16。上下半屏分别由2组用74HC595串行移位寄存器实现红色、绿色显示数据的列输入,在图1(a)所示的64×32标准LED单元板中每组串行移位寄存器中有8个74HC595级联,4组共用了32个74HC595。74HC595内部电路框图如图1(c)所示。所有4组74HC595的控制信号RCK,SCK,EN全部接在一起,74HC595的控制信号和4组串行移位寄存器的输入以及行扫描控制信号A,B,C,D构成整个LED单元板的输入。74HC595的控制信号经驱动后和4组串行移位寄存器的输出以及行经过驱动的扫描控制信号A,B,C,D构成整个LED单元板的输出,用于级联下一个LED单元板的输入。双色LED单元板等效电路框图如图1(b)所示。
2 LED显示控制系统的硬件组成及工作原理
LED显示控制系统的硬件组成如图2所示。从表面上看是一个普通的单片机简单应用,实际上在设计此系统时已经考虑了很多硬件、软件及硬软件配合的因素。首先在使用51单片机的前提下,用其串行口方式0似乎可以利用单片机发出的移位脉冲将8位数据送入74HC595中,但要实现图2中8位数据的同时输入必须加入其他的辅助芯片,而且在减小数据传输时间上没有什么好处。其次,采用FPGA,CPLD等可编程芯片设计成专用硬件电路与单片机接口可大幅度提高数据传输的速度,但成本也将同步大幅度提高。
STC12C5410为IT高速低功耗单片机,其运行速度为一般标准51系列单片机的8~12倍,并具有标准的SPI和RS 232串行口。本文所述的LED显示控制系统以其为核心控制芯片。图2为双色LED显示屏控制系统电路原理图,在图2所示的LED控制系统中,SST25VF016B为16 Mb,具有SPI接口的8PIN串行FLASH存储器,由于SST25VF016B工作电压为3 V,故使用U3,U4两片74LVC245完成5 V到3 V和3 V到5 V的电平转换。SST25VF016B的SPI接口最大工作频率为50 MHz,而STC12C5410 SPI接口最大工作频率为晶振的1/4,故不存在速度上不匹配的问题。行扫描信号A,B,C,D由P1.0~P1.3控制。图1(a)中74HC595的控制信号RCK,EN及SCK由P3.3~P3.5提供。显示数据从P2口输出。
3 LED显示控制系统的数据组织及软件优化
LED显示控制系统的数据组织如图3所示。从图2可以得到如图3(a)所示的从正面看过去显示行与显示数据位以及颜色的对应关系。图2所示的硬件结构决定了每一行的数据可连续排列,同时为了提高数据的读取速度,将所有显示数据均按扫描行、扫描列进行连续排列,可得到如图3(b)表明的存储单元与扫描行、存储单元数据位及颜色的关系。
具体编程时可按下列步骤进行:
(1)将准备扫描的行地址送P1口的低4位中。
(2)初始化SST25VF016B将读地址指针指向待显示行相应存储单元的首地址。
(3)启动SPI以顺序读方式连续读显示数据,并将显示数据送P2口。
(4)每读一个数据通过P3.5产生一个SCK脉冲(SST25VF016B在顺序读方式下地址自动加1),将P2口上的显示数据移入74HC595串行移位寄存器。
(5)重复(2),(3),(4)直到一行数据显示完毕,通过P3.3产生RCK将通过移位寄存器移入的一行数据显示。
(6)重复(2)~(5)直到16行数据全部显示完毕。
(7)重复(1)~(6)刷新显示。
源程序1和源程序2均为用C51编写的显示一屏完整数据的显示函数。不同之处在于源程序1的SPI读写为一个单独的函数,而源程序2为了进一步提高数据读取的速度将显示时的读显示数据变成了一个循环体。由于SST25VF016B串行大容量FLASH在给定读地址后可连续的读,其读地址会自动加1,所以按图2(b)所示的数据组织形式为一屏显示数据在SST25VF016B中连续存放,编程时连续读一行数据后再改变扫描行直到16行全部显示完成。编程的指导思想是尽量减少SPI接口的无效等待时间,因此在源程序2第19行将读取的显示数据送P2口后第29行立刻启动下一次SPI读,而将SCK脉冲的发送指令放在SPI读数据期间,然后再来判断SPI读数据是否完成。源程序2第10行启动SPI读是为一屏显示最开始预读第1行第1个数据(与第11行至第24行的循环体配合)。为避免出现显示拖尾在第25至第29行换行时关闭显示。实验结果表明:源程序1每帧的显示时间在24 MHz晶振的条件下达到25 ms,即40帧/s,而源程序2在同样晶振条件每帧的显示时间为14 ms,即70帧/s,源程序2的执行速度远高于源程序1。
为了便于控制,所以要求显示程序与LED屏的硬件结构无关,通过自定义8字节显示指令条[命令(1个字节)+参数表(7个字节)],将各种不同显示效果所需的参数(如:LED显示屏的硬件信息、起始地址、结束地址、每行长度、显示时间等)指定存放在指令参数表中。显示指令表存放在显示数据的最前面,而指令表的长度亦用指令的方式加以描述,底层单片机运行时根据显示指令可实现不同的显示效果,如:画面的切换、定时、水平移动、垂直移动以及特殊显示效果。
4 控制系统单片机的选型及PC机软件编程
单片机的运行速度直接决定了显示速度的快慢,而单片机的运行速度又与单片机的时钟、(晶振)频率和单片机的结构有关,在时钟频率确定的情况下,单片机的硬件结构直接决定单片机的运行速度。目前主流单片机主要采用以下两种方式:
(1)倍频方式,通过硬件重新设计将标准51单片机一个机器周期12T改为6T、4T甚至1T;
(2)利用硬件提高某些指令,如:MOVX指令的运行速度,采用双DPTR模式,甚至在执行MOVX指令后DPTR可自动加减1。
本文中使用的STC单片机号称为1T单片机,并非所有指令均为1T,但几乎所有指令都在标准单片机指令运行速度上大幅度提高。其速度综合约为标准51单片机的8倍,可以满足显示控制系统对单片机运行速度的要求。
PC机软件编程采用VB编程,该程序可完成各种字体、字型点阵的提取、显示数据的组织、显示效果的模拟演示、显示信息的管理等功能。底层单片机运行时根据显示指令可实现不同的显示效果,如:画面的切换、定时、水平移动、垂直移动以及其他特殊显示效果。
5 结 语
本控制系统通过大量的实验检验是非常可靠的,利用该控制系统制作的小型LED显示屏与一般用51单片机为控制核心的LED显示控制系统相比,屏幕的刷新速度大幅度提高,在研制运行过程中也对该控制系统做了多方面的改进。如为了进一步提显示速度可对编译后的程序做汇编级的优化,利用有些51单片机如DS89C450具有DPTR自动加1的功能,外加用CPLD制成的硬件地址发生器等。但所有改进的措施都是以增加外部辅助电路或成本为代价的。本控制系统的价格按市价不超过50元,因此其在小型LED显示控制系统中有着广泛的应用前景。