Keil 汉字字符处理
由于目前在做的项目中需要进行液晶显示界面设计,因此涉及到汉字字符的处理问题,最开始不知道怎么去处理汉字字符,所以为了避免问题,在已有字库的基础上,直接引用汉字字符所在的位置进行编程设计,具体引用方法如下:
1 const uint8_t CHINESE_12[][24]= 2 { 3 { 0x00,0xF8,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0xF8,0x00,0x00, 4 0x00,0x01,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x01,0x00,0x00 5 },//0:中 6 7 { 0x12,0xD2,0xFE,0x51,0x90,0x12,0x24,0x00,0xFF,0x80,0x80,0x00, 8 0x01,0x00,0x0F,0x00,0x00,0x01,0x01,0x01,0x0F,0x00,0x00,0x00 9 },//1:科 10 11 { 0x78,0x00,0xFF,0x08,0x12,0xFA,0x4A,0x4A,0x4A,0xFA,0x02,0x00, 12 0x00,0x00,0x0F,0x00,0x08,0x0B,0x0A,0x0A,0x0A,0x0B,0x08,0x00 13 },//2:恒
例如我要显示“中”字符,我可能会直接采用“中”所在位置进行编程,引用代码如下:
1 LCD_DISPLAY_CHAR(6, 118, X_HZ, CHINESE_12[0]); //下翻
采用此种编程设计,具有很大的问题,一旦界面需要修改,就必须先写出需要显示的汉字,然后找出对应的字库编码,最后把字库编码填写进去;这是个很愚蠢的做法,导致代码维护相当的不方便,例如下面的界面显示:
1 uint16_t MSG[4][5] = //系统信息 2 { 3 {'风', '机', '电', '流'}, 4 {'光', '伏', '电', '流'}, 5 {'负', '载', '电', '流'}, 6 {'电', '池', '电', '流'}, 7 };
这个项目初步估计需要30-40个中文显示界面,如果采用这种设计思路,我得死了很多回了,所以在程序设计一开始就摒弃了这种设计思路,但是怎么做才能更好地去实现字符显示呢,后来参照别人的程序,然后阅读了汉字字符编码的相关知识,所以采用了一种设计思路,具体显示方法如下: