引言
LED显示屏具有成本低、寿命长、功耗小、工作温度范围宽等优点,广泛应用于文字及图像信息的显示。整个系统一般分为3个部分:上位机,显示屏控制电路和LED阵列及其驱动。
其中显示屏控制电路的设计广泛采用两类器件作为其控制核心来实现,一类是单片机控制系统,另一类是可编程逻辑器件。该设计采用基于单片机的控制方案,如图1所示,一台PC机通过RS485总线与多块控制器相连,每块控制器扩展了温度传感器、实时时钟和其他外围器件,控制LED屏的显示。
采用单片机的控制方案,结构简单,应用灵活,并且易于扩展。
1系统的硬件设计
系统硬件框图如图2所示,上位PC机用专门的软件编辑将要显示的信息,通过串口发给单片机,存储在Flash内,单片机再驱动电路将字符的编码通过LED点阵的形式显示出来。
LED点阵为双基色屏,能显示红,绿,黄3种颜色。控制器的核心选用STC89LE516单片机,扩展32KSRAM作为显示缓存区,512KFlash用于存储显示的点阵信息和一些必要的参数。
拨码开关选择本屏的物理地址。控制器还扩展了1片温度传感器采集温度数据,1片时钟芯片进行实时时间的读写。
1.1存储器扩展电路
STC89LE516是一款强抗干扰,高速,低功耗的单片机,增强型51内核,集成了看门狗电路,内含64K字节Flash存储器,512字节RAM,可在线编程,可远程升级,价格便宜。
为了提高响应速度,系统扩展了32KSRAMIS61LV256作为显示缓存区,用于保存当前正在显示的一帧数据和一些特技处理数据,和单片机的接口如图3所示,SRAM的最高位地址线A14由单片机的P3.2单独控制,以便于将红色和绿色LED点阵的数据分块存放,当P3.2输出为0时,选中RAM地址0x0000~0x3fff,为红色LED的数据区;当P3.2输出为1时,选中RAM地址0x4000~0x7fff,为绿色LED的数据区。
Flash用于存储代码,显示的数据信息和字库。可采用查表的方式调用需要显示的汉字和英文点阵数据。用64K字节的存储空间存储16×16点阵的汉字,可以显示2048个,512K的Flash可满足常用字不同字体的存储需求。SST39VF040的地址线有19位,单片机用P1口来扩充高三位地址线。
系统中单片机,SRAM,Flash要求313V供电,而系统接入电源为5V,可通过LM1117-3.3为芯片提供3.3V稳压电源。
低压差电源芯片LM1117输出电流可达800mA,输出电压精度在±1%以内,还具有电流限制和热保护功能。
1.2串行接口电路
控制器接收数据采用单片机内部全双工的通用异步收发器(UART)。在传输距离小于20m时采用非平衡的RS-232,在传输距离为几十m到上km时采用RS-485。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力,可以联网构成分布式系统。由于显示屏的位置是分散的,彼此相距几十甚至几百m,所以控制器用MAX232和SN75176分别做电平转换,用跳线进行RS-232和RS-485之间的切换选择,从而实现和PC的通信,完成数据的存储和更新。
1.3实时时钟电路
单片机与HT1381低功耗实时时钟芯片接口采用串行传输方式,如图4所示只需3根线就可以读写年、月、日、星期、时、分、秒,在需要时显示到LED屏幕上。HT1381所需时钟独立于单片机,外接321768kHz晶振就可以工作。配备3V充电电池,系统采用外部供电时,二极管导通,外部电源一方面向芯片供电,另一方面对充电电池进行充电。当系统电源停止供电时,二极管截至,芯片由电池来供电。
1.4温度传感器电路
温度传感器选用单总线数字温度传感器DS18B20,该器件将温度传感器、温度报警触发器、ROM等集成在一个很小的芯片上,传感器直接输出的就是温度信号的数字值。DS18B20以9位数字的方式反映温度值,读出或写入数据仅需要一根信号线。
1.5扫描控制电路和LED阵列
目前大多数LED显示屏的屏幕设计采用的是模块化的结构,其基本单元是LED显示单元模块,屏幕大小和形状可灵活改变,显示屏的安装和维护也十分方便。LED显示单元模块分为LED点阵和驱动电路2部分。
该LED点阵选用红绿双基色屏,可显示红、绿、黄3种颜色,价格适中。每个模块是16×64像素,由16块8×8像素共阳极LED点阵组成。16行LED共用一列数据,每行LED的显示时间占一个扫描周期的1/16。根据人眼的视觉暂留效应,只要整屏的刷新频率大于60Hz,即可形成一幅稳定的画面。每个LED显示单元有8个红色数据输入端、8个绿色数据输入端和8个行控制信号输入端。
驱动电路分为行驱动和列驱动。
行驱动电路由2片3-8译码器74HC138组成。一个行选信号同时控制着一行中所有LED的通断,所以它需要较大的驱动电流,为此选用4953。4953内含2个P沟道的MOSFET管,漏极电流最大可达419A,保证了行驱动能力,16×64点阵需要8片4953。2片138的16路输出分别通过4953的驱动用于选通相应的行,实现对行的控制。
列驱动采用74HC595,内含移位寄存器和三态输出锁存器,可以把串行输入的8bit数据并行输出。分别用8个74HC595锁存红色、绿色数据。单片机2路控制信号与所有595的时钟输入SRCLK,锁存信号RCLK相连。第1片595的串行输出接到第2片595的串行输入端,同理,其他引脚的连接方式一样,通过这种级联的方式,把8个595芯片连在一起,同时每个595芯片的并行输出连接8个LED的列。
显示过程为:
(1)把显示缓存区中的第1行红色数据和绿色数据分别送入595锁存;
(2)送行扫描信号,选通LED阵列的第一行并延时;
(3)行消隐,行扫描信号下移一行并重复上述过程直至完成第16行的显示。如此循环。
每个LED显示单元模块有2个接口,可根据显示长度的不同需求灵活扩展LED单元,控制器保持不变。如需高度上扩展,可通过扩展CPLD/FPGA控制行扫描信号的同步来实现,在显示和控制原理上并无差别。
2系统的软件设计
系统软件包括上位机软件和下位机软件。上位机软件用VC编写,与下位机通过异步串口进行通信。上位机软件的任务是校准时钟,编辑显示的内容、颜色和显示效果等并把数据广播发送到LED显示控制器。通信的数据格式如表1所示。
下位机开机进行中断、串口初始化后,按照指令执行显示子程序,定时进行温度采样和时钟数据的读取。下位机始终处于监听状态,当有串口中断时,和上位机通信,上位机发1字节地址符,下位机接收后与本屏地址进行比较,本屏地址由控制器的拨码开关设定。如果地址相同则接收数据,否则中断返回,由此实现LED屏的分布式控制。接收完全部数据后,进行校验,如出错则要求重发,校验正确则发送接受成功标志给上位机,结束中断。串口中断程序和定时器中断程序流程见图5。
控制器接收到数据后存于Flash中,根据数据中的命令字,执行相应的操作,操作判断流程如图6所示。
显示子程序根据汉字内码从字库中查找出字模,送至显示缓存区,通过数据处理后输出至列选通信号,配合行扫描信号,进行动态扫描显示。其中数据处理功能主要完成字幕左移、右移、百叶窗、变色、闪烁等。
3结语
本文选用了STC89LE516单片机,在保证功能和稳定的前提下,降低了成本,扩展了大容量Flash数据存储器,上位机只需传送汉字内码即可显示,减少了数据传送量,提高了响应速度。LED显示单元可灵活扩展,满足不同需求。经实验验证,该系统显示稳定可靠,支持温度、日历、汉字和各种特效等,可运用于工业生产线、楼宇安防、停车场等的分布式LED显示。