摘要:本文以AT89C51单片机控制使用比较普遍的YM12864液晶显示器为基础,介绍了一种采用分页原理实现多级中文菜单操作的方法。给出了YM12864主要技术参数、显示特性和核心的程序。设计的中文菜单具有一定的通用性,只需更改其中的菜单项即可将此设计应用到家电、仪器仪表等设备上,为操作者提供友好方便的中文操作界面。
一、引言
目前小型的显示器主要有LCD和LED,LED显示器只能显示数字和有限个英文字符,不能显示汉字,显示内容不直观,操作人员只能根据约定格式了解显示内容。而LCD则可显示各种汉字和图形,尤其能实现中文菜单显示,为操作者提供方便友好的操作界面,并且功耗低,因此LCD得到广泛应用。而现在市面上带中文字库的LCD比比皆是,价格适中,且大部分具有与MCU统一的标准接口,为使用LCD实现中文菜单操作提供了很大的方便。相信更多的电子产品在提升性能的同时,设计更加人性化的中文菜单交互界面,将会使产品具有更广阔的前景。
二、YM12864液晶显示模块简介
YM12864汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。
主要技术参数和显示特性:
电源:VDD3.3V~+5V(内置升压电路,无需负压)显示内容:128列×64行与MCU接口:8位或4位并行/3位串行多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等。
其引脚功能为通用20脚LCD接口,用户指令集也为通用128*64LCD用户指令集,相关资料很容易获取。因其内置中文字库,省去了自己造字库的工作量,而只需写入相应的汉字和字符内码即可显示所需要的汉字和字符,这在许多程序开发软件中很容易实现,如:WAVE、KEIL等。所以使用带中文字库的LCD来实现中文菜单操会更加简便。
三、原理分析
通常的人机交互界面有两种方式,选择菜单和输入参数,为了便于分析,本文使用三级树状菜单结构。因YM12864满屏能显示四行、每行八个汉字,故将四个选择或参数输入菜单项编为一页,不足一页的补空格。补空格的目的是为了归一化操作,可大大简化程序。每一个菜单、参数输入、空格都为固定的八个汉字空间。当顶级菜单1、顶级菜单2、顶级参数输入3、顶级4构成一级菜单,四个菜单项为一页同时显示在液晶屏幕上;一级菜单1-1、一级菜单1-2、一级参数输入1-3、一级空格1-4构成了顶级菜单1下的二级菜单,也组成一页同时显示在液晶屏幕上,三级菜单也是如此。使用4*4键盘进行操作,其中“0-9”为数字键,“Esc”为删除/返回键,“Down”为向下选择健,“Enter”为确定健,剩余三个按键预留备用,为了不与其他程序的通用寄存器混淆,而使用89C51的第二组通用寄存器R0和R2来记录菜单的页码和行码(光标所在的菜单行)。
现通过按键的功能来分析多级中文菜单的原理。当按下“Down”键后,光标移动一行(光标所在的行表示此行显示的菜单处于激活状态)行码加1,即(R2)=(R2)+1;当光标已在本级菜单的最后一项,此时按下“Down”键,光标回到本级菜单的首项,行码为0,即(R2)=0.例如:光标处于二级菜单1-1-1,按下“Down”键,则光标移动到二级菜单1-1-2.
按下“Enter”,分两种情况处理,如为选择菜单,则根据页码和行码的值:R0*4+R2调用下一级子菜单显示,同时将子菜单的页码赋值给R0,得到子菜单的页码,并且使行码R2=0,表示处于此级菜单的首项。例如:光标处于顶级菜单1,按下“Enter”键,则液晶显示屏上显示一级菜单1-1、一级菜单1-2、一级参数输入1-3、一级空格1-4.如为参数输入菜单,则进入相应的参数输入对话框。例如:光标处于参数输入1-3,按下“Enter”健,则液晶显示屏上显示对应的要求输入参数的对话框(一般为数字,为了简化程序,可采用统一的参数输入对话框),此时输入符合要求的参数,再按下“Enter”键,菜单将返回到上一级菜单,同时将输入到YM12864液晶显示器的数据读出,送到相应的单元存储,以备使用。
“Esc”键起到返回上一级菜单和删除参数输入时的错误输入双重功能,程序中只需使用一标志位来区分选择菜单和参数输入菜单即可,同时修改页码和行码值,即R0和R1的值。例如:液晶屏上显示二级菜单1-1-1、二级菜单1-1-2、二级菜单1-1-3、二级空格1-1-4,此时按下“Esc”键,则返回到一级,屏幕上显示一级菜单1-1、一级菜单1-2、一级参数输入1-3、一级空格1-4.
四、硬件设计
使用89C51的P1口作为液晶显示器的数据口,使用P0口作为键盘扫描端口,当然这些端口也可以使用扩展口,只需在程序的开头修改端口的值便可。电路图如图1所示。
五、软件设计
重点在于软件的设计,而程序的关键又在于使用了分页的操作方式。以下为菜单数据,按页的方式存放,不足一页的补空格。
由于篇幅有限,不能将所有的程序都写出,只是将程序的框架列出,其它程序如:按键扫描子程序、YM12864显示子程序可参照其它资料。实际应用时需要根据具体情况加以补充。
六、结语
本方法设计的多级中文菜单易于实现、可靠性高,并且具有一定的通用性和使用价值,实际应用时根据产品的操作要求修改上述的菜单名称即可。当某级菜单的项目数有多页时,为方便操作,可增加翻页按键;所有菜单的页数最大为256页,共1024个菜单项,对于一般的系统完全够用。采用此方法设计的全中文菜单操作的信号发生器曾获得2007年全国大学生电子设计大赛三等奖(江西赛区)。(作者:游雨云,程智君)