菜单设计
- 格式:pdf
- 大小:264.98 KB
- 文档页数:5
Ox05,OxFF,Ox09,0xFF,0xFF,0xFF,OxFF,
0xFF,OxFF,OxFF,0xFF,OxFF,OxFF,0xFF,OxFF,
0xFF,0xFF,0xFF,OxFF,OxFF,OxFF,
OxFF,OxFF,OxFF,OxFF,0xFF,OxFF,OxFF,
0xFF,OxFF,//0“北京” 0xFF,O)(FF,O)(FF,O)【FF,0】(FF,OXFF,O)【FF,
Ox24);//设置地址指针,即要显示的位置 lcdDatWrite(dat);//先写要显示的数据 lcdcmdwrite(oxco);//再写命令码,命
令完成写一次数据。且地址指针自动增加 ) (3)根据数组内容写满屏
void LCD fullscreenwrite(uchar*p)
//数组为480个元素,描述了屏幕被分为 480(30×16)个小块后各块内的所显示的数据VoC/D T
RST、rdd
■c] V∞t
DⅨ卜7 ‘.
r。
SLA
FS
SLK
图2 AT89C51与LCM2401281连线原理图 Fig.2 Connection of AT89C51 and LCM240128l
图2中AT89C51的P3.7,P3.6,P3.1, P3.4,P3.3,P3.2分别与LCM240128l的控制 线/WR,/RD,CE,C/D,/RST,FS相连,PO口与 数据总线DBO~DB7相连,单片机通过控制线和 数据线操纵液晶显示器显示设定的菜单。 3.2软件设计
{ uint i:
ucharj;
,
for(i—O;i<480;i++)
{
if(。(p+i)!一oxFF)//是否为标志值?
for(j=O;j<16;j++)
{
//从字库里调字模显示,字库ziku
[]为自建字模数组
lcdXYWrite(i%30,i/30‘8+j,ziku
[。(p+i)。32+2’j],1);//写左边两个方格
第22卷第5期 2007年lo月
液晶 与显 示
Chinese JournaI of Liquid Cfystals and Displays
文章编号:1007—2780(2007)05一0634一05
V。1.22,No.5 0ct.。2007
基于点阵图形液晶模块的多菜单设计
陈伟锋,高宝建,汪 俊,张 远,黄美茹
lcdXYWrite(i%30+1,i/30’8+j,
ziku[。(p+i)’32+2’j+1],1);//写右边两个
方格
}
) } (4)数组建立 建立网格化屏幕显示内容的对应数组是本系 统设计的重要一步,也是简化液晶显示编程、提高 编程效率的关键所在。示例如下: 在屏幕左上角显示“北京”二字建立的数 组为: uchar xdata meun ol[480]一{
万方数据
液
晶
与
显
示
第22卷
配兼容。具有4 kB的可编程或可擦除的程序存 储器‘引。本系统通过外部程序存储器和数据存储
器扩展来存放显示用的字模和菜单数组,硬件主 要连接如图2所示。
l程序
,
P3.7
I存储器
一
P3.6
P3.1
P3.4
P3.3
I熟P
Po.乱P1D.7
一 ~
P3.2
册R
mD
_ FG
VM
,cE
采用以往的做法——编制出每个不同菜单专 用的显示程序,这在应用于显示少量菜单的系统 尚可,当用于多菜单显示的场合时,编程烦琐、任 务量大,而且效率也不高。本文介绍一种快速显 示和修改多个不同中英文菜单界面的程序设计方 法,并结合AT89C51单片机与LCM2401281液 晶模块组成的系统编程实现了该方法。该方案已 成功应用于中文菜单显示的电力测量仪中,效果
明显。
2 设计思路
对于点阵图形液晶显示器来说,汉显菜单的 设计就是如何编程将汉字按一定的格式在屏幕上 显示出来口]。一般来说,单片机系统为了能显示 汉字,必须使用汉字字库Ⅲ。使用汉字字库有两
收稿日期:2007一05·09;修订日期:2007一06一04
种方法:一种方法是将汉字字库写入EPROM,扩 展下位机的寻址能力。另一种是将要用的汉字的 点阵存入嵌入式系统的程序存储器中,使用时用 查表的方式读取这些汉字的点阵畸]。其中,前者 编程简单,但硬件复杂。后者硬件简单,不需扩展 下位机的寻址能力,但将汉字字模作为常量数组 会大大占用RoM空间。
这样,一个菜单界面的格式与内容便由一个
目,器
-(a)
㈣
Fig.1
图1。北”和。京” Characters。bei一(a)and“jing”(b)
数组确定了,不同界面对应的数组大小相同,数组 元素代表的意义一致,且其取值均为两位的16进 制编码,故可方便用同一函数进行处理。
通过对屏幕网格化后建立每屏菜单的对应数 组解决了两个问题:首先,要显示的每个菜单无需 再编专门的处理程序,只需建立与之对应的数组, 这样的数组建立比较简单方便,就如同向方格纸 中填写汉字一样,从而大大提高了菜单的设计速 度;其次,该数组存储在程序存储器中不会占据很 大的空间却大大减少了代码量,显著提高了液晶 屏的显示速度。
的接口问题,本设计采用C语言。实现该法的部 分程序如下:
(1)写命令与数据的子程序 写无参命令:void lcdCmdWrite(uchar ne训:md) 写数据:void lcdDatwrite(uchar newDat) 写带参命令:void lcdDCWrite(uchar datl,
uchar dat2。uchar cmd)
需要说明的是,该方法在方便定位的同时是 以牺牲显存为代价,就是说采用该法的显示界面 不是很紧凑。所幸的是通常要求非常紧凑的场合 并不多见。重要的是完全可以在无内容的区域通 过编写语句再插入其他显示内容。例如对于表格 来说可以通过数组显示出竖线和表格内容,表格 横线通过划线语句实现等。另外,此方法并不局 限于汉字显示,在需要英文字母、阿拉伯数字及自 定义画图元素的显示时同样切实可用。实际上, 在所设计的系统中,菜单的显示包括中英文字符、 标点符号及表格等。经实际使用显示,采用该方 法完全达到了设计要求,并且考虑到以后系统的 升级所引起菜单的增加甚至格式的变化,该方法 预留的编号空间都可以满足汉字的扩充和画图元 素的增加,方便菜单的修改及扩充。
在软件设计中采用模块化结构,使程序清晰 易编,便于调试扩展。编程采取以下流程:首先编 制出状态查询、写命令、写数据、延时等基本子程 序,然后在此基础上编写带参命令、LCD复位、初 始化、清屏、任意位置写一字节数据、显示一屏的 通用处理函数等功能程序模块。主要的软件流程 图见图3和图4。
单片机常用的编程语言有两种:汇编语言和 C语言[。]。综合两者特点及显示模块与整个系统
关键词:液晶显示模块;菜单设计;单片机
中图分类号:TN27;TN702
文献标识码:A
1引
言
液晶显示器具有低电压、微功耗、寿命长、体 积小,使用方便等诸多优点,在测量和控制领域被 广泛使用,它已成为测量结果显示和人机对话的 重要工具[1’2]。在液晶显示器使用日趋成熟的今 天,可显示图文并茂的图形点阵式液晶显示器倍 受青睐。在这类显示器的使用中,如何方便快捷 地设计出显示多个内容完整、界面友好的菜单程 序成为最关注的问题之一。
图4写满屏的程序流程
Fig.4 Flow chart of writing the whole screen
●
l以菜单A对应数 l组为参写满屏
●
以菜单B对应数 组为参写满屏
●
以菜单C对应数 组为参写满屏
Fig.3
图3显示A、B、C 3个不同菜单的流程。
Flow chan of displaying three different menu A,B and C.
万方数据
第5期
陈伟锋,等:基于点阵图形液晶模块的多菜单设计
幕上的最小操作单位。控制屏幕显示的过程实际 就是向相应显存中送入特定数据的过程。在屏幕 上确定位置显示汉字就是向从屏幕的确定位置字 节处开始向其以下的15个字节和以右一列的16 个字节送入字模数据口]。问题是如何确定开始字 节位置。由于屏幕z向由左至右依次是第0~ 29,共30个字节,y向为128字节行,显然y向位 置的确定比较麻烦。鉴于此,采取以下方法:
本文采用如下的设计思路:将用到的汉字字 模存于扩展的片外程序存储器;然后对屏幕网格 化,建立每屏菜单的对应数组,将该数组常量也存 于片外程序存储器中,最后用同一处理函数调用 该数组数据,完成不同菜单界面的显示。下面以 AT89C51控制的LCM2401281液显系统为例阐 述如下:
对于LCM2401281点阵图形液晶显示器而 言,该显示器有图形和文本两种显示方式,这两种 显示方式中显示RAM每一个单元所代表的液晶 屏上的像素点阵列的大小不一样卟]。对图形方式 而言,显示RAM中的数据就直接控制了像素点 的亮暗,所以一个显示RAM单元就代表了显示 屏上~个1×8的点阵。本文采用图形方式故对 文本方式不再赘述。在LCM2401281的显示屏 上每行(设为z向)有240点,每列(设为y向)为 128点。~行中从左至右的每8点对应着显存的 一个存储单元(存一字节数据),这8点构成了屏
(西北大学信息科学与技术学院,陕西西安710127.E—mail:chw卜2001@163.com)
摘要:研究了点阵图形液晶模块的字符显示方法,详细阐述了一种对屏幕网格化进行菜单 设计的新方法,构建了基于AT89C5l与LCM240128l实现该方案的硬件平台,并采用C51 语言实现了具体的显示程序。该方案对硬件平台要求较低,在简化软件设计的同时,大大提 高了菜单设计效率,有效缩短了系统开发周期,特别是在多菜单设计的场合效果更为明显,具 有良好的应用价值。