LED大屏幕异步控制器多窗口显示的设计与实现
以往的LED 异步控制器只能把一个屏幕作为一个完整的区域来进行显示, 或者简单的加上时间区域或游走字幕区域,这样对于用户来讲往往缺乏足够的灵活性, 尤其在屏幕较大的时候。针对以上情况, 本文提出了一款基于32 位高性能ARM处理器和uc/OS- II 的设计方案。它充分利用了uc/OS-II 高效的多任务管理功能和ARM处理器强大的运算能力, 实现了单屏幕多窗口的任意位置显示, 使得显示内容变得更加丰富, 显示方式变得更加灵活。
2 LED 控制系统的工作原理
典型的LED 异步控制系统主要由PC 应用软件、通信模块、数据处理模块、扫描控制模块、驱动模块和LED 屏几部分组成,如图1 所示。
首先, PC 应用软件将文本或图片转化为具有特定格式的点阵信息。然后, 通过通信模块将此点阵信息发送给数据处理模块。数据处理模块对这些点阵信息进行各种特技处理, 最后通过扫描控制模块和驱动模块将画面在LED 屏上进行正确显示。
本文所指的LED 异步控制器包括通信模块、数据处理模块和扫描控制模块三部分。
3 控制器软件部分的设计
本控制器的硬件结构如图2 所示。数据处理模块由MCU,一片SRAM和一片FLASH 存储器组成。MCU 选用PHILIPS 的基于32 位ARM内核的LPC2214 处理器, 它有着丰富的外围接口资源和强大的运算能力, 是整个控制器的核心。SRAM作为MCU 进行特技处理时的缓存使用。FLASH 存储器用于存储点阵信息和一些必要的参数。
扫描控制模块由CPLD 和显存组成。显存为一片SRAM, 它用于保存当前显示的一帧点阵信息。CPLD 通过地址总线和16位数据总线与MCU 相连, 它把从MCU 接收到的16 位数据按指定地址写入显存, 然后再按一定的寻址方式从显存中读出点阵信息进行扫描。MCU 只能通过CPLD 对显存进行以字(2byte)为单位的写操作。通信模块包括以太网模块和串口通信模块, 用于实现PC 与控制器之间的RS232、RS485 以及工业以太网通信。
4 控制器软件部分的设计
为了实现单屏幕、多窗口任意位置的显示, 软件部分我们基于uc/OS- II 进行设计, 这样可以充分利用操作系统高效的任务调度算法, 将每个窗口的显示都交由单个任务来完成, 从而极大地提高系统的运行速度和可靠性, 并且使得程序的开发和扩展变得更加方便。
在进行具体的程序设计之前, 首先要确定数据的组织方案。
因为好的数据组织方案, 对于程序编写来说往往可以达到事半功倍的效果。
4.1 显存的数据组织方案:
对于双色屏, 一个像素点需要红、绿两位数据来描述。为了便于处理, 我们将横向连续的8 个像素点组成一个字(2byte)来进行存储, 其中一个字节为红数据, 一个字节为绿数据。数据存储顺序为从左到右, 从上到下。如图3 所示, 假如屏幕宽度为160 个像素点, 显存起始地址为0x83000000, 则屏幕第一行的前8 个像素点映射到显存中地址为0x83000000 和0x83000001 的两个字节, 第二行的前8 个像素点映射到显存中地址为0x83000028 和0x83000029 的两个字节, 依此类推。
4.2 点阵信息转化规则:
由于窗口大小可以任意设置, 窗口的位置可以任意摆放。
所以对于单个窗口而言, 它在显存中的映射可能并非是字(2byte)对齐的。以图4 为例, 在一个大小为160(宽)×96(高)的屏幕上开设一个左上角坐标为(20,16), 大小为86×47 的窗口, 则此窗口第一行的前4 个像素点在显存中的映射为地址是0x83000282 和0x83000283 的两个字节的低4 位, 所以这个窗口在显存中的映射并不是字对齐的。由于MCU只能以字(2byte)为单位对显存进行操作, 所以PC 软件在对该窗口进行点阵信息转换时, 如果直接对区域1 (窗口的实际大小)进行转换存储,则在对该窗口进行特技处理时会存在大量的位运算, 这样会大大降低运算效率, 从而影响特技效果的显示, 这样就很难满足用户对特技显示效果的要求。
为了解决上述问题, 可以将区域1 横向扩展成起点坐标为(16,16), 大小为96×47 的区域2。易知, 区域2 在显存中的映射是字对齐的。为了避免运算时的位操作, PC 软件在对区域1 进行点阵信息转换时, 可按区域2 来进行, 只是需将区域1 的扩展部分的数据全填为1。这样处理会牺牲掉一小部分FLASH 存储器空间, 但却可避免特技处理时大量的位运算, 从而大大提高运算效率, 因此这样做是值得的。
4.3 缓存数据的组织方案:
由于MCU 只能对显存进行写操作, 而在进行特技运算时,往往需要前一帧信息才能得到下一帧的信息。所以, 首先, 需要在缓存中划分出一块和显存大小相等, 地址一一对应的区域sc
LED大屏幕异步控制器多窗口显 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)