图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处理器强大的运算能力,实现了单屏幕多窗口的任意位置显示,使得屏幕显示内容变得更加丰富,显示方式变得更加灵活,使得控制器同步化。