2 点阵LCD的显示控制技术
根据点阵式LCD的功能和特点,笔者研究了两种应用广泛的控制算法,左(右)循环位移算法和翻页算法。
2.1 左(右)循环位移算法
此算法应用于广告或车载报站系统中。如图2所示,以左循环为例,假如一串8个汉字(16*16字模)的广告,要在192*64点阵LCD上的第二行(192*64型的点阵显示16*16字模时为4行12列)实行左循环显示功能,具体算法如图3所示。
说明:把8个字看作为一个整体,即汉字串,并以第一个汉字的显示坐标作为整个汉字串的显示坐标,将其初始化为最右边的坐标值(假设广告是从右向左移动)。接着依次向左延伸显示8个汉字(一条广告),如果在显示过程中,有一些汉字的坐标会超过液晶屏的显示界限,这时控制程序不显示这些汉字,如图2虚线小方框所示。汉字串显示坐标向左移一位(减1)都要判断坐标值是否等于-7(等于-7,则一次左移结束,重新初始化为最右边的坐标值,准备第二轮左移;不等于-7,则本轮左移尚未结束)。
在实际应用中,左(右)循环位移算法还可根据系统需求进行改进和拓展,以使他的应用更加灵活。比如要求广告语是可实时更改的,即当用户通过串口或其他外部接口输入新的广告时,原来的旧广告要被新广告替换,这样,算法就会更加复杂,因为除了广告的内容本身的变化(字改变),字数也可能改变。
2.2 翻页算法
此算法应用于短信息的显示系统中。首先必须把显示所需的页数计算出来,公式为:
其中:P为页数,S为所要显示的汉字总数,M为整屏容纳汉字的最大数。
比如在显示100个汉字时,100/46(本来除数应该是48,但要留出两个汉字的位置作为上下翻页的提示符的显示位置),结果商是2,余数是8。这就意味着100个字分成3页显示,第一和第二页都显示46个汉字,第三页显示最后8个汉字。其次,还需要建立页码和一屏汉字的存储器首地址的对应关系,也就是100个汉字,前46个汉字首地址对应第一页,接下来的46个汉字首地址对应第二页,剩余8个汉字对应第三页。因为一个地址存储了一个字节,而汉字内码由两个字节构成,那么,任何一屏汉字的存储首地址的计算公式为:
其中:t为任何一屏汉字存储首地址,T为全体汉字存储首地址,M为整屏容纳汉字的最大数,P为页数。以下的算法结构仍然以192*64点阵显示器为例,整个显示部分程序结构图如图4所示。
说明:根据所要显示的页面不同,文本把页面显示分为三个软件模块,他们分别是:首页显示模块,代表第一页汉字内容;中间页显示模块,代表非第一页和非最后一页的其他所有的页面;末页显示模块,代表最后一页汉字内容。在程序开始时,变量P作为将要显示的页面标识,赋初值为1,所以在第一次进入循环时程序进入首页模块,这时根据式(2)计算本屏汉字存储首地址,从而显示第一页内容,同时显示向下翻页提示符。随后等待外部按键中断,当有下翻页按键提示到来时,要改变P值(加1),进入中间页显示模块或末页显示模块。当程序进入中间页显示模块时,同样根据式(2)计算本屏汉字存储首地址,显示本屏的汉字,同时显示向上和向下翻页提示符。随后等待外部按键中断,当有下翻页或上翻页按键提示到来时,要改变P值(加1或减1),并进入上一页显示模块或下一页显示模块。注意:这里的上一页显示模块可能仍是中间页,而不是首页;同样下一页显示模块可能仍是中间页,而不是末页,具体要视总共的页数而定。当程序进入末页显示模块时,根据式(2)计算本屏汉字存储首地址,显示本屏汉字,同时显示向上翻页提示符。随后等待外部按键中断,当有上翻页按键提示到来时,要改变P值(减1),进入中间页显示模块或首页显示模块。
在实际应用中,翻页显示算法可与短消息存储和查阅算法,文件系统相结合实现类似手机的短消息模式的显示系统。
3 实验设计与结果
3.1 设计思路
在设计外围硬件时,笔者用了E2PROM存储汉字库,8 kB的外部RAM存储短消息和广告中的每个汉字汉字内码,再把内码转换成汉字库字模首地址,然后读取E2PROM中的字模。在外部RAM中,进行了区域划分:前4 kB:存储已经预处理完毕且即将显示的短消息,可容纳汉字2000个(每个汉字2 B)。接下来2 kB:存储已经预处理完毕且即将显示的广告,由于加入了滚动机制,只可容纳200个汉字。最后的2 kB:存储串口接收来的BTYE,包括所有的解包、解码的预处理都在这个区域进行在这里,如之前所述,把有用信息的提取出来,提取出的汉字部分,送入短消信或广告存储区,等待显示命令。此区域可支持2 000 B的编码长度。同时设计了4个按键,用于控制上下翻页,广告模式与消息模式之间的切换,单片机复位。
3.2 实验结果
由于广告是滚动的,静态图无法描述清楚,所以这里只给出短消息显示图,这是中间页显示,左上角和右下角分别是上翻页和下翻页的提示符。笔者让单片机顺序提取字库中的汉字进行显示。
4 结 语
这两种算法已应用于基于无线测控网的车载及船载短信息通信系统中,同时也可通过进一步拓展算法来迎合更加复杂的系统需求。希望本文能为那些基于低端LCD应用的程序开发人员提供一个解决实际问题的思路和方法。
文章评论(0条评论)
登录后参与讨论