LED 大屏幕显示器由于其醒目、内容灵活多变等特点,已经越来越多地应用于广告、信息发布、交通指示等公共场所,取得了良好效果。LED显示屏主要分为数码显示和点阵显示两大数,本文只讨论点阵显示。目前的LED显示屏基本上都是先由用户提出要求,生产厂这根据需要订做,每次都要重复设计电路和机械结构,造成资源浪费,而且若用户的需求改变,改动将十分困难。
mMxHR$2 l:tpL(% 实际上不论显示屏的大小,其原理都是相同的,因此完全可以设计出一种标准化、模块化的LED显示屏,会对不同的需要,只需要得意组合相应的模块即可。本文介绍的就是一种模块化的LED显示屏,可以根据需要灵活改变大小,并可以脱离计算机独立运行,还可以实现如闪烁、滚动显示等特效。对整体式显示屏刷新率不足发生闪烁的常见问题,在这个设计中由于被分割成小模块,不再成为问题。
AZ8UXq -v*x V;[ 1 基本原理
mW$ot.I X"J%R/f 基本的设计思路是把整个显示屏分成若干相同大小、相同功能的显示模块,而另外用一个中央控制模块控制,同步所有显示模块的运行,实现整体协调的显示。
nJ# XVlHc Kpu<rKP` 所以本系统主要由两部分组成:显示模块和控制模块。
~&[u]u[ &8Wlps` 显示模块实际都是相同大小的小LED驱动板,能够驱动LED阵列,具有基本的显示功能,并可以接收来自控制模块的数据和命令,此外一些常用的显示效果如闪烁、滚动等也包括在显示模块中。现有国标点阵汉字库有16×16和24×24两种,考虑到软件编写的方便和硬件的能力,我们把显示模块作为16× 16点阵大小。
aVK()1v] ucFw,sB1 控制模块负责控制各显示模块,向各显示模块发送数据和命令。控制模块储存要显示的点阵数据信息,定时向各显示模块下传。控制模块上还带有小键盘和通用异步串行口,即可以用键盘操作,也可以用计算机控制,还可以用计算机更新控制模块内的数据。
m0iV m| ~iT{8 显示模块和控制模块之间用总线的方式连接,我们选用了I2C总线。
@dhH;gt.I EC dfLn *c 整个系统的设计使用有很大的自由度:控制模块控制的显示模块数量可以改变,显示模块的排列方式也可以改变(如16个显示模块,既可以是2×8也可以是4× 4),对同一块显示屏可以保存若干条件用信息分别显示,每条信息的点阵大小可以不同,超过屏幕大小的信息可以滚动显示出来。这样基本可以满足多种多样的需求。
u@"o[e': OX,F09.C 2 电路结构
)%|r>{ n^Au*' 控制模块的原理如图1所示。
采用PIC16C73作为中央控制器。该单片机内置I2C接口、串行口,而且具有比较强的口线驱动能力(每根口线25mA),使用它可以简化很多外围电路。
pFH?/D/q c20|Cx2m 数据存储使用两片EEPROM:X24256共提供64K字节的数据空间,可以反复擦除重定民,掉电数据不丢失。如果全部用来显示16×16点阵的汉字,可以显示2000个左右。数据存储器与各个显示模块共用I2C总线,依靠各自的地址区分究竟是存储器还是显示模块。
fbL!=]A*3 [xS5z1; 小键盘外接4个限流电阻直接接到CPU的口线上,对键盘采用4×4扫描方式。
}@4|7 '?L%F{g/9 控制模块与计算机的连接使用RS232串行口,用一片MAX202做电平转换。
F0: &>'} 4O Zy&, 此外控制模块还带有一个光强度传感器,其作用是调节显示屏的亮度。由于白天和夜晚的环境光强差异很大,白天觉得合适的亮芳到了晚上可能会很刺眠,因此根据外界的光强使用这个传感器自动调节显示屏的度。这里使用的是TI公司的TLS235光频转换元件。
xf UhSt ks^|> 每个显示模块要驱动一块16×16的LED阵列,由于单片机的口线数量少,使用静态显示是不可能的,这里使用了动态扫描显示。考虑到刷新速度的因素,使用16行扫描刷新可能会有闪烁,所以使用8行扫描、32位数据的方式。
&.*T\3UO e6es0D[>5 每条数据线每个时刻只对应一个发光单元,要求电流较小;而当显示屏全开的时候,8路共阳极扫描线将会对应32个发光单元,电流要求大,所以两端的驱动电路是分别设计的。数据线端使用TI公司的4片TPIC6B595。扫描端使用Allegro公司的两片2944。
显示模块与控制模块用I2C总线相连。由于显示模块的任务只是显示,所以不另外增加存储器,只有内部的RAM单元保存欲显示的点阵数据,并不停地扫描显示到 LED阵列上。诸如滚动、闪烁等显示效果只是对显示数据做额外处理,如滚动显示实际对应数据的移位操作。这些功能也编写在显示模块中,由控制模块发送命令激活这些功能。
(jneEo=vr ]*h&hsS0 此外需说明的是,显示模块的驱动电路与LED阵列可以看作分离的两部分,只要在驱动电路的驱动能力范围内,可以使用发光单元不同的LED阵列,如1个发光单元仅为1个LED的小型显示牌或者1个发光单元包括5~7个LED的大型显示牌等。
Gm*Uv6?H? 0eaUorm) 3 软件设计
Oylp:_<aT ][N) 2_^M 本系统的软件包括一个部分:显示模块、控制模块和PC机。
f8F1~q XDvq7ZD .i\wE@v 显示模块的软件主要包括扫描显示、特效处理和I2C通信三部分。三显示模块 CPU的 RAM中开辟出32字节作为显示缓冲区,扫描显示程序只是定时从显示缓冲区中取数据发往移动寄存器,并设置相对应的扫描线,实现一次扫描。扫描显示并不识别缓冲区里的数据是什么。扫描是利用了人眼的图象滞留效果,如果扫描频率达到60Hz以上,对扫描频率的波动就不大敏感了,所以这里的扫描显示程序没有使用定时器中断,仅由循环完成。
x_pMG!2 >|S>J+( 特效处理是指对扫描缓冲区的数据做移位的操作,主要对应滚动显示效果。滚动时每次滚动一个像素行或列,大部分数据已经存在于显示模块中,控制模块发送滚动命令时联合国加两个字节(1行或1列)的新数据。由于使用的扫描方式是32×8的方式,因此数据存放并非完全线性,而有跳跃存储的部分,加之字符滚动显示有上下左右四个方向,要把新来的数据移入缓冲区并移出两字节的旧数据,因而需要比较繁复的RAM地址计算。
JbVi1?c *kV#)j I2C通信是PIC16C73内部硬件实现的功能,比较简单,只用中断就可实现。
$u-lo| DwC@"i. 显示亮度的调节功能是通过调节发光单元点亮时间实现的 。具体来讲,由于是扫描显示,每个发光单元最多只有1/8的时间可以点亮,如果这1/8的时间全部点亮,其效果就是最大亮度,如果在这1/8的时间内仍有部分时间不亮,则总体的显示亮度就下降。显示模块从控制模块接收环境亮度数据,调节这个点亮时间的比例,以实现调节亮度的功能。
^8U6"O6|X kOzt"t&