1. 引言
目前常用的小型显示器有LCD和LED ,LED显示器只能显示数字和有限个英文字符,不能显示汉字,显示内容不直观,操作人员只能根据约定格式了解显示内容。而LCD则可显示各种汉字和图形,能实现中文菜单显示,便于操作,并且功耗低。因此LCD得到广泛应用。用LCD显示汉字时www.cechina.cn,一般采用自制汉字模和汉字编码,当显示内容较多时,字模库容量很大,汉字的编码亦很难记住,给编程造成困难,当显示内容改变时,字模库也要作相应变化,工作量大。这里介绍一种直接利用CCDOS中的汉字库 (HZK16)显示汉字多级菜单的方法。将HZK16和菜单内容固化在EPROM中,从而方便地实现了多级汉字菜单的显示,充分发挥了LCD的优点。
2. MGLS-240128显示模块简介及接口电路
本文使用的显示模块是MGLS-240128控制工程网版权所有,它的点阵数是240×128,如显示16×16点阵的汉字,可显示8行,每行15个字。MGLS-240128模块内藏
有时在菜单显示中,显示的页数很多。为了便于在EPROM中定位,在计算机中编辑菜单时,应在每页菜单前加pxx:其中p表示一页开始,xx为该页序号,冒号表示以下为该页的内容。回车可换行到下一行并进入中文编辑状态输入,需要显示的内容。每页分8行,每行15个汉字或字符(包括空格)。在编辑的文件中,每行结尾有回车、换行符。这样CONTROL ENGINEERING China版权所有,每一页菜单中,pxx以 ASCII码形式存放,每个汉字以机器内码形式存放,每个机器内码占两字节。每行结束还有回车换行符,共有9行。这样每页长度为4+8×15×2×+9× 2=262字节。若一共有40页,则存储器共需:40×262=10480字节。图2给出一菜单示例。国标GB2312-80把汉字分为94区,每区94 个字符。其中1~15区是图形符号和字母,16~55区是一级汉字,共3755个。对于一般显示,前55区就足够了。在HZK16中,每一字符占32字节,共需32×55×94=165440字节。
为了存储汉字字模和显示内容,约需180k字节存储器,可选用一片27020。其硬件原理图如图3所示,为了简便起见,只画出光标移动键、回车键和返回键,供操作时参考。图中的ROM分为两部分,一部分是2764,内装用户程序,一部分是27020,内装字库和菜单,因为程序必须从0000H开始执行,所以2764的地址空间为0000H~1FFFHwww.cechina.cn,27020的地址空间为8000H~FFFFH。
3. 利用CCDOS中的汉字库显示汉字
在计算机汉字系统中,每个汉字内码为二字节编码,字节的最高位置1,而ASCII码为7位编码,最高位为0。因此,可根据字符值大于还是小于128来判断它是汉字还是ASCII码。汉字地址码是指在一个汉字库中,某一汉字字形信息存放在库中的逻辑地址的编码。地址码=[(内码第一字节-AIH)×94 +(内码第二字节-AIH)]×32。
27020被分为8区,每区占32k字节。汉字字模存于0~6区,而菜单存在第7区,通过P1口实现选区。因此,寻找一个汉字的字模信息首先要确定此汉字所处的区数;再确定在此区中的地址(字模地址)。区数号=地址码/32768的商。字模地址=(地址码/32768的余数)×32+8000H。如汉字“唐”的机器内码是CCC6H,地址码=[(CCH-AIH)×94+(C6H-AIH)]×32=4079×32。区数号=4079× 32/32768的商=4,字模地址=(4079×32/32768的余数)×32+8000=83E0H。
由于在图形方式下,显示一个汉字的介绍文章很多,而且方法也大同小异,因此不再详细介绍一个汉字的显示过程,这里只给出一个流程。如图4所示。
4. 一页菜单的显示方法
显示16×16点阵的汉字时,显示屏被划为8×15个方格。每页菜单也是8×15个字符,排列格式一样,因此每个字符可被放在一个方格内。若每页菜单中的字符坐标记为x,y,表示字符位于显示屏的第x行,第y列方格内。坐标原点在左上角。一页菜单的显示流程图如图5所示。
5. 多级菜单的显示
显示菜单时,需把光标放在菜单和第一选项序号处,当要选其他项时控制工程网版权所有,按动光标移动键,使光