江科大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},
     	  
 };
相关推荐
wuyk55510 小时前
4.树:一对多的层次数据结构
开发语言·数据结构·stm32·单片机
天空'之城12 小时前
单片机基础核心知识点汇总(五)
单片机·嵌入式硬件
恒锐丰-罗生17 小时前
SS8103 芯片解析:45V 同步整流降压半桥恒流驱动控制器 大功率光源国产优选 告别低灰闪烁!
驱动开发·嵌入式硬件·硬件工程
FakeOccupational18 小时前
【电路笔记 STM32】stm32f103 实现HAL_UART_Transmit_DMA + 普通模式/连续模式的 UART DMA 收发
笔记·stm32·嵌入式硬件
wuyk55518 小时前
第 6 章 FOC 完整系统整合:从算法到真机跑起来
c语言·开发语言·stm32·单片机·嵌入式硬件
恒锐丰科技韩生19 小时前
率能 SS6810H|10‑32V 双通道 H 桥步进电机驱动 ETSSOP20 打印机安防舞台灯光专用
嵌入式硬件·硬件工程
1560820721919 小时前
直流耦合采集卡前端电路调试
嵌入式硬件·fpga开发
恒锐丰科技林技术员20 小时前
SS6841T 双通道 H 桥驱动芯片:大电流集成电机驱动优选方案
单片机·嵌入式硬件
打工陈20 小时前
器件知识——(1)磁珠与电感
嵌入式硬件·智能硬件·设计规范
LCG元20 小时前
STM32 HAL 库串口 DMA + 空闲中断接收不定长数据:从原理到排查“上电误进 IDLE“
stm32·单片机·嵌入式硬件