12864字库的使用

带字库的12864还是经常用到,下面是我的一些小小的收获和记录。

1,我现在使用的12864的显示坐标和字库的定义如下:

四行汉字的初始坐标依次是:80H,90H,88H,98H

字符和汉字都是按照一定的编码规则进行编码存储的,字符编码为02H-7FH,共126个字符。

这126个字符于编码一一对应,即笑脸符号对应02H,心形对应03H,以此类推。(00H,01H为乱码)

汉字编码是按照ST7902GB来编制,一个汉字对应2个字节。

12864字库的使用_第1张图片


12864字库的使用_第2张图片

2,定义要显示的汉字

uchar code dis1[] = {"中华人民共和国"};

上面7个汉字在Keil中调试查看其存储形式如下

        12864字库的使用_第3张图片

如图7个汉字对应14个字节,所以上面数组dis1[ ]的下标最大为13,而不是6.

所以要显示汉字“中”,

可以这么写

lcd_pos(0,0);//设置显示位置第一行第一列

lcd_wdat(dis1[0]);

lcd_wdat(dis1[1]);

或者直接写“中”的编码0xD6D0

lcd_wdat(0xD6);

lcd_wdat(0xD0);

上面两种写法是等价的,但只写lcd_wdat(dis1[0]);即只取数组的第一个数组送显是不对的,显示的不是所需要的。

   要是显示整个数组的汉字,可以这样

lcd_pos(1,0);             //设置显示位置为第二行的第1个字
i = 0;
    while(dis1[i] != '\0')
     {
       lcd_wdat(dis1[i]);      //显示字符
       i++;
      }

注意:也许有人要问,字符和汉字都进行编码,会不会混了。不会的,仔细观察,字符的编码只是02-7F,而汉字为A*B*H,汉字的高低字节都是以A或B开头的,他们混不了的。

你可能感兴趣的:(12864字库的使用)