文献标识码: A
文章编号: 0258-7998(2012)03-0054-03
传统的单色智能仪表升级成彩色界面显示时,彩色显示字符和图像的方法与单色不同,且单色显示时所用的8 bit数据总线与低端MCU难以完成彩色液晶显示,以至于有时必须重新设计电路,严重增加了升级产品的成本。另外,智能仪表工作时,往往要求实时曲线动态显示以便监视设备的工作情况。因此,如何设计友好的人机交互界面的问题日渐突出。
本文以微控制器STC12C5A16S2为核心,使用OCM480272T430液晶模块开发了基于彩色TFT液晶模块的智能仪表界面。在研究彩色图像转换像素矩阵的原理基础上,采用8 bit总线方式实现了静态与动态图像的显示,可以达到16 bit真彩色的图像显示效果。另外还研究了中西文混合字符串的显示方法。为了更有效地对数据实时性监控,研究了实时曲线的动态显示和刷新方法。并用实例验证了方法的可行性。
1 MCU与彩色液晶显示器的接口设计
1.1 MCU的选择
STC12C5A16S2是宏晶公司推出的一款高性能增强型51系列微控制器,它以单时钟/机器周期(1T)模式运行,指令系统与传统8051完全兼容,但运行速度是8051的8~12倍。其I/O口兼容传统8051的准双向口/弱上拉模式,同时增加了强推挽/强上拉、单输入/高阻、开漏等模式,系统设计时,用户可以根据需要对I/O模式设定[1]。传统的智能仪表中MCU主要以C51系列单片机为主,STC12C5A16S2丰富的硬件资源、高速运算性能,向下可以兼容传统低端51系列单片机,向上可以支持智能仪表功能扩展。其良好的性价比,可以满足各种智能仪表核心升级的要求。
1.2 OCM480272T430-1B彩屏显示模块
OCM480272T430-1B是一款480×272的TFT彩屏LCM,采用RA8870控制器,支持2D引擎与几何图形加速的文字、图像以及图文混合模式,仅对寄存器操作就可以绘制直线、矩形以及圆。该模块内置有CGROM可显示ISO8859-1/2/3/4字形,外挂字库可显示中文繁、简字体。OCM480272T430提供GB-2312及BIG-5编码的16×16点阵字库,内嵌多种文本显示效果处理,例如:1~4倍的水平和垂直方向的独立放大,90°、180°、270°文字旋转显示功能。另外,该模块提供文字光标和32×32像素的图形光标功能[2]。在OCM480272T430 LCM内部,RA8870控制器直接通过DMA方式[3],不需要MCU读取显存资料,显示速度快、画面流畅,不会产生拖影、“瀑布”等现象干扰,为实时数据显示提供了实时刷新速度,图像可靠。此外,模块本身的文字、图形处理功能可以有效地简化代码,使在应用系统中选择小容量的MCU实现图文混合的实时数据显示成为可能。因此,OCM480272T430-1B适合用于仪表数值监视和曲线显示。
1.3 MCU与LCM的接口设计
MCU与LCM的接口电路如图1所示。LCM以8 bit数据总线模式与MCU的P0口相连,此时,P0口作为传输数据的输入/输出口,P2.0~P2.5以及P3.2、P3.3作为MCU与LCM的联络控制信号。在系统中,P0口设置为准双向口模式。
2 字符串的显示
在智能仪器仪表中,字符显示(包括汉字和西文字符)常被用于参数显示、操作提示、报警、菜单以及帮助信息。LCM提供了汉字和4种西文字库,支持多种字体及处理效果,西文字型点阵为8×16半型字,汉字为16×16宋体全型字,其显示流程如图2所示。
不同于单色显示,彩色LCM在显示时,首先要开辟显示区域,显示区域的大小可以根据显示内容多少确定,其范围不可超过480×272;然后,在已设定的显示区域内定位字符的显示位置。
LCM被复位后,默认为图形模式,在字符显示之前,须开启文本模式,它由LCM内存写入控制寄存器0(MWCR0)设定[3]。LCM背景色设定有2种形式:一种是BET背景色(64 K色),另一种是文本背景色(256色)。一般情况下使用文本背景色。LCM嵌入了多种文本显示效果处理方式,通过字型控制寄存器1(FNCR1)的设定来实现[3],拟定文本显示效果一旦设定完毕,LCM自动实现显示效果处理。
由于在文本模式下,LCM对西文采用ASCII码方式提取字符编码,而对汉字字符采用GB-2312内码方式提取汉字字型编码。因此,字符串显示时,须检查被写入数据的第一个字节,如果此字节小于80 H时,则把这次数据当成半型字(ASCII码)来译码;如果此字大于80 H时,则当成全型字(汉字)来译码,显示汉字时,需要设定关闭ASCII码模式。
3 图形及曲线的显示
智能仪器仪表参数常采用曲线方式显示,以便观察参数的变化轨迹。另外,在系统启动初始化时,常常采用一个引导界面,如厂家名称和徽记。前一种模式需要根据参数值的大小实时修正显示位置,是一种动态图形显示。而后一种只是把事先准备的图形映射到显示模块上,是一种静态显示。
3.1 图形静态显示
图1所示的MCU与LCM连接采用8 bit数据总线方式。LCM在8 bit数据总线模式下,若以256色格式输出,像素点的色彩信息可在一个发送周期内完成,如果以多于256色格式输出,则需分2个周期发送[3]。在图片显示之前必须把图片转换成像素信息,即把图片中每一个像素点转换成用RGB表示的色彩编码信息。以16 bit真彩色80×80像素的图片为例:1个像素用2 B表示,经过转换后的编码矩阵为160×80维的单字节矩阵。在LCM显示时,从用户指定存储位置开始,依次提取矩阵元素至显示存储区。
与字符显示的文本模式不同,图像显示需要使用图形模式。在图形模式中,控制器将输入源开放,即将设置存储位置与代码长度的权限交给用户自行设定。显示静态图像时,首先开辟显示区域,开启图形模式,选定显示的起始坐标,再将编码矩阵按行方式写入到选定的工作窗口中显示。使用静态图文混合方式显示静态画面的程序流程图如图3所示。
在应用程序运行之前要对LCM进行初始化,以保证LCM能处在正常工作中。LCM复位是对LCM内部控制器进行一次重启,使其内部寄存器处于缺省的状态。初始化液晶是对LCM内系统时钟以及相关内部寄存器进行设置。另外,液晶的屏幕亮度可以在PWM背光设定。设定背景色时,把全屏作为一个显示区域创建,然后以设定需要的背景色清除显存。否则,显示时会出现屏幕背景花屏的现象。
文字处理有2种实现方法:(1)如果开启文本模式,可不用开启工作窗口,直接设定起始坐标,给定文本的输入位置。图3采用此方法。(2)如果不开启文本模式,则必须指定显示区域,以显示放大后的字体,同时设定起始坐标、给定文本的输入位置。此外,对于单图层与其他窗口无相交面积的情况可以不开背景穿透。
3.2 图形动态显示(实时数据的曲线显示)
在智能仪表中,利用曲线动态显示更能方便地对数据实时性监视、突出样本曲线的变化规律。
显示区域刷新方法有2种:(1)清屏刷新。当数据显示到达曲线显示区域最大边界时,将显示区域内的像素全部清除,用于载入新的像素显示;(2)滚动刷新。将显示刷新的时间设置成滚动时间,当到达滚动时间时,在滚动区域内将原像素按一定的偏移值移动,将滚动后的像素清除同时载入新的像素。这样,显示区域可以逐步得到新的数据显示。与清屏刷新相比,滚动刷新更有利于观察新旧数据的联系和对比,因此选取滚动刷新实现曲线的实时显示。
实现滚动刷新需要设定滚动区域、滚动偏移值与滚动时间。滚动区域用于指定滚动的范围,避免影响其他屏幕信息。滚动的偏移值用于指定滚动的幅度和方向(水平方向和垂直方向)。滚动时间可由定时器定时中断,或者在滚动区域内设定一个满幅值,当像素到达该值时,区域开始滚动刷新。
根据实际采样时间,可以设计出对应数值的网格线以方便对数据的监测。更改相应的参数就可以得到任意宽度的网格反映采样时间的变化。实时曲线显示的程序流程如图5所示。图6为实时数据曲线显示界面,白色为主界面颜色,蓝色为显示区域工作窗口,滚动区域与工作窗口大小一致。滚动偏移值为滚动区域水平方向的一半。 本文以微控制器STC12C5A16S2为智能仪表核心,利用OCM480272T430模块开发了基于彩色TFT液晶模块的智能仪表界面。采用8 bit总线方式实现了基于彩色液晶模块的静态与动态图像的显示方法实现16 bit真彩色图像的显示,满足了传统智能仪表升级的需要。
字符串显示时,通过调用字符库,可根据需要添加文本处理功能,实现显示字符的放大、旋转等;曲线显示时,通过建立测量参数与显示模块像素之间的坐标转换关系,不断更新曲线末端坐标,用绘制直线命令实现实时曲线的显示。另外,利用滚屏方法可实现实时曲线的动态刷新,为基于彩屏LCM的智能仪表人机交互界面设计提供了有效的实现方法。
参考文献
[1] STC12C5A60S2系列单片机器件手册[DB/OL].URL:http: //www.stcmcu.com/datasheet/stc/STC-AD-PDF/STC12C5A-60S2.pdf, 2011-10-17.
[2] OCM480272T430-1B彩屏带触摸屏说明书[DB/OL].URL:http://www.gptlcm.cn/CN/list.asp?proname=OCM480272-T430-1B,2011-10-17.
[3] RA8870文字/图形 TFT LCD控制器规格书[DB/OL]. URL:http://www.raio.com.tw/S%20version/s_product.8870. htm,2011-10-17.