hzk16的介绍以及简单的使用方法

hzk16的介绍以及简单的使用方法

ID:15075783

大小:40.50 KB

页数:15页

时间:2018-08-01

hzk16的介绍以及简单的使用方法_第1页
hzk16的介绍以及简单的使用方法_第2页
hzk16的介绍以及简单的使用方法_第3页
hzk16的介绍以及简单的使用方法_第4页
hzk16的介绍以及简单的使用方法_第5页
资源描述:

《hzk16的介绍以及简单的使用方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、hzk16的介绍以及简单的使用方法hzk16的介绍以及简单的使用方法技术交流2008-11-1415:41阅读287评论0字号:大大中中小小HZK16字库是符合GB2312标准的16×16点阵字库,HZK16的GB2312-80支持的汉字有6763个,符号682个。其中一级汉字有3755个,按声序排列,二级汉字有3008个,按偏旁部首排列。我们在一些应用场合根本用不到这么多汉字字模,所以在应用时就可以只提取部分字体作为己用。HZK16字库里的16×16汉字一共需要256个点来显示,也就是说需要32个字节才能达到显示一个普通汉字的目的。我们知道一

2、个GB2312汉字是由两个字节编码的,范围为A1A1~FEFE。A1-A9为符号区,B0到F7为汉字区。每一个区有94个字符(注意:这只是编码的许可范围,不一定都有字型对应,比如符号区就有很多编码空白区域)。下面以汉字“我”为例,介绍如何在HZK16文件中找到它对应的32个字节的字模数据。前面说到一个汉字占两个字节,这两个中前一个字节为该汉字的区号,后一个字节为该字的位号。其中,每个区记录94个汉字,位号为该字在该区中的位置。所以要找到“我”在hzk16库中的位置就必须得到它的区码和位码。(为了区别使用了区码和区号,其实是一个东西,别被我误导了

3、)区码:区号(汉字的第一个字节)-0xa0(因为汉字编码是从0xa0区开始的,所以文件最前面就是从0xa0区开始,要算出相对区码)位码:位号(汉字的第二个字节)-0xa0这样我们就可以得到汉字在HZK16中的绝对偏移位置:offset=(94*(区码-1)+(位码-1))*32注解:1、区码减1是因为数组是以0为开始而区号位号是以1为开始的2、(94*(区号-1)+位号-1)是一个汉字字模占用的字节数3、最后乘以32是因为汉字库文应从该位置起的32字节信息记录该字的字模信息(前面提到一个汉字要有32个字节显示)有了偏移地址就可以从HZK16中读

4、取汉字编码了,剩下的就是文件操作了,就不说了,要看代码(汉字)就是下面的:“hzk16汉字库的简单读写程序”,是一个最简单的c语言程序。hzk16汉字库的简单读写程序hzk汉字点阵inti,j,k;unsignedcharincode[3]="我";//要读出的汉字unsignedcharqh,wh;unsignedlongoffset;//占两个字节,取其区位号qh=incode[0]-0xa0;//获得区码wh=incode[1]-0xa0;//获得位码offset=(94*(qh-1)+(wh-1))*32;/*得到偏移位置*/FILE*

5、HZK;charmat[32];if((HZK=fopen("hzk16","rb"))==NULL){printf("Can'tOpenhzk16");exit(0);}fseek(HZK,offset,SEEK_SET);fread(mat,32,1,HZK);//显示for(j=0;j<16;j++)for(i=0;i<2;i++)for(k=0;k<8;k++)if(mat[j][i]&(0x80>>k)) /*测试为1的位则显示*/{printf("%s",'#');}else{printf("%s",'-');}fclose(H

6、ZK);fclose(fp);图形LCD模块ACM19264ASB的汉字显示1引言在基于单片机的智能系统中,汉字显示模块是很重要的一个组成部分,它应用广泛、操作容易、调试简便。然而,在单片机上显示汉字也存在几个问题。首先,单片机资源有限,我们不能为了显示汉字占用太多的资源;其次,汉字存储读取比较繁琐,使用不方便;第三,汉字是通过点阵显示出来的,往往与LCD写入方式不一样,这就得进行转换和调整。值得注意的是,基于单片机的汉字显示不能在字符LCD上实现。使用图形LCD有很多优点,不仅能显示汉字,而且可以实现汉字动态移动和上下滚屏,实现汉字与图形的混

7、合显示,同时功耗低。2基于单片机的汉字显示原理2.1汉字字模汉字一般是以点阵式存储的,如16×16,24×24点阵(即汉字的字模),每个汉字由32字节(16点阵)或72字节(24点阵)描述。根据汉字的不同字体,也可分为宋体字模、楷体字模、黑体字模等等。汉字的字模其实是汉字字形的图形化。对于16点阵字模,就是把汉字写在一个16×16的网格内,汉字的笔画能过某网格时该网格就对应1,否则该网格对应0,这样每一网格均对应1或0,把对应1的网格连起来看,就是这个汉字。汉字就是这样通过字节表示点阵存储在字库中的。为了方便查找所需汉字的点阵,每个汉字都与一个

8、双字节的内码一一对应。通过汉字的内码可以计算出它的点阵起始字节。现以16点阵为例说明。先由内码计算出它在汉字库中的区位码,计算公式为:区码=内码第一字

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。