摘要:以中文液晶显示模块CM320240-7为例,给出了使用LCD显示模块CM320240-7来实现文本、图形和实时曲线显示的系统设计方法。
关键词:液晶显示模块;点阵;动态实时曲线显示;CM320240-7
0 引言
为了提高显示程序的可读性和可维护性,软件程序通常采用C语言来编写。从总体上说,液晶显示软件的编程主要分为主程序、液晶显示模块、键盘输入模块和通信模块等。其中主程序主要完成初始化、键盘扫描等;键盘输入模块主要完成各功能键的按键响应;液晶模块主要完成菜单界面的切换显示;通信模块主要实现数据的接收与发送。本文重点介绍液晶显示部分的内容。
液晶显示的内容主要是一些用户关心的实时参数和状态,其基本操作流程为:初始化、清屏、显示。初始化主要是复位液晶,等待对液晶进行操作;清屏主要是清除掉液晶屏上所显示的内容,为下一次显示的内容做准备;显示主要是显示当前想要显示的内容。
1 中文液晶显示模块CM320240-7
中文液晶显示模块CM320240-7是一个中英文文字与绘图模式的点矩阵液晶显示模块,其内建有12Kbyte的ROM字型码,可以显示中文字型,数字符号,英日欧文等字母。同时,该模块还内建双图层的显示内存,可支持文字与绘图两种混合显示模式。并可提供全角(16x16)与半角(×8)文字显示模式。CM320240-7的最大特点就是在强光照射下,用户依然可以清晰地看到屏幕上显示的内容,因而非常适合在户外使用。
CM320240-7可以很方便地与ARM9相连接。它具有24个管脚,其中有8位数据线(DB0~DB7),6位控制线(RS-数据/命令控制,WR-读写控制,CS2-片选2,CS1-片选1,EN-使能端,/RST-复位端,),4位电源线(AVSS,AVDD,VSS,VDD),2位状态线(BUSY-用以回应模块内部的执行使用状况,INT-用以回应模块内部的中断状况),同时包括背光源正、负端(LED+、LED-),LCD驱动电源输入端和输出端(V0、VEE)。
2 字符和汉字的显示
对于点阵液晶显示器来说,汉显菜单的设计就是如何通过编程将汉字按一定的格式在屏幕上显示出来。
在LCD上显示字符和汉字之前,通常都需要先提取点阵码。由于要显示的汉字和字符非常多,而且它们是任意的,因而必须要有常用的字
符和汉字字库。由于ASCⅡ字符字库比较小,一般的字模软件就可以生成,故笔者使用的软件是任意点阵字体生成器,其操作界面如图1所示。
任意点阵字体生成器软件界面风格简洁,操作简便。常用汉字和字符的ASCⅡ码保存在以.dat为后缀的文件里。故以打开文件的方式就可取得汉字和字符的ASCⅡ码,其操作语句如下:
fp_ST_16_08_ASC=fopen(“/mnt/Nand1/ST_16_08_ASC.Dat”,“r”)
有关在文本和图形显示方式下写入字符和汉字的方法,在与显示有关的相关资料中已经介绍得很清楚。这里给出的是一个在本程序中用到的显示汉字的函数。通过这个函数,可以将想要显示的任意汉字和字符显示在液晶屏幕的任意位置上。具体如下:
static void HanZi(U32 x,U8 y,U8*data,U8size,U8 reverse_log)
其中,x为横坐标,y为纵坐标,*data为数据内容,size为字体,reverse_log为反白标记。
3 图形曲线的显示
3.1 描点
对屏幕上每一个点进行绘制是绘图的基本条件。在用液晶显示器显示图形曲线时,首先要给屏幕上的每一个点分配一个二维的坐标。对于CM320240-7所用的320x240点阵液晶,其左上角第一个点的坐标为(0,0),右下角最后一个点的坐标为(319,239)。这样,根据二维坐标就可以计算出各点所对应的内存单元,并给其赋值“1”。而中文液晶显示模块在显示图形的时候,一般是以字符映像(Bit Map)的方式写入RAM,若RAM的某个位置被填满为“1”,其LCD面板相对应的位置就会被显示出黑点。因此,在RAM上所存储的像素资料,就会对应到显示屏幕(LCD)上,从而构成文字、符号或图形等显示效果。为了便于运算,可将每8个点的状态存放在一个字节的内存单元中,图2给出了显示数据从RAM到LCD显示的映射方式。由此可见,全屏的320x240个点的状态将存放在(320/8)x240=40x240个字节的内存单元中。
填充某一矩形区域的函数为Box_full(U16x_l, U16 y_1,U16 x_2, U16 y_2), 其中,(x_1,y_1),(x_2,y_2)为所填充的矩形区域的左上角和右下角的坐标。描一个点就相当于填充一个点阵区域。
清除某矩形区域的函数为Box_eraser(U16x_1,U16 y_1,U16 x_2,U16 y_2),其中,(x_1,y_1), (x_2,y_2)分别为所清除的矩形区
域的左上角和右下角的坐标。消除一个点即清除一个点阵区域。通过这个函数可以很方便地清空某个矩形区域的内容,例如清除图形区域,或清除需要改变的数据区域等。