基于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);                // 页数加1for (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汉字取模的验证完成,测试成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/527085.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重学SpringBoot3-内容协商机制

重学SpringBoot3-内容协商机制 ContentNegotiationConfigurer接口配置内容协商URL参数Accept头使用Url扩展名 自定义内容协商格式步骤1: 注册自定义媒体类型步骤2: 实现HttpMessageConverter接口步骤3: 使用自定义HttpMessageConverter 注意点 在 Spring Boot 3 中&#xff0c;…

【共享内存】System V共享内存{通信原理/相关接口/代码测试}

文章目录 1.初识共享内存1.0浅谈System V1.1什么是共享内存&#xff1f;1.2Linux-System V共享内存1.3图解共享内存1.4对共享内存的理解 2.创建共享内存2.1共享内存如何创建&#xff1f;2.2代码运行与测试2.3shm与pipe的区别2.4shm缺乏访问控制 3.代码理解shm3.1Log.hpp3.2comm…

HarmonyOS 数据持久化 关系型数据库之 查询逻辑编写

前面两篇文章 HarmonyOS 数据持久化 关系型数据库之 初始化操作 和 HarmonyOS 数据持久化 关系型数据库之 增删改逻辑编写 我们已经编写了 初始化 和 增删改 操作的基本逻辑 最后 收尾一下查询的函数 我们还是打开编辑器 然后 打开项目 找到 我们正在写的这个 relationalClass…

FPGA - 时钟Buffer的探究

1、IBUF : FPGA上所有的输入信号必须进过IBUF,vivado会自动给所有输入信号分配IBUF OBUF&#xff1a;FPGA上所有的输入信号必须进过IBUF,vivado会自动给所有输入信号分配OBUF BUFG:专用时钟的资源&#xff0c;目的是减少时钟抖动、增强时钟的驱动能力&#xff0c;vivado不会给信…

L2-2 老板的作息表(Python)

作者 陈越 单位 浙江大学 新浪微博上有人发了某老板的作息时间表&#xff0c;表示其每天 4:30 就起床了。但立刻有眼尖的网友问&#xff1a;这时间表不完整啊&#xff0c;早上九点到下午一点干啥了&#xff1f; 本题就请你编写程序&#xff0c;检查任意一张时间表&#xff0c…

Linux Docker安装redis缓存数据库

文章目录 一、查找Redis镜像二、拉取redis镜像三、创建数据目录和配置文件四、创建redis容器 一、查找Redis镜像 首先到docker镜像仓库下载redis镜像。地址&#xff1a;https://hub.docker.com/搜索redis&#xff0c;如下&#xff1a;找到对应想要下载的版本&#xff1a; 二、…

Leetcode - 二分查找 | 在排序数组中查找元素的第一个和最后一个位置

题目一&#xff1a;二分查找 二分查找 看到这道题之后&#xff0c;很快就能想到暴力的解法&#xff0c;把数组遍历一遍就能找到答案&#xff0c;时间复杂度O(n)。 假设存在一批数字[1&#xff0c;1&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#xff0c;7&#x…

面试宝典-【redis】

目录 1.什么是缓存穿透 ? 怎么解决 ? 2.什么是布隆过滤器 3.什么是缓存击穿 ? 怎么解决 ? 4.什么是缓存雪崩 ? 怎么解决 ? 5.redis做为缓存&#xff0c;mysql数据如何与redis进行同步?(双写) 6.排他锁是如何保证读写、读读互斥的呢&#xff1f; 7.你听说过延…

Java EE之wait和notify

一.多线程的执行顺序 由于多个线程执行是抢占式执行&#xff0c;就会导致顺序不同&#xff0c;同时就会导致出现问题&#xff0c;就比如俩个线程同时对同一个变量进行修改&#xff0c;我们难以预知执行顺序。 但在实际开发中&#xff0c;我们希望代码按一定的逻辑顺序执行&am…

C++ 多状态dp

目录 按摩师 打家劫舍 打家劫舍2 删除并获得点数 粉刷房子 按摩师 面试题 17.16. 按摩师 最大值问题 f : 预约此次的最长时间 g &#xff1a;不预约此次的最长时间 出现的错误&#xff1a;return max(f[n - 1]), g[n - 1]); 注意&#xff1a;①题目没给nums的范围&…

uniapp 云开发笔记

uniapp云开发官方文档https://uniapp.dcloud.io/uniCloud/learning.html 新建 关联云空间 云函数获取用户openID uniCloud API列表https://uniapp.dcloud.io/uniCloud/cf-functions.html#unicloud-api%E5%88%97%E8%A1%A8 自建云函数login event中包含前端传来的参数 uniCloud.…

Linux第74步_“设备树”下的LED驱动

使用新字符设备驱动的一般模板&#xff0c;以及设备树&#xff0c;驱动LED。 1、添加“stm32mp1_led”节点 打开虚拟机上“VSCode”&#xff0c;点击“文件”&#xff0c;点击“打开文件夹”&#xff0c;点击“zgq”&#xff0c;点击“linux”&#xff0c;点击“atk-mp1”&am…