S3C2440-编码

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2010/12/22/6091669.aspx

最近研究LCD的汉字显示,研究到了点阵字模,在这里总结一下。

首先了解一下汉字的编码。我国指定的汉字交换码的国家标准,“信息交换用汉字编码字符集-基本集”,代号为GB2312-80,又称为国际码。该码规定:一个汉字用两个字节表示,每个字节只有7位。国际码是所有编码都应遵循的标准,汉字内码的编码,汉字字库的设计,汉字输入码的转换,输出设备的汉字地址码等,都以此标准为基础。所以汉字内码也是两个字节,低7位有效。为了避免国际码和ASCII同时使用产生二义性,国际码每个字节的最高位置1,所以内码每个字节的最高位也就是第7位置1(从0开始)。区位码是把国际码的全部字符集组成一个94*94的方阵,每一行称为一个区,每列称为一个位。所以共有94个区,94个列。内码的每个字节加20H就是国际码,每个字节加上20H再加128就是区位码,相当于加0XA0。与内码相对应的是外码,用来输入汉字,如拼音码,郑码,五笔输入码等。由于人们追求更佳的汉字输入法,因此外码也就层出不穷。不同外码规则也不同,如果计算机内部存储汉字时,也采用这些五花八门的编码,势必使汉字系统过于复杂。因此,不论用什么输入法输入的汉字,在存入存储器时,都将它们转化成统一的编码,即汉字内码。

在LCD上写汉字时,使用到了汉字的点阵显示,需要提取汉字字模。汉字的点阵字模是从点阵字库文件中提取的,例如常用的16*16点阵HZK16,12*12点阵HZK文件等等。通过汉字的内码可以计算出汉字的区位码。qh = c1 – 32 – 128 = c1 – 0xA0,wh = c2 – 32 – 128 = c2 – 0xA0,根据区号和位号可以得到汉字字模在文件中的位置,location = (94*(qh-1)+ wh-1)*32。再分析一下汉字字模的具体排列方式,字模中每一点使用一个二进制来表示,如果此处是1,说明此处有点,如果是零,说明没有。这样一个16*16的点阵需要16*16/8=32个字节表示。字模的表示顺序为,先从左到右,再从上到下。对其他点阵的字库类似。HZK12的格式稍有不同,如果你将他的字模当12*12位计算的话,根本无法正常显示汉字。因为字库设计者为了字库使用的方便,字模每行的位数均补齐为8的整数倍,于是该字库的实际长度为16*12,字模的大小为24字节,虽然每行都多出了4位,但是每位都是0,并不影响显示效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值