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

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

解决方法:

1、打开“PCtoLCD2002完美版”软件,打开“选项“”面板,在“字模选项”中选择“阴码”+“逐列式”+“顺向”+“C51格式”。
战舰stm32 正点原子 OLED的中文显示_第1张图片
2、选择合适的字体和大小(这里以24*24的黑体为例),输入文字(这里以“傲歌”为例),单击“生成字模”,并复制两行字模代码。
战舰stm32 正点原子 OLED的中文显示_第2张图片

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、

你可能感兴趣的:(战舰stm32 正点原子 OLED的中文显示)