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

news2024/10/2 6:30:50

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汉字取模的验证完成,测试成功。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 浅复制与深复制(Shallow Copy Deep Copy)

在Python中&#xff0c;赋值语句的意义是在对象与变量之间建立引用关系&#xff0c;相当于给对象起了名字。对于复合类型对象&#xff0c;由于其可以保存其他类型对象的引用&#xff0c;而在复制时即引出了“仅复制引用关系”或“同时复制引用对象”两种选择&#xff0c;即浅复…

通过Annotation将用户操作记录到数据库表功能实现

一、背景 在用户对我们所开发的系统访问的时候&#xff0c;需要我们的系统具有强大的健壮性&#xff0c;使得给与用户的体验感十足。在业务开发的过程中&#xff0c;我们通过将几个相关的操作绑定成一个事件&#xff0c;使得安全性以及数据的前后一致性得到提高。但是在溯源方面…

数据结构(二)——线性表(顺序表)

二、线性表 2.1线性表的定义和基本操作 2.1.1 线性表的基本概念 线性表&#xff1a;是具有相同数据类型的 n 个数据元素的有限序列。(Eg:所有的整数按递增次序排列&#xff0c;不是顺序表&#xff0c;因为所有的整数是无限的)其中n为表长&#xff0c;当n0时线性表是一个空表…

Java反射、枚举类和lambda表达式

前言&#xff1a; 本章我们就来了解Java中的反射和枚举类。枚举类和反射其实有些关系&#xff0c;接下来我们就来学习他们的使用。 反射&#xff1a; 反射的作用&#xff1a; 反射&#xff1a;反射允许对成员变量&#xff0c;成员方法和构造方法的信息进行编程访问。 Java中有…

input中文输入法导致的高频事件

这是基本结构 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>中文输入法的高频事件</title&…

F1 使用问题总结

F1 使用问题总结 问题一&#xff1a;话题发布 问题二&#xff1a;网络问题 文章目录 F1 使用问题总结一&#xff1a;话题发布一&#xff1a;rostopic命令将ROS话题的输出内容记录下来一&#xff1a;ROS分布式远程控制网络配置分布式介绍应用场景主从机配置环境搭建计算机虚拟机…

django学习记录07——订单案例(复选框+ajax请求)

1.订单的数据表 1.1 数据表结构 1.2 数据表的创建 models.py class Order(models.Model):"""订单号"""oid models.CharField(max_length64, verbose_name"订单号")title models.CharField(max_length64, verbose_name"名称&…

【前端】vscode快捷键和实用Api整理

vscode的快捷键 创建a.html 生成模板 !回车 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" …

Galxe:被低估的加密市场掘金地+Web3门户

在BTC ETF获得 SEC 的批准之后&#xff0c;机构资金大量买入推动BTC上涨&#xff0c;并带动整个加密市场回暖进入牛市。那么&#xff0c;对于习惯了熊市保守心态的投资者来说&#xff0c;接下来如何转换策略适应牛市&#xff1f;对即将进场的Web2用户来说&#xff0c;如何玩赚W…

《汇编语言》第3版 (王爽)实验11解析

第11章 实验11解析 检测点11.3 &#xff08;1&#xff09;.补全下面的程序&#xff0c;统计F000&#xff1a;0处32个字节中&#xff0c;大小在[32&#xff0c;128]的数据个数。 mov ax,0f000hmov ds,axmov bx,0mov dx,0mov cx,32s:mov al,[bx]cmp al,32jb s0 ;由于包含32&#…

深入理解Java泛型:灵活、安全、可重用的编程利器

Java泛型是一项强大的编程特性&#xff0c;为程序员提供了一种灵活、类型安全、可重用的编码方式。通过泛型&#xff0c;我们能够编写更加通用、适应多种数据类型的代码&#xff0c;从而提高了代码的灵活性和可维护性。在这篇博客中&#xff0c;我们将深入探讨Java泛型的各个方…

selenium元素定位问题

具体网页信息如下&#xff1a; 定位的时候driver.find_element(By.CLASS_NAME, 方法搞不定。 定位方法&#xff1a; 方法一&#xff1a;通过文本定位 driver.find_element(By.XPATH, "//*[text()高分一号]").click() time.sleep(3) 如果是部分文字 #部分文字py…

GFP-GAN环境搭建推理测试

引子 近期&#xff0c;文生图&#xff0c;wav2lip很火&#xff0c;文生图&#xff0c;见识的太多&#xff0c;不多说了。wav2lip其通过语音驱动唇部动作并对视频质量进行修复&#xff0c;里面一般涉及到三个步骤&#xff0c;文本到语音转化&#xff0c;语音驱动唇部动作&#…

HIVE伪分布安装

引言 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,类似于RDBMS(关系型数据库,如MySQL、Oracle、PgSQL),并提供类SQL的查询功能。 实验准备 1.搭建好伪分布安装模式的Hadoop的虚拟机,并配置了Linux网络。(可看我前面发布的文章) 2.apache…

美国签证|附面签相关事项√

小伙伴最近都忙着办签证吧&#xff01;但是需要注意的是&#xff0c;美国的签证跟其他任何国家的签证不同&#xff0c;并不是办理了就一定拿得到&#xff0c;据说概率是50%左右。所以办理美国签证&#xff0c;不要太着急啦&#xff01;先来了解一下美国签证的相片该怎么拍叭 ✅…

NPP VIIRS卫星数据介绍及获取

VIIRS&#xff08;Visible infrared Imaging Radiometer&#xff09;可见光红外成像辐射仪。扫描式成像辐射仪&#xff0c;可收集陆地、大气、冰层和海洋在可见光和红外波段的辐射图像。它是高分辨率辐射仪AVHRR和地球观测系列中分辨率成像光谱仪MODIS系列的拓展和改进。VIIRS数…

雷卯推荐电磁兼容保护器件-PPTC自恢复保险丝

一、PPTC的简介 自恢复保险丝, 简称PPTC。是一种正温度系数聚合物热敏电阻&#xff0c;作过流保护用&#xff0c;可代替电流保险丝。 电路正常工作时它的阻值很小&#xff08;压降很小&#xff09;&#xff0c;当电路出现过流使它温度升高时&#xff0c;阻值急剧增大几个数量级…

运行时错误‘53’:文件未找到:MathPage.WLL。Word粘贴复制时报错解决方案!

最近写文章使用 Word 时&#xff0c;粘贴复制总是出现这个报错&#xff0c;不能 ctrlc 和 v 好叫人苦恼。百度大致检索了一些过程&#xff0c;仍然有必要记录自己的问题解决过程。 快让本文进你的文件夹吃灰吧~ 报错如下&#xff1a; 运行时错误‘53’&#xff1a; 文件未找…

C++特殊类设计【特殊类 || 单例对象 || 饿汉模式 || 懒汉模式】

目录 1. 只在堆上创建的类 2. 只允许在栈上创建的类 3. 不能被继承的类 4. 不能被拷贝的类 5. 设计一个类&#xff0c;只能创建一个对象&#xff08;单例对象&#xff09; 饿汉模式 懒汉模式 嗨&#xff01;收到一张超美的风景图&#xff0c;愿你每天都能顺心&#xff0…

Java中常用的集合及方法(2)

在Java&#xff08;JDK8&#xff09;中&#xff0c;集合&#xff08;Collection&#xff09;是数据结构的实现&#xff0c;用于存储和操作对象集合。 集合&#xff08;Collection&#xff09;中包含的一般类或接口&#xff1a; 在这其中呢&#xff0c;我们经常使用的其实就是L…