战舰stm32 正点原子 OLED的中文显示

问题描述:
学习完正点原子的OLED显示实验,很多人会发现只能使屏幕显示英文,即使显示中文也只能是2n*n像素,或是乱码。本文将向您介绍如何解决这个问题。
开发工具:
正点原子战舰开发板V3
Keil 5
PCtoLCD2002完美版

解决方法:

1、打开“PCtoLCD2002完美版”软件,打开“选项“”面板,在“字模选项”中选择“阴码”+“逐列式”+“顺向”+“C51格式”。

2、选择合适的字体和大小(这里以24*24的黑体为例),输入文字(这里以“傲歌”为例),单击“生成字模”,并复制两行字模代码。

3、打开oledfont.h的头文件,新建一个中文字库函数chinese_2424。

const unsigned char chinese_2424[3][72]={{0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x70,0x00,0x01,0xC0,0x00,0x0F,0xFF,0xFE,0x3C,0x00,0x00,0x30,0x00,0x0C,0x04,0x98,0x38,0x04,0x9F,0xF0,0x04,0x9F,0x88,0x3F,0xF9,0x08,0x04,0x99,0x18,0x04,0x99,0xF8,0x04,0x99,0x82,0x04,0x10,0x06,0x00,0xF8,0x0E,0x07,0xFE,0x1C,0x3F,0x07,0xF8,0x31,0x00,0xF0,0x01,0x07,0xF8,0x01,0xFE,0x0C,0x01,0x00,0x06,0x01,0x00,0x04,0x00,0x00,0x00},/*"?",0*/{0x00,0x00,0x00,0x10,0x08,0x00,0x13,0xC9,0xFC,0x13,0xC9,0xFC,0x12,0x49,0x30,0x12,0x49,0x30,0x13,0xC9,0xF0,0x13,0xC9,0xF2,0x10,0x08,0x06,0x10,0x08,0x06,0x1F,0xEF,0xFE,0x10,0x08,0x02,0x10,0x08,0x06,0x00,0xC8,0x0E,0x03,0xC0,0x1C,0x1F,0x00,0x70,0x3B,0x3F,0xE0,0x23,0x3F,0x80,0x03,0x00,0xE0,0x03,0x00,0x38,0x03,0xC0,0x1C,0x03,0xC0,0x0E,0x00,0x00,0x04,0x00,0x00,0x00},/*"?",1*/
};

4、打开oled,c文件,修改字符串显示函数 OLED_ShowChar
void OLED_ShowChar(u8 x, u8 y, u8 chr, u8 size, u8 mode)
{u8 temp, t, t1;u8 y0 = y;u8 csize = ( size/8 + ((size%8)?1:0) ) * size;		chr=chr - '0';	 for(t=0;t

5、修改字符串传递函数OLED_ShowString
void OLED_ShowString(u8 x, u8 y, const u8 *p, u8 size)
{	while((*p <= '~') && (*p >= ' ')){  if(x > (128 - size)){x = 0;y += size;}if(y > (64 - size)){y = x = 0;OLED_Clear();}OLED_ShowChar(x, y, *p, size, 1);	 x += size;p++;}  
}	 
6、打开main.c主文件修改主函数如下:
int main(void)
{delay_init();	    	   OLED_Init();			     OLED_ShowString(30, 30, "01", 24);  OLED_Refresh_Gram();		 
}





4、


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部