基于PCtoLCD实现OLED汉字取模方法

0 工具准备

PCtoLCD2002
NodeMCU(ESP8266)(验证OLED字模效果)
0.96寸OLED显示屏

1 基于PCtoLCD实现OLED汉字取模方法

1.1 基础知识介绍

0.96存OLED显示屏包含128x64个像素点,x轴方向为128个像素点,y轴方向为64个像素点。它采用 SSD1306作为显示控制芯片,SSD1306把OLED显示屏y轴的64个像素分为8个PAGE,把x轴分为128个列(COL),每个PAGE对应1个字节的数据,以字节方式写入。
下面提一下SSD1306的数据写入方式,SSD1306初始化默认设置为页寻址模式,页寻址模式的寻址指针移动如下所示:
在这里插入图片描述
寻址方式决定了每个像素数据在OLED上的设置过程,假如我们显示一个16*16像素的汉字,那么它便会占用2PAGE和16COL,用上面的方式首先会从第1个PAGE的第1列开始填充数据,当第1个PAGE填充完后需要手动将指针移动到第1个PAGE的第2列开始填充数据。当第1个PAGE的所有数据填充完以后,进行第2个PAGE数据的填充。根据这一特点,我们PCtoLCD软件的取模方式就需要设置为列行式。

1.2 使用PCtoLCD生成汉字字模“好”

(1)打开PCtoLCD2002,依次点击模式 ->字符模式
在这里插入图片描述
(2)点击选项,按照下图设置取模方式,随后点击确定即可
在这里插入图片描述
(3)在下拉框输入“好”,点击生成字模即可生成“好”字的字模
在这里插入图片描述
生成的字模数据如下:
0x10,0x10,0xF0,0x1F,0x10,0xF0,0x00,0x80,0x82,0x82,0xE2,0x92,0x8A,0x86,0x80,0x00,
0x40,0x22,0x15,0x08,0x16,0x61,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,/“好”,0/

2 实例验证

前面我们已经生成了OLED的“好”字字模,接下来我们使用NodeMCU(ESP8266)来验证OLED字模效果。

2.1 定义汉字字模

const unsigned char cnFont[] =
{
    0x10, 0x10, 0xF0, 0x1F, 0x10, 0xF0, 0x00, 0x80, 0x82, 0x82, 0xE2, 0x92, 0x8A, 0x86, 0x80, 0x00,
    0x40, 0x22, 0x15, 0x08, 0x16, 0x61, 0x00, 0x00, 0x40, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, /*"好",0*/
};

2.2 汉字显示函数

#define CN_FONT_SIZE 32
/**
 * @brief 显示汉字
 * 
 * @param x 列坐标(0-127)
 * @param y 行坐标(0-7)
 * @param fontAddr 字体地址
 */
void ICACHE_FLASH_ATTR oled_show_cn(u8 x, u8 y, u8 fontAddr)
{
    int c = 0, i = 0;
    c = CN_FONT_SIZE * fontAddr;
    // 画第一页
    OLED_Set_Pos(x, y);                    // 设置画点起始处
    for (i = 0; i < CN_FONT_SIZE / 2; i++) // 循环8次(8列)
    {
        OLED_WR_Byte(userFont[c + i], OLED_DATA);
    }

    // 画第二页
    OLED_Set_Pos(x, y + 1);                // 页数加1
    for (i = 0; i < CN_FONT_SIZE / 2; i++) // 循环8次
    {
        OLED_WR_Byte(userFont[c + i + CN_FONT_SIZE / 2], OLED_DATA);
    }
}

2.3 汉字显示应用

我们在坐标(0,0)的位置显示汉字“好”,上层应用调用oled_show_cn函数实现如下:


#define CN_FONT_HAO 0
oled_show_cn(0, 0, CN_FONT_HAO);

2.4 测试验证

将编译好的bin文件烧录到ESP8266,效果如下:
在这里插入图片描述

至此,基于PCtoLCD实现OLED汉字取模的验证完成,测试成功。

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NW嵌入式开发

感谢您的支持,让我们一起进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值