⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 液晶显示多级汉字菜单的方法.htm

📁 单片机系统中的汉字显示[拼音输入法)包括源程序
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>液晶显示多级汉字菜单的方法</title>
</head>

<body>

<p align="center"><b><span style="background-color: #FFFFFF"><font lang="ZH-CN" face="宋体" size="5">液晶显示多级汉字菜单的方法</font></span></b></p>
<p align="center"><font lang="ZH-CN" size="3" face="宋体"><b>湖南大学电气与信息工程系  毛海岑 李孝文 何晓明<br>
</b></font></p>
<p><span class="main1"><font size="3" face="宋体"><b><span class="main1" style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">&nbsp;&nbsp;&nbsp; 
摘&nbsp; 要:</span></b></font></span><font size="3" face="宋体"><font lang="ZH-CN">以8031单片机控制MGLS-240128液晶显示器为例,介绍利用CCDOS中的汉字库(HZK16)实现多级汉字菜单显示的方法。当显示内容改变时,不需要更改程序,只要更改菜单参数即可显示。</font><span class="main1" style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><br>
&nbsp;&nbsp;&nbsp; <b>关键词:</b></span><font lang="ZH-CN">液晶显示器;MGLS-240128;汉字库;多级菜单</font></font></p>
<p><b><font lang="ZH-CN" face="宋体" size="4">1. 引言</font></b><font size="3" face="宋体"><font lang="ZH-CN"><br>
  目前常用的小型显示器有LCD和LED ,LED显示器只能显示数字和有限个英文字符,不能显示汉字,显示内容不直观,操作人员只能根据约定格式了解显示内容。而LCD则可显示各种汉字和图形,能实现中文菜单显示,便于操作,并且功耗低。因此LCD得到广泛应用。用LCD显示汉字时,一般采用自制汉字模和汉字编码,当显示内容较多时, 
字模库容量很大,汉字的编码亦很难记住,给编程造成困难,当显示内容改变时,字模库也要作相应变化,工作量大。这里介绍一种直接利用CCDOS中的汉字库(HZK16)显示汉字多级菜单的方法。将HZK16和菜单内容固化在EPROM中,从而方便地实现了多级汉字菜单的显示,充分发挥了LCD的优点。</font></font><b><font lang="ZH-CN" size="3" face="宋体"><br>
</font><font lang="ZH-CN" face="宋体" size="4">2. MGLS-240128显示模块简介及接口电路</font></b><font lang="ZH-CN" face="宋体" size="4"><br>
</font><font lang="ZH-CN" size="3" face="宋体">  本文使用的显示模块是MGLS-240128,它的点阵数是240×128,如显示16×16点阵的汉字,可显示8行,每行15个字。MGLS-240128模块内藏HD61830控制器,模块的电原理框图如图1所示。</font></p>
<p align="center"><font size="3" face="宋体"><b><font lang="ZH-CN"><img border="0" height="140" src="990912t1.jpg" width="240"></font></b></font></p>
<p><font lang="ZH-CN" size="3" face="宋体">  有时在菜单显示中,显示的页数很多。为了便于在EPROM中定位,在计算机中编辑菜单时,应在每页菜单前加pxx:其中p表示一页开始,xx为该页序号,冒号表示以下为该页的内容。回车可换行到下一行并进入中文编辑状态输入,需要显示的内容。每页分8行,每行15个汉字或字符(包括空格)。在编辑的文件中,每行结尾有回车、换行符。这样,每一页菜单中,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字节。<br>
  为了存储汉字字模和显示内容,约需180k字节存储器,可选用一片27020。其硬件原理图如图3所示,为了简便起见,只画出光标移动键、回车键和返回键,供操作时参考。图中的ROM分为两部分,一部分是2764,内装用户程序,一部分是27020,内装字库和菜单,因为程序必须从0000H开始执行,所以2764的地址空间为0000H~1FFFH,27020的地址空间为8000H~FFFFH。</font></p>
<p align="center"><font size="3" face="宋体"><img border="0" height="144" src="990912t2.jpg" width="156"></font></p>
<p align="center"><font size="3" face="宋体"><img border="0" height="265" src="990912t3.jpg" width="380"></font></p>
<p align="justify"><b><font lang="ZH-CN" face="宋体" size="4">3. 利用CCDOS中的汉字库显示汉字</font></b><font lang="ZH-CN" size="3" face="宋体"><br>
  在计算机汉字系统中,每个汉字内码为二字节编码,字节的最高位置1,而ASCII码为7位编码,最高位为0。因此,可根据字符值大于还是小于128来判断它是汉字还是ASCII码。汉字地址码是指在一个汉字库中,某一汉字字形信息存放在库中的逻辑地址的编码。地址码=[(内码第一字节-AIH)×94+(内码第二字节-AIH)]×32。<br>
  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。<br>
  由于在图形方式下,显示一个汉字的介绍文章很多,而且方法也大同小异,因此不再详细介绍一个汉字的显示过程,这里只给出一个流程。如图4所示。</font></p>
<p align="center"><font lang="ZH-CN" size="3" face="宋体"><img border="0" height="322" src="990912t4.jpg" width="316"></font></p>
<p align="justify"><b><font lang="ZH-CN" face="宋体" size="4">4. 
一页菜单的显示方法</font></b><font lang="ZH-CN" size="3" face="宋体"><br>
  显示16×16点阵的汉字时,显示屏被划为8×15个方格。每页菜单也是8×15个字符,排列格式一样,因此每个字符可被放在一个方格内。若每页菜单中的字符坐标记为x,y,表示字符位于显示屏的第x行,第y列方格内。坐标原点在左上角。一页菜单的显示流程图如图5所示。<br>
</font><b><font lang="ZH-CN" face="宋体" size="4">5. 多级菜单的显示</font></b><font lang="ZH-CN" face="宋体" size="4"><br>
</font><font lang="ZH-CN" size="3" face="宋体">  显示菜单时,需把光标放在菜单和第一选项序号处,当要选其他项时,按动光标移动键,使光标放到待选项序号处,再按回车键,便进入下一级菜单。当要返回上一级菜单时,按返回键即可。为了达到以上的要求,首先要为每页菜单建立一个表格(菜单表格),表格的内容(即菜单参数)如下:第一字节放此页菜单待选项数。后面依次放各选项序号在屏幕中的x,y坐标和选项所对应菜单在EPROM中的首地址。这样,每个选项占四字节,最后两字节放在上级菜单在EPROM中的首地址。为了便于寻找,应使每个表格长度一样,至少应等于选项数最多的那页菜单所需的表格长度。如最多选项有8个,则格长度=1+8×4+2=35。如果某页菜单无选项,除了表格中最后两字节填上级菜单的地址外,其余地方填0。把所有的表格按页号顺序放在一起,形成一个总表格。把其首地址称为表格基地址。在程序中给每级菜单都设一个选项计数器。初值为0,每按一下光标移动键,选项计数器加1。光标处汉字反白(黑底白字),一般汉字为白底黑字。实现过程如下:由需反白字符的x,y值算出此字符字模在显示缓冲区(DDRAM)中的位置,从DDRAM中读出字模并取反白后送回原处。<br>
  光标显示子程序如图6所示,键处理子程序如图7所示。</font></p>
<p align="center"><b><font lang="ZH-CN" face="宋体" size="4"><img border="0" height="297" src="990912t6.jpg" width="413"></font></b></p>
<p align="justify"><b><font lang="ZH-CN" face="宋体" size="4">6. 结束语</font></b><font lang="ZH-CN" size="3" face="宋体"><br>
  在实际工作中运用此技术显示多级菜单时,由于编程简单方便,避免了自制汉字库的繁杂工作。并且可以把整个程序作为一个模块,只需更改菜单表格的内容(即菜单参数),就可显示各种内容的菜单。为了操作更方便,可加光标上移键。当末级菜单有多页时,可加翻页键。</font></p>

</body>

</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -