使用ATM12864H图形显示液晶嵌入汉字库设计的心得

上传人:woxinch****an2018 文档编号:38975725 上传时间:2018-05-10 格式:DOC 页数:6 大小:306.50KB
返回 下载 相关 举报
使用ATM12864H图形显示液晶嵌入汉字库设计的心得_第1页
第1页 / 共6页
使用ATM12864H图形显示液晶嵌入汉字库设计的心得_第2页
第2页 / 共6页
使用ATM12864H图形显示液晶嵌入汉字库设计的心得_第3页
第3页 / 共6页
使用ATM12864H图形显示液晶嵌入汉字库设计的心得_第4页
第4页 / 共6页
使用ATM12864H图形显示液晶嵌入汉字库设计的心得_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《使用ATM12864H图形显示液晶嵌入汉字库设计的心得》由会员分享,可在线阅读,更多相关《使用ATM12864H图形显示液晶嵌入汉字库设计的心得(6页珍藏版)》请在金锄头文库上搜索。

1、使用使用 ATM12864HATM12864H 图形显示液晶嵌入汉字库设计心得图形显示液晶嵌入汉字库设计心得前言:最近在做项目过程中,有用到 ATM12864H 的图形显示液晶,MCU 用的是 atmel 的 AT91S40800,以往做这种液晶的汉字显示,是先用字模转换工具将需用到的汉字先提取出来, 然后再放到 flash 中,再做一个索引,每次需要新的汉字时候就做一个汉字字模数据添加 进去,现在该项目中扩展的 flash 够大,完全可以把整个字库装进去对整个系统毫无影响, 于是我决定做一个带字库的液晶驱动程序,方便后面液晶菜单的编写和修改。花了好几天 功夫,死了 N 多脑细胞,遇到了很多难

2、点,最后总算把相关问题解决,心情不免舒畅,现 在把开发过程心得记录下来,供大家参考。液晶模块介绍:液晶模块介绍:我们使用的液晶 ATM12864H 是一块采用低功耗 CMOS 技术图形显示驱动模块,驱动芯片 选用的是三星的 1 片 KS0108B 和 2 片 KS0107B. DDRAM 内存和液晶显示的点对照如下表。该液晶让人郁闷的是,别人是横写模式,它却是竖写模式,这点为用汉字库带来了很大的 麻烦,后续会讲到。汉字库介绍:汉字库介绍:我们用的是 UCDOS 软件中的文件 HZK16,该文件为 1616 的国标汉字点阵文件,以二 进制格式存储。在文件 HZK16 中,按汉字区位码从小到大依次

3、存有国标区位码表中的所有 汉字,每个汉字占用 32 个字节,每个区为 94 个汉字 在 PC 机的文本文件中,汉字是以机内码的形式存储的,每个汉字占用两个字节:第一 个字节为区码,为了与 ASCII 码区别,范围从十六进制的 0A1H 开始(小于 80H 的为 ASCII 码字符) ,对应区位码中区码的第一区;第二个字节为位码,范围也是从 0A1H 开始,对应 某区中的第一个位码。这样,将汉字机内码减去 0A0A0H 就得该汉字的区位码。 例如汉字“房”的机内码为十六进制的“B7BF” ,其中“B7”表示区码, “BF”表示位码。 所以“房”的区位码为 0B7BFH-0A0A0H=171FH。

4、将区码和位码分别转换为十进制得汉字 “房”的区位码为“2331” ,即“房”的点阵位于第 23 区的第 31 个字的位置,相当于在文 件 HZK16 中的位置为第 32(23-1) 94+(31-1)=67136B 以后的 32 个字节为“房”的显 示点阵。房子显示的点阵字模如下图所示。查出的汉字字库数据为如下 32 个字节数据:0x02,0x00,0x01,0x08,0x3F,0xFC,0x20,0x08, 0x3F,0xF8,0x21,0x00,0x20,0x84,0x3F,0xFE, 0x22,0x00,0x22,0x10,0x23,0xF8,0x22,0x10, 0x44,0x10,0

5、x44,0x10,0x88,0xA0,0x10,0x40, 存放汉字库和取汉字字模数据:存放汉字库和取汉字字模数据:有了汉字库后,我们必须把它存到 flash 中,我们把它存在 0x01100000 开始的地址中, hzk16 文件总供有 262K,我们用编程工具将 hzk16 二进制文件下载到 flash 中,当然你也 可以另外定义地址存放,但是最好是靠后面放,因为我们前面需要放程序,防止程序太长 把字库数据覆盖掉。 取汉字数据程序如下:#define HZK_JDZ 0x01100000 Void getdata(char *str, uchar *c) int i,j;long addr

6、;uchar *p;i=*str-0xa0;j=*(str+1)-0xa0;addr = 32*(94*(i-1)+j-1);p=(uchar *)(HZK_JDZ + addr); for(i=0;i (7-i) (7-i) (7-i),因为取的是第(7-i)位,所以向右移(7-i)位就到第 0 位了。第 4 个过程,将取出的位移到需要放置的位,因为需要放置的位是第 j 位,所以需要向左移 j 个位。假设前面的结果是 b3,则语句为 b3(7-i-j)或者 b2 (15-i) (23-i) (31-i) (j-24); 整个数据转换工作就完成了,经过转换的数据可方便的写入 LCD 的 DDRAM 中。写到这里终于写完了,这是我做项目过程中的一点心得,也许这个对你做的项目有帮 助又或许没帮助,但我想关键的是我们做一件事情的思路过程,走了这样一个过程,累积 了些许经验,那就是一种收获。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号