基于LED技术的大屏幕显示屏已经广泛用于广场、机场、体育场馆和车站等公共场所,在大屏幕上显示文字、动画、图像以及视频等多媒体信息。LED大屏幕控制系统在显示信息时,不需要经过计算机对数据进行处理,是直接读取存放在显示器缓冲区中的信息来显示的,当需要更新信息时,显示屏的数据采集模块向显示模块发送新数据。本文利用高速数据存储和处理的技术方法,设计了一种彩色异步LED大屏幕显示屏控制系统。
1 系统设计
1.1 系统的总体框架系统主要包括以下4个组成部分:
1)上位机用户控制平台部分,主要用于对图像数据进行压缩和对显示信息的修改;
2)基于ARM的屏幕通信接口部分,用于实现与上位机通信,接收上位机部分的图像数据和控制信号;
3)基于CPLD和ARM的大屏幕主控制器部分,实现图像灰度调制和重构;
4)大屏幕1.2 系统硬件设计
目前有两种主流主处理器供显示屏控制系统使用,一种是ARM,另一种是ATMEL公司生产的89055。因为ARM不但运算速度快,还可以对各种数字信号进行实时处理,很适合LED大屏幕控制系统的主处理器在运行过程中需要对大量数据进行搬移的特点,同时也为设计后期的软件编程留有充裕的时间空间。因此我们选定ARM为本系统的主处理器。
1.2.1 通信模块设计
在异步LED大屏幕控制系统中,可以在脱机状态显示不同的信息。因此,实现对大屏幕显示内容的实时更新和调整是LED大屏幕控制系统设计中必须要进行的重要环节。对于LED显示器与上位机的通信功能进行设计与研究,其目的是为了快速、可靠地获得调整后的显示内容。因此,本文设计的系统提供了3种通信方式,分别是以太网通信、串口通信和无线射频通信。这3种通信方式不但增强了通信的性能,而且方便了用户的使用。1.2.2显示控制模块设计
屏幕控制电路是LED大屏幕控制系统中的一个重要组成部分,显示屏控制逻辑电路生成读写控制信号和访问显示缓冲区数据的地址,读取出来的显示数据通过显示驱动程序发送到LED显示屏显示。显示控制模块主要由读/写地址产生器、计数器、读/写地址选择器、读/写选择器、读/写信号产生器、移位锁存器和同步控制器等部分组成。
要在LED大屏幕上显示一幅完整的图形图像,CPLD和ARM必须要协同一致工作,完成显示存储器中图形图像数据的读取、解压,图像显示效果的制作、灰度调制和生成显示屏的驱动逻辑等各个部分的功能。显示控制模块的硬件结构图如图3所示。
显示驱动电路部分,是为大屏幕的LED灯管提供驱动恒定的电流。
在控制电路中,数据总线将CPLD与ARM之间连接起来,S3C44B0X通过芯片2选通CPLD中的数据缓冲区,所以ARM输出数据的基地址为0x40000000。ARM首先将FLASH中保存的图像数据复制到SDRAM中,经过相关处理后,调用不同的动态显示效果程序将SDRAM中的图像数据循环写入CPLD缓冲区,CPLD生成相应的时序转换,串行输出至LED驱动电路。
2 LED大屏幕控制系统软件设计与实现
考虑到系统硬件驱动程序的运行效率以及软件的开发周期,本系统采用C语言作为软件的开发工具。
设计的应用程序要实现与显示屏硬件的连接功能,一要与系统底层的硬件驱动程序进行通信,二要为用户提供控制界面并可以接收用户输入的各种指令。为此,采用VisualC++作为系统应用程序的开发工具。通信应用程序使用MSComm(MicrosoftCommunicationsControl)控件来编写,MSComm是微软公司为用户提供的简化Window、下串行的通信编程ActiveX控件。MSComm控件通过外部设备的串行端口进行数据的传输和接收,可以为应用程序提供串行的通信功能。利用MSComm控件进行串口的编程非常快捷、方便。MSComm控件是基于事件驱动的,在一般情况下,在事件发生时必须要得到通知。在实际编程中,可以在OnComm事件处理函数中加入自己编写的处理代码,OnComm事件处理函数还可以检查和处理程序在运行过程中出现通信错误。OnComm控件的最大优点是程序响应的时间非常短,可靠性较高。每个MSComm控件于一个串行端口对应。如果应用程序需要访问多个串行端口,就要使用多MSComm控件。MSComm控件的行为是由其各种属性决定的。在VC++中可以通过一系列的成员函数设置这些属性,从而控制串行口的数据格式、波特率等特征。另外,在VC++中,MSComm控件是作为CWND类的派生类出现的,在系统初始化时必须创建这个窗口,并使用成员函数设置其属性,使它和下位机使用相同的通讯格式,否则是不能建立正确的串行通讯的。