基于AT91 M42800A设计的LED显示系统
最近,笔者在某工厂大型生产线上基于现场总线的物流呼叫系统项目中发现,由于所需要显示的信息流比较大,用现有的基于AT89C51芯片组成的LED显示屏控制系统,由于受到微处理器的处理速度、体系架构、寻址范围、外围接口资源等诸多限制,已难以在要求显示较多像素、显示内容帧频较高、动态显示效果复杂的情况下,得到良好的动态视觉效果。针对以上情况,在利用现有资源的基础上,重新设计和研制了一种全新的,由32位高性能ARM微处理器组成的LED显示屏控制系统,并通过RS485接口与现场总线中的上位机进行实时数据通信,实现整个系统的信息显示。
1 系统硬件结构
该系统的硬件组成框图如图1所示。图1中,微处理器是Atmel公司生产的AT91M42800A,它采用基于ARM7TDMI内核的高性能32位RISC架构的处理器,有着丰富的外围接口资源。AT91M42800A有2个USART外围接口,系统用USART0口和MAX485组成485接口电路,具体的接口电路如图2所示。AT91M42800A还有2个SPI口,每个SPI口有4根片选信号,通过片选均可以支持外接15个设备。该系统的做法是将2个SPI口分别接到列驱动电路和行驱动电路上,并利用各自的2个片选信号CS0和CSl完成驱动电路的信号锁存和允许输出控制,SPI的CLK输出作为驱动电路的时钟信号输入,工作频率为4 MHz。
SRAM接口电路由2块HY57V641620芯片并联组成,HY57V641620是Hynix公司生产的4 BanksXlM×16位的SDRAM芯片,单片HY57V641620存储容量为4组×16 M位(8 MB),支持自动刷新,16位数据宽度。为充分发挥32位CPU的数据处理能力,系统用2块8 ns的HY57V641620组成32位SDRAM存储器系统。Flash存储器接13电路由1块HY29LVl60芯片组成。HY57V641620是Flash存储器芯片,单片存储容量为16 M位(2 MB),8/16位数据宽度,本系统采用16位数据宽度的工作方式。具体的电路连接可参阅参考文献。
行驱动电路由Allegro公司的36片A68595级联组成,显示屏背面每行数据线由串人并出移位寄存器A68595级联而成,A68595片内集成有MOS管构成的驱动器,足够驱动发光二极管发光。列驱动电路由Allegro公司的24片A6276级联组成,A6276是16位带锁存的串入并出移位LED驱动芯片。A68595和A6276级联时引脚和联接方法如图2所示,电路都较为简单(其中带端口框标的为AT91M42800A的相应引脚)。其他详细的性能资料,请查阅Atmel和Allegro公司的相关产品文档。AT91M42800A的SPI口均采用16位串行输出工作方式,利用32位ARM处理器的高速性能,能够充分提高数据传输速度。
2 工作原理
该系统与上位机的通信由AT91M42800A的USARTO的口与485接口电路完成,上位机仅需将要显示的数据,传送至AT91M42800A即可。开机后,Ar91M42800A初始化,读入启动代码后,将保存在Flash存储器内的程序代码和所要显示的字模数据,重映射到SDRAM中,使得系统的数据存取全部在高速SDRAM中完成。在接收到上位机的数据后,AT91M42800A将要显示的数据,转换成相对应的LED屏显示驱动信号,再加入相应的动态显示效果控制程序(画面左移、上移、开幕、覆盖、闪烁和直显等)后,用SPI口分别输出给行、列驱动电路。同时,若有需要,上位机所传来的数据或图像画面,也可以保存在Flash存储器中。
显示屏采用1/16动态逐次行扫描方式,先将SPIA端口中的24个字节数据依此串行移入对应的24个A6276列驱动电路,并锁存。接着,SPIB端口再将一行行选通信号串行移入行驱动电路,完成一行的LED显示。然后依理,逐次的显示LED屏的各行。
二极管亮灭时间的占空比可用软件进行设定,以选取合适亮度,提高发光二极管的使用寿命。在现场实际安装的LED显示屏,有效显示面积约为4.6 m2,共有288×384=110 592个像素,满帧刷新时间最短可小于8 ms,换帧频率125 Hz以上,比传统的用单片机组成的显示系统提高了10倍以上的帧频,保证了动态显示时的视觉效果。同时,在相同的条件下,还可以使得实际可视像素点增多。
3 软件部分简述
本系统的软件采用μC/0S-II操作系统,使得系统具有强大的多任务管理、定时器管理、中断管理、存储管理等功能,通过对相关寄存器的实时监控,可以大大提高系统的稳定性,这些是以往用单片机和部分DSP处理器所无法实现的。
显示应用程序采用定时器中断方法,通过设置合适的进入中断时间常数,即可以得到高于40 Hz的LED刷新帧频,使人眼得到稳定的动态视觉效果。
画面的实时动态处理,即各种动态显示方式均以子程序形式编写,每种显示方式都是独立的子程序。具体的动态显示方式有:画面左、右移,上、下移,拉幕,覆盖,闪烁,直显等多种方式。
- DSP在LED大屏显示中的应用(03-14)
- DSP在LED显示中的应用(08-21)
- 基于μC/OS2II的LED显示屏控制器(08-14)
- 基于DSP的LED大屏幕显示系统(10-03)
- 基于单片机的彩灯设计方案(10-29)
- 基于μC/OS-II及Nios II的多窗口显示屏控制器的设计与实现(01-23)