江科大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},
     	  
 };
相关推荐
Jack153027682794 小时前
误接电容正负极的风险与注意事项
单片机·嵌入式硬件·逆变器·摇头机·电动工具·dc/dc变换器
国科安芯6 小时前
国产MCU芯片在船舶压力传感器中的应用探索与实践
网络·单片机·嵌入式硬件·fpga开发·车载系统
学工科的皮皮志^_^6 小时前
PCIE学习
经验分享·嵌入式硬件·学习·fpga开发·pcie
La Pulga7 小时前
【STM32】WDG看门狗
c语言·stm32·单片机·嵌入式硬件·mcu
普中科技8 小时前
【普中Hi3861开发攻略--基于鸿蒙OS】-- 第 29 章 WIFI 实验-TCP 通信
单片机·嵌入式硬件·tcp·liteos·hi3861·普中科技
hazy1k10 小时前
51单片机基础-ADC模数转换
stm32·单片机·嵌入式硬件·51单片机·1024程序员节
顾晨阳——11 小时前
GPIO总结
单片机·嵌入式硬件·gpio
嵌入式老牛11 小时前
【无标题】
单片机·嵌入式硬件·rtc
IT阳晨。11 小时前
【STM32】看门狗
stm32·嵌入式硬件