江科大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},
     	  
 };
相关推荐
Hai小易11 小时前
【STM32单片机】智能家居语音控制系统
stm32·单片机·智能家居·嵌入式软件开发·stm32项目设计·智能家居语音控制系统·c语言编程项目
国科安芯14 小时前
模拟DCDC电源芯片ASP3605S引脚功能及控制环路分析
单片机·嵌入式硬件
ACP广源盛1392462567316 小时前
GSV5100B@ACP#一种具有音频提取和插入功能的 2 进 2 出 HDMI2.0 中继器 / CAT 延长器
单片机·嵌入式硬件·音视频
藏,捉16 小时前
使用自己绘制的板子通过485与西门子PLC1214C通讯,控制舵机摇摆运动
单片机·工控·485通讯
kaikaile199516 小时前
基于DSP28335与AD7606的采样程序实现
单片机·嵌入式硬件
Joshua-a16 小时前
STM32嵌入式开发核心:volatile与寄存器操作详解
单片机·嵌入式硬件
顾安r18 小时前
11.22 脚本 手机termux项目分析(bash)
前端·python·stm32·flask·bash
九鼎创展科技19 小时前
九鼎创展发布X3588SCV4核心板,集成LPDDR5内存,提升RK3588S平台性能边界
android·人工智能·嵌入式硬件·硬件工程
智者知已应修善业21 小时前
【51单片机LED贪吃蛇】2023-3-27
c语言·c++·经验分享·笔记·嵌入式硬件·51单片机
国科安芯21 小时前
MCU芯片AS32A601与INA226芯片精确测量实现与应用
网络·单片机·嵌入式硬件·架构·安全性测试