汉字的动态编码与显示方案
[09-13 16:44:51] 来源:http://www.88dzw.com 信息显示与光电技术 阅读:8774次
文章摘要:动态编码高字节=页偏移量+Num/8动态编码低字节=偏移量+(Num%8)×32 (1)偏移量一般可设为0A0H。当单片机显示某个汉字时,只需将其动态编码的高字节送DPH,低字节减0A0H后送DPL,即可得到对应字模的地址指针。(3)提取字模、建立动态字库汉字机内码与点阵字库的详细关系可参考有关资料,它们存在如下联系:字模首地址=((机内码高字节-1)×94+(机内码低字节-1))×N (2)注:N为一个汉字点阵字模的字节数。按照编码字典内容,根据字模首地址,依次取出汉字字模,顺序写入一个二进制文件,即建成动态字库(其它方法略),用烧录器写入EPROM
汉字的动态编码与显示方案,标签:显示及光电,光电显示技术,http://www.88dzw.com动态编码高字节=页偏移量+Num/8
动态编码低字节=偏移量+(Num%8)×32 (1)
偏移量一般可设为0A0H。当单片机显示某个汉字时,只需将其动态编码的高字节送DPH,低字节减0A0H后送DPL,即可得到对应字模的地址指针。
(3)提取字模、建立动态字库
汉字机内码与点阵字库的详细关系可参考有关资料,它们存在如下联系:
字模首地址=((机内码高字节-1)×94+(机内码低字节-1))×N (2)
注:N为一个汉字点阵字模的字节数。
按照编码字典内容,根据字模首地址,依次取出汉字字模,顺序写入一个二进制文件,即建成动态字库(其它方法略),用烧录器写入EPROM,就可以使用了。
(4)编码改写
机内码是PC机识别处理汉字用的,单片机只能处理我们建立起来的动态编码,还得把程序中汉字的仅机码根据编码字典改成对应的动态编码才行。由于在编写源程序的文本编辑器中看到的是经过系统处理过的字节,看不到汉字的机内码,也无法对其进行改写。根据"汉字识别"一节所述,不经过文本编辑器,直接将动态编码(十六进制数)定改磁盘文件对应位置即可,但是处理过后的汉字在文本编辑器里会显示出乱码。
(5)汉字显示
在明白了动态编码与动态字库中字模的关系后,可以完成按照PC机下汉字显示原理进行单片机下的程序设计,编写前面的函数printhz()或子程序的DISPLAY,可参考相关资料[4]。
4 MCS51汉字显示例程
根据上述汉字动态编码方法,我们利用Borland C++编写了PC机预处理程序,将ASM51或C51源程序用PC机预处理后,建立了动态字库和改写了机内码,并且用ASM51写了一个针对MCS51进行优化的子程序DIS_CHAR。它显示一个西文或中文字符,实现过程如图2所示。
西文字符码的显示与流字显示基本相同,将西文字库(仅数字和字符部分)装入程序存储器中,根据ASCII码的值计算出字模首地址,将字符字模依次读出,再送显示即可。
此方案不但可用于单片机系统中,还可应用于任何无中文系统支持的嵌入式系统中。根据这个思路还可设计出不同字体、点阵混合的字库,支持包含2万多个字符的新国标编码,甚至矢量字体在单片机系统中的应用也成为可能。由于技术水平有限,此方案还存在一些不足之处,如改写编码后源程序中汉字显示为乱码,不知道改码处理是否正确,操作比较繁琐。如果能采用插件技术实现此方案,编辑器中能正常显示汉字,而输出已经是改码后的程序文件,则能很好地解决上述不足。在这里,我们抛码引玉,希望有兴趣的朋友一起合作,实现单片机中文显示的广义开发平台。
动态编码预处理的C语言源程序(在BC++3.1下调试通过)见网站补充版(http://www.88dzw.com)
- 上一篇:构成便携式快速光脉冲发生器的电路
《汉字的动态编码与显示方案》相关文章
- › 汉字的动态编码与显示方案
- 在百度中搜索相关文章:汉字的动态编码与显示方案
- 在谷歌中搜索相关文章:汉字的动态编码与显示方案
- 在soso中搜索相关文章:汉字的动态编码与显示方案
- 在搜狗中搜索相关文章:汉字的动态编码与显示方案