有时沉在别人太多代码里,看得云里雾里, 不如先知道原理,代码一看就懂。
在点阵屏上写英文或汉字(各种字符也归类于特殊汉字),总有2个问题让我们经常揪心
1. 以指定的方式建立字库
2. 取出汉字字库向LCD写屏的方式
如果概念掌握不好,就会把字库的方式取错了,写出来了也不是汉字,是乱码了。
下面讨论:
1. 以指定的方式建立字库
字库分3类
(1) 常用可见ASCII字 0-9, A-Z及a-z,各种符号*#?()等 数字字库0-9 ,这是XY长度为6*8点的
(2) 半角字符 0-9,A-Z 也是我们常用的数字和英文字符显示方式,占半个汉字大小,是8*16点。半角字符,就是指占汉字一一半大小
(3) 汉字字库常用HZK16(6763个汉字) 显然这是16*16的, 标准的全角字符
一般应用不建议采用第(1)项来显示数字与字母,一是字体太小,二是不便于和汉字混排,不好对齐。
我们来看看标准的HZK16的存储方式和读取方式,贴一段代码(我亲自在VC6的console建个新工程,加入这些代码编译运行):
//hzk汉字点阵
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned char incode[3]="一"; // 要读出的汉字,GB编码
unsigned char qh = 0, wh = 0;
unsigned long offset = 0;
char mat[16][2] = {0};
FILE *HZK = 0;
int i,j,k;
//每个汉字,占两个字节, 取其区位号
qh = incode[0] - 0xa0; //获得区码
wh = incode[1] - 0xa0; //获得位码
offset = (94*(qh-1)+(wh-1))*32; //得到偏移位置
if((HZK=fopen("hzk16.bin", &#
在点阵屏上写英文或汉字(各种字符也归类于特殊汉字),总有2个问题让我们经常揪心
1. 以指定的方式建立字库
2. 取出汉字字库向LCD写屏的方式
如果概念掌握不好,就会把字库的方式取错了,写出来了也不是汉字,是乱码了。
下面讨论:
1. 以指定的方式建立字库
字库分3类
(1) 常用可见ASCII字 0-9, A-Z及a-z,各种符号*#?()等 数字字库0-9 ,这是XY长度为6*8点的
(2) 半角字符 0-9,A-Z 也是我们常用的数字和英文字符显示方式,占半个汉字大小,是8*16点。半角字符,就是指占汉字一一半大小
(3) 汉字字库常用HZK16(6763个汉字) 显然这是16*16的, 标准的全角字符
一般应用不建议采用第(1)项来显示数字与字母,一是字体太小,二是不便于和汉字混排,不好对齐。
我们来看看标准的HZK16的存储方式和读取方式,贴一段代码(我亲自在VC6的console建个新工程,加入这些代码编译运行):
//hzk汉字点阵
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned char incode[3]="一"; // 要读出的汉字,GB编码
unsigned char qh = 0, wh = 0;
unsigned long offset = 0;
char mat[16][2] = {0};
FILE *HZK = 0;
int i,j,k;
//每个汉字,占两个字节, 取其区位号
qh = incode[0] - 0xa0; //获得区码
wh = incode[1] - 0xa0; //获得位码
offset = (94*(qh-1)+(wh-1))*32; //得到偏移位置
if((HZK=fopen("hzk16.bin", &#