基于ARM处理器的显示屏控制器的设计
扫描二维码
随时随地手机看文章
1 引言
LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕,主要应用在公众场合的信息发布。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。本文提出了一款基于32位高性能ARM处理器和μC/OS-II的显示屏控制器的设计方案。它充分利用了μC /OS-II高效的多任务管理功能和ARM处理器强大的运算能力,实现了单屏幕多窗口的任意位置显示,使得屏幕显示内容变得更加丰富,显示方式变得更加灵活。从而使得控制器同步化。
2 控制器硬件总体结构设计
本控制器的硬件结构框图如图1所示。数据处理模块由MCU,一片SRAM和一片FLASH存储器组成。MCU选用基于32位ARM内核的 LPC2214处理器,它有着丰富的外围接口资源和强大的运算能力,是整个控制器的核心。SRAM作为MCU进行特技处理时的缓存使用。FLASH存储器用于存储显示的点阵信息和一些必要的参数。扫描控制模块由CPLD和显存组成。显存为一片SRAM,它用于保存当前正在显示的一帧数据。通信模块包括以太网模块和串口通信模块,可以实现PC与控制器的RS232、RS485以及工业以太网通信。
图1 控制器的硬件结构框图
3 控制器硬件详细设计
1、RTC电路。LPC2214内部集成了RTC功能模块,但由于其时钟源为VPB时钟,故其不能在芯片断电时使用,故其不适合由电池供电的系统。故我们在这里采用了外置的RTC芯片--HOLTEK公司生产的低功耗串行实时时钟芯片HT1381。HT1381采用串行传输方式与微处理器接口,只需三根引线就可以实现微处理器对HT1381访问控制。RTC部分电路原理图如图2所示,图中,C1、C2、G1及X1和X2内部的振荡器组成了 HT1381的时钟发生电路。D1、D2、D3以及3V的可充电电池,+3.3V的电源组成了HT1381的供电电路。系统采用外部供电时,D3、D2 导通,D1截止,外部电源一方面向芯片供电,另一方面对充电电池进行充电。当系统电源停止供电时,D3截止,D1导通,芯片由电池来供电。
图2 RTC电路
2、温度传感器电路。DS18B20是单总线数字温度传感器。DS18B20采用3脚封装,从DS18B20读出或写入数据仅需要一根I/O线。并且以串行通信的方式与微控制器进行数据通信。该器件将半导体温敏器件、A/D转换器、存储器等集成在一个很小的电路芯片上,传感器直接输出的就是温度信号的数字值。信号传输采用两芯(或三芯)电缆构成的单总线结构。一条单总线电缆上可以挂接若干个数字温度传感器,每个传感器有一个唯一的地址编码。微控制器通过对器件的寻址,就可以读取某一个传感器的温度值,从而简化了信号采集系统的电路结构。采集端口的连接线减少了50倍,既节省了造价,又给现场施工带来极大的方便。
3、串行接口电路。虽然,现如今以太网通信的使用已非常普及,但由于串行通信接线少、成本低,所以其在数据采集和控制系统中仍然有着非常广泛的应用。RS232和RS485两种标准的主要区别与使用平衡信号和非平衡信号有关。RS232采用非平衡信号,而RS485采用平衡信号。究竟采用哪一种, 主要取决于传输距离和电器噪声两个因素。在传输距离小于30米,并且环境电器噪声较小情况下,最好采用非平衡的RS232,在传输距离较长,但小于300 米时,或者环境电器噪声影响必需考虑时,最好采用RS485。并且RS485的二线制通讯方式可实现真正的多点双向通信。
4、自动调亮电路。在环境光线较弱时,LED屏的亮度应相应降低,否则会显得刺眼。而在环境光线较强时,LED屏的亮度也应相应提高,否则屏幕显示内容会看不清楚。所以控制器需根据周围光线的亮度来自动调整量度。为了实现上述功能,系统采用了光敏电阻,与一定值电阻串联,当外界环境光线变化时,光敏电阻阻值发生变化,R2所分电压也跟着发生变化,然后根据此电压值来调整屏幕亮度,具体电路如图3所示。LPC2214具有8路10位ADC转换器,其参考电压为3.3V,参考电压的精度会影响ADC的转换结果。R1为I/O口保护电阻,用于保证电路不产生短路故障。
图3 自动调亮电路
5、LED显示屏扫描驱动电路。LED显示屏的扫描逻辑由CPLD来实现,CPLD采用 Altera的EPM1270。EPM1270属于Altera的MAX II系列。MAX II是Altera推出的迄今为止成本最低的CPLD器件。
3 LED扫描逻辑设计
LED扫描逻辑采用CPLD来实现,它具有很好的组合逻辑和时序逻辑功能,能够完成LED显示所需要的扫描控制信号。CPLD设计框图如图4所示, 它主要包括以下几个模块:⑴ 时钟进程:产生各种频率的时钟;⑵ FIFO:CPLD与MCU之间的接口部分,用作数据缓冲,它使得MCU可以对显存进行全速写操作;⑶ 写入地址及数据产生器:产生向显存进行写操作的地址和数据;⑷ 读地址产生器:扫描方式不同,从显存中读取数据时的寻址方式也不同,读地址产生器,可根据扫描方式的不同,产生不同的读显存的地址,从而完成1/16、1 /8、1/4等扫描方式;⑸ 扫描控制电路:在不同的扫描方式下,根据从显存中读取的数据产生相应的扫描控制信号;⑹ 读写切换电路:对显存的读写状态进行切换。
图4 CPLD设计框图
4 基于μc/OS-II控制器软件设计
为了实现单屏幕、多窗口任意位置的显示,软件部分我们基于μc/OS-II进行设计,这样可以充分利用操作系统高效的任务调度算法,将每个窗口的显示都交由单个任务来完成,从而极大地提高系统的运行速度和可靠性,并且使得程序的开发和扩展变得更加方便。程序的结构如图5所示,控制器上电后,首先进行系统初始化,然后从 FLASH 中读取屏参数,进行参数初始化。然后建立任务TaskControl,TaskControl用于对各窗口显示任务进行实时管理,它拥有比各窗口显示任都高的优先级。它每隔1s对reset标志进行一次查询,如果reset=1,则删除原先建立的各窗口显示任务,然后从FLASH中读取新的窗口个数,然后依此建立新任务,将每个窗口的显示交由单个任务来控制。
图5 系统程序结构图
1、RS485总线的集群通讯协议。其具体过程如下:首先,PC向控制器发送地址帧,地址帧采用MARK校验。它包括6个字节,第一个字节为地址码,控制器接收到这个字节后,先判断其是否与自己的地址相同,如果相同则继续接收下一个字节,否则就退出中断,每个控制器的地址可通过控制器上的拨码开关来设置。接下来的三个字节为屏参数,他主要包括屏的横向点数、纵向点数和显示屏的色彩(单、双色)。控制器接收到这几个参数后,先与自身参数进行比较,如果参数不相同则退出中断,否则继续接收下一个字节。接下来发送的一个字节为操作码,它主要是告诉控制器下面是要进行什么样的操作,这些操作包括加载屏参、系统复位、加载数据、开关机等。控制器会根据操作码来对Flash进行操作。
2、GUI接口的设计。GUI为Graphic User Interface的缩写,即图形用户接口。它是建立在计算机图形学基础上的产物,它可用于提高人机交互友好性,在LED屏上我们可以用它来实现许多意想不到的效果。这里提供了在LED屏上最基本的画点、线、圆等功能。
(1) 画点函数。一切图形都是由一个一个点来组成的,它是图形的最基本元素,描述一个点时需要使用其坐标值(X,Y)和颜色。对于双色LED屏颜色值0表示绿色,1表色红色,2表示黄色。在画点时,先把指定的点坐标值转换为显存上的对应字节,然后对相应字节进行颜色处理。然后在将此字节写入显存完成该点的显示。(2) 画线函数。对于直线的绘画,分为水平线、垂直线和一般直线3种绘画方法。其实一般直线就包括水平直线和垂直线,但由于这两种直线较为特殊,绘画操作不需要像其他直线一样须进行较多的运算,故将它们分开有利于提高绘画的速度。
本文作者创新点
本文主要介绍了一款基于32位高性能ARM处理器和μC/OS-II的显示屏控制器的设计方案。本系统充分利用了μC/OS-II高效的多任务管理功能和ARM处理器强大的运算能力,实现了单屏幕多窗口的任意位置显示,使得屏幕显示内容变得更加丰富,显示方式变得更加灵活,使得控制器同步化。
参考文献:
[1] 龚兆岗.基于ARM处理器的LED可变情报板嵌入式控制器[J].现代显示.2006, (06)
[2] 张叔猛.嵌入式系统和FPGA在LED显示屏中的应用研究与实现[J].武汉理工大学.2005
[3] Jean. Labrosse著,邵贝贝等译.嵌入式操作系统μC/OS-II(第二版)[M].北京航空航天大学出版社.2005年
[4] 宋晖, 高小明. 基于ARM的嵌入式操作系统μC/OS-II的移植[J]. 微计算机信息, 2006,2-2: 135-136