液晶显示屏(liquid crystal display,LCD) 因具有低功耗、体积小、重量轻、寿命长、显示信息量大、无闪烁等诸多特点,被大范围的应用于各种显示领域。在通讯设备、家用电器、仪器仪表等产品中,其显示部件也慢慢变得多采用了各种小尺寸的液晶显示模块(LCD Module,LCM)。液晶显示模块根据显示方式可分为段位型、字符型和点阵型三种。其中点阵液晶显示模块由于既能显示字符,又能显示各种图形,被大范围的应用于对图文显示要求相比来说较高的场合中。在进行图形用户界面设计时,矩形、圆、椭圆等都是常用的图形元素,时都可通过调用画点函数来实现。但对于单片机控制的小尺寸LCM 来说,当绘制的图形点数较多(如内部填充的图形),如采用画点函数来绘制每个点,工作速度会比较慢。如我们根据LCM 内部显示存储器结构特点对画竖线程序来优化,采用优化的画竖线程序来绘制这些内部填充的基本图形,将可以大幅度提高程序的运行速度。本文将以STC90C52RC 单片机控制128(列)×64(行)点阵液晶显示模块(TGB)为例,根据LCM 的存储器结构特点,对其画竖线程序进行优化,并将它应用到绘制内部填充的矩形、圆、椭圆等基本图形中。
TG12864B 是广州同华公司生产的一款无字库的单色点阵液晶显示模块,控制芯片为SBN0064,支持68时序8 位并行总线]。VDD、VSS为模块逻辑电路电源,VEE 是模块内部提供的液晶驱动电压,V0 是液晶对比度调节端,LED+、LED- 是背光电源。单片机STC90C52RC 通过I/O 方式读写控制TG12864液晶模块,见图1 所示。
我们采用的屏坐标系:TG12864B 屏的左上角为坐标原点(0,0),水平方向为x 轴,自左向右;垂直方向为y 轴,自上向下。TG12864B 屏上各点的亮灭由其内置的显示数据RAM(DDRAM) 控制。这DDRAM 的每一位数据对应屏上一个点的亮(数据为1)和暗(数据为0)。DDRAM 与页、列地址的对应关系如下表1所示。
根据表1 DDRAM 与屏幕显示位置的关系, 由DDRAM 页地址和列地址确定的1 个字节单元对应着屏幕的Y 轴方向的8 个像素点。在我们上面传统的画竖线程序中,采用逐点描画竖线,对同一个DDRAM 字节对应的点,也需要重复的操作8 次:重复读同一个DDRAM 字节8 次,计算该字节上对应位8 次,回写该字节8 次。显然,这是一个巨大的冗余。其实,根据DDRAM 的结构特点,在画竖线时,我们通过读、修改、写DDRAM 1 个字节1 次,就可直接描画出竖线个点。而且,在进行画线或擦除线操行时,除了竖线的起点和终点所在DDRAM 字节,我们需要进行读、修改、写操作,竖线经过的中间字节,我们直接写入全1 或全0 就可以了,这将大幅度的提升程序的工作速度。基于以上思想,我们对画竖线程序来优化,其C 语言程序如下:
运行时间测试方法:采用电路中的STC90C52RC单片机(外接晶振12MHz)的定时器T0 进行检测,设置T0 为16 位定时模式,一次定时50 ms,采用中断方式工作。50 ms 以上的时间,通过统计中断次数计算获得,50 ms 以内的时间,通过读取定时器的计数寄存器TH0、TL0 获得。经过运行测试,两种画竖线函数均能正确画出相应的竖线 所示。
给出矩形的左上角点和右下角点坐标,根据上面的画竖线函数,便可从左到右逐根竖线地绘制出填充的矩形,其C 语言程序如下:
不同的运行参数(uchar x0,uchar y0,uchar x1,uchary1,uchar type),测量它们的运行效果和时间。经过运行测试,两种画填充矩形函数均能正确画出相应的矩形,运行时间如表3 所示。
在以上三组测试数据中,采用传统画竖线函数的填充矩形程序的运行时间分别是采用优化画竖线 倍,优化效果显著。
,可计算出椭圆圆心在坐标原点的标准椭圆在第一象限上的1/4 椭圆弧的各点坐标。再由椭圆关于X 轴和Y 轴的对称性,便可得到其在另外3 个象限的椭圆弧坐标。经过平移,就可得到椭圆圆心在任意位置的椭圆弧各点坐标。以椭圆弧关于过椭圆圆心的水平线对称的每一对点为端点画竖线,便能画出内部填充的椭圆。对调用传统的画竖线函数实现的填充椭圆函数和调用优化的画竖线函数实现的填充椭圆函数,输入各种不同的运行参数(uchar x0,uchar y0,uchar a,uchar b,uchar type) ,(x0,y0)为椭圆圆心坐标,a 为椭圆长半轴,b 为椭圆短半轴。测量它们的运行效果和时间。经过运行测试,两种画填充椭圆函数均能正确画出相应的椭圆,运行时间如表4 所示。
在以上三组测试数据中,采用传统画竖线函数的填充椭圆程序的运行时间分别是采用优化画竖线 倍,优化效果显著。
TG12864B为例,根据LCM 内部显示存储器结构,对画竖线程序进行优化,在绘制竖线、填充矩形、圆形、椭圆等常用基本图形时,可以大幅度地提高程序的工作速度,具有较强的实用价值。以上结论,亦适用于其它采用SBN0064 或其兼容芯片( 如KS0108、S6B0108、HD61202 等)控制的12864 点阵液晶模块。而对采用ST7920 或其兼容芯片控制的带中文字库的点阵液晶模块,则可根据其内部GDRAM 结构,对画横线程序来优化。