江科大stm32 | OLED显示汉字
1.引言
项目源码、取模软件在以下地址:
https://gitee.com/hee-hee-not-bald/stm32_learning.git
硬件介绍
4针口的OLED

取模软件
下面这个.exe
打开后

显示效果

2.取模软件使用
设置
(1)字宽 20 ;字高 16;取消勾选“等比缩放”

(2)内部设置
点击这个齿轮

配置以下

生成字模
(1)在红色框中输入想要显示的中文,点击“生成字模”
(2)复制绿色框中显示对应中文的数组

具体为以下:
【这是多行多组的写法,此写法keil运行会乱码】
{0x00,0x40,0x44,0x44,0xC4,0xE4,0x64,0x5E,0x54,0xE4,0x54,0x54,0x5E,0x56,0xD4,0xC4},
{0x44,0x44,0x40,0x00,0x00,0x00,0x40,0x40,0x5F,0x5A,0x5B,0x5B,0x5B,0x7F,0x5B,0x5B},
{0x5B,0x5B,0x5A,0x5F,0x40,0x40,0x00,0x00},/*"董",0*/
{0x00,0x00,0x84,0x84,0x84,0xFC,0xCC,0xCC,0xCC,0xCC,0xFC,0x84,0x84,0x84,0x7C,0x84},
{0x84,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x1C,0x12,0x12,0x12,0x12,0x1E,0x00},
{0x40,0x40,0x7F,0x00,0x00,0x00,0x00,0x00},/*"哥",1*/
{0x00,0x00,0x40,0x40,0x50,0x48,0x48,0x48,0x48,0xFE,0x8A,0x48,0x48,0x48,0x48,0x48},
{0x40,0x40,0x00,0x00,0x00,0x80,0x40,0x20,0x1C,0x0F,0x10,0x10,0x20,0x3F,0x44,0x44},
{0x44,0x44,0x44,0x42,0x40,0x40,0x00,0x00},/*"走",2*/
{0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x80,0x40,0xB0,0x9C,0x96,0x90,0x90,0x90,0x90},
{0x10,0x10,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x0F,0x00,0x00,0x70,0x48,0x44},
{0x42,0x41,0x41,0x40,0x40,0x78,0x00,0x00},/*"吃",3*/
{0x00,0x80,0x60,0x1C,0x96,0x10,0x30,0x10,0x10,0xFC,0x24,0xC4,0x24,0x24,0x24,0xA4},
{0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x10,0x48,0x24,0x18,0x47,0x40,0x21},
{0x16,0x08,0x14,0x23,0x60,0x40,0x40,0x00},/*"饭",4*/
(3)易错:将刚刚复制 多行多组的数组 传给ai,帮我们转成 单行连续
/* "董",0 */{0x00,0x40,0x44,0x44,0xC4,0xE4,0x64,0x5E,0x54,0xE4,0x54,0x54,0x5E,0x56,0xD4,0xC4,0x44,0x44,0x40,0x00,0x00,0x00,0x40,0x40,0x5F,0x5A,0x5B,0x5B,0x5B,0x7F,0x5B,0x5B,0x5B,0x5B,0x5A,0x5F,0x40,0x40,0x00,0x00},/* "哥",1 */{0x00,0x00,0x84,0x84,0x84,0xFC,0xCC,0xCC,0xCC,0xCC,0xFC,0x84,0x84,0x84,0x7C,0x84,0x84,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x1C,0x12,0x12,0x12,0x12,0x1E,0x00,0x40,0x40,0x7F,0x00,0x00,0x00,0x00,0x00},/* "走",2 */{0x00,0x00,0x40,0x40,0x50,0x48,0x48,0x48,0x48,0xFE,0x8A,0x48,0x48,0x48,0x48,0x48,0x40,0x40,0x00,0x00,0x00,0x80,0x40,0x20,0x1C,0x0F,0x10,0x10,0x20,0x3F,0x44,0x44,0x44,0x44,0x44,0x42,0x40,0x40,0x00,0x00},/* "吃",3 */{0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x80,0x40,0xB0,0x9C,0x96,0x90,0x90,0x90,0x90,0x10,0x10,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x0F,0x00,0x00,0x70,0x48,0x44,0x42,0x41,0x41,0x40,0x40,0x78,0x00,0x00},/* "饭",4 */{0x00,0x80,0x60,0x1C,0x96,0x10,0x30,0x10,0x10,0xFC,0x24,0xC4,0x24,0x24,0x24,0xA4,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x10,0x48,0x24,0x18,0x47,0x40,0x21,0x16,0x08,0x14,0x23,0x60,0x40,0x40,0x00},
3.代码
在 OLED.c 文件中添加显示中文函数 OLED_ShowCN
(注意:此时的字宽是20)
//显示中文
void OLED_ShowCN(uint8_t Line, uint8_t Column, uint8_t Num)
{ uint8_t i;uint8_t wide=20;//字宽OLED_SetCursor((Line-1)*2, (Column-1)*wide); //参数1:把光标设置在第几页. 参数2:把光标设置在第几列for (i = 0; i < wide; i++){OLED_WriteData(OLED_F10x16[Num][i]); //显示上半部分内容}OLED_SetCursor((Line-1)*2+1,(Column-1)*wide); for (i = 0; i < wide; i++){OLED_WriteData(OLED_F10x16[Num][i+wide]); //显示下半部分内容}}
在 OLED_Font.h 文件中添加显示对应中文的字模数组
注意[40]
这里我的设置是字宽 20 ;字高 16,所以是40
若字宽 16 ;字高 16,应对应是32
//对应中文的数组
const uint8_t OLED_F10x16[][40]=
{ /* "董",0 */{0x00,0x40,0x44,0x44,0xC4,0xE4,0x64,0x5E,0x54,0xE4,0x54,0x54,0x5E,0x56,0xD4,0xC4,0x44,0x44,0x40,0x00,0x00,0x00,0x40,0x40,0x5F,0x5A,0x5B,0x5B,0x5B,0x7F,0x5B,0x5B,0x5B,0x5B,0x5A,0x5F,0x40,0x40,0x00,0x00},/* "哥",1 */{0x00,0x00,0x84,0x84,0x84,0xFC,0xCC,0xCC,0xCC,0xCC,0xFC,0x84,0x84,0x84,0x7C,0x84,0x84,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x1C,0x12,0x12,0x12,0x12,0x1E,0x00,0x40,0x40,0x7F,0x00,0x00,0x00,0x00,0x00},/* "走",2 */{0x00,0x00,0x40,0x40,0x50,0x48,0x48,0x48,0x48,0xFE,0x8A,0x48,0x48,0x48,0x48,0x48,0x40,0x40,0x00,0x00,0x00,0x80,0x40,0x20,0x1C,0x0F,0x10,0x10,0x20,0x3F,0x44,0x44,0x44,0x44,0x44,0x42,0x40,0x40,0x00,0x00},/* "吃",3 */{0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x80,0x40,0xB0,0x9C,0x96,0x90,0x90,0x90,0x90,0x10,0x10,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x0F,0x00,0x00,0x70,0x48,0x44,0x42,0x41,0x41,0x40,0x40,0x78,0x00,0x00},/* "饭",4 */{0x00,0x80,0x60,0x1C,0x96,0x10,0x30,0x10,0x10,0xFC,0x24,0xC4,0x24,0x24,0x24,0xA4,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x10,0x48,0x24,0x18,0x47,0x40,0x21,0x16,0x08,0x14,0x23,0x60,0x40,0x40,0x00},};
