基于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.mzph.cn/news/736254.shtml

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

相关文章

[AutoSar]BSW_Com011 CAN IF 模块配置

目录 关键词平台说明一、CanIfCtrlDrvCfgs二 、CanIfTrcvDrvCfgs三、CanIfDispatchCfg四、CanIfBufferCfgs五、CanIfHrhCfgs六、CanIfHthCfgs七、CanIfRxPduCfgs八、CanIfTxPduCfgs九、CanIfPrivateCfg十、CanIfPublicCfg 关键词 嵌入式、C语言、autosar、OS、BSW 平台说明 …

目前最强大语言模型!谷歌开源 | 开源日报 No.196

google/gemma_pytorch Stars: 3.4k License: Apache-2.0 gemma_pytorch 是 Google Gemma 模型的官方 PyTorch 实现。 提供了 Gemini 模型技术的轻量级、最新开放模型支持文本到文本、仅解码器大语言模型提供英文版本&#xff0c;包含开源权重、预训练变体和指导调整变体支持…

natfrp和FRP配置SSL的基本步骤和bug排查

获取免费/付费SSL 我直接买了一年的ssl证书 设置 主要参考&#xff1a;https://doc.natfrp.com/frpc/ssl.html 遇到的Bug root域名解析是ALIAS&#xff0c;不是CNAME不要用NATFRP &#xff08;SakuraFrp&#xff09;同步Joplin&#xff0c;会出现webdav错误导致大量笔记被…

linux上安装fastdfs及配置

一、基础环境准备 1、所需软件 名称说明libfastcommonfastdfs分离出的一些公用函数包fastdfsfastdas软件包fastdfs-nginx-modulefastdfst和nginx的关联模块nginxnginxl软件包 2、编辑环境 安装一些基础的支持环境 yum install git gccc gcc-c make automake autoconf libto…

线性代数(一)——向量基础

向量基础 1、向量和线性组合2、向量的模和点乘3、矩阵4、参考 线性代数的核心是向量的加和乘两种运算的组合&#xff0c;本篇博客为线性代数的一个引子&#xff0c;主要从向量、线性组合和矩阵逐步引出线性代数的相关知识。 1、向量和线性组合 首先介绍的是向量相关&#xff0…

DHCP中继实验(思科)

华为设备参考&#xff1a;DHCP中继实验&#xff08;华为&#xff09; 一&#xff0c;技术简介 DHCP中继&#xff0c;可以实现在不同子网和物理网段之间处理和转发DHCP信息的功能。如果DHCP客户机与DHCP服务器在同一个物理网段&#xff0c;则客户机可以正确地获得动态分配的IP…

PCL 约束Delaunay三角网(版本二)

目录 一、算法概述二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法概述 PCL 点云Delaunay三角剖分一文给出了PCL中Delaunay三角网算法的基础用法。本文在基础用法的基…

Python与FPGA——膨胀腐蚀

文章目录 前言一、膨胀腐蚀二、Python实现腐蚀算法三、Python实现膨胀算法四、Python实现阈值算法五、FPGA实现腐蚀算法总结 前言 腐蚀是指周围的介质作用下产生损耗与破坏的过程&#xff0c;如生锈、腐烂等。而腐蚀算法也类似一种能够产生损坏&#xff0c;抹去部分像素的算法。…

Gafana Redis Overview dashboard

1. 简介 根据提供的 Redis 监控仪表盘 JSON 文件,包含的监控指标及其简要描述如下: redis_uptime_in_seconds: Redis 实例的运行时间(秒)。 redis_connected_clients: 当前连接到 Redis 实例的客户端数量。 redis_memory_used_bytes: Redis 实例使用的内存量(字节)。 redis_m…

SAP 消息编号 SG037

在日常外币银行结汇的时候&#xff0c;汇率小数点有可能是6位&#xff0c;但是SAP的汇率字段长度小数点后只有5位 所以&#xff0c;客户在F-02的时候&#xff0c;会出现一下报错“条目过长” 解决方法&#xff1a; 更改汇率的比率 OB08重新修改汇率 F-02界面 但是这种方法的风…

对接外卖平台接口的实践总结

当开发者需要将自己的系统或应用程序与外卖平台接口对接时&#xff0c;这项任务可能会涉及到一系列复杂的步骤和技术挑战。在本篇博客文章中&#xff0c;我们将总结对接外卖平台接口的实践经验&#xff0c;并分享关键的注意事项和最佳实践。 ### 1. 确定需求和目标 在开始对接…

【leetcode热题】对链表进行插入排序

给定单个链表的头 head &#xff0c;使用 插入排序 对链表进行排序&#xff0c;并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的&#xff0c;每次只移动一个元素&#xff0c;直到所有元素可以形成一个有序的输出列表。每次迭代中&#xff0c;插入排序只从输…

OD_2024_C卷_200分_7、5G网络建设【JAVA】【最小生成树】

package odjava;import java.util.Scanner;public class 七_5G网络建设 {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt(); // 基站数量&#xff08;节点数&#xff09;int m sc.nextInt(); // 基站对数量&#xff08;边数&…

超越DragGAN和DragDiffusion!StableDrag:基于点的图像编辑新框架(南大腾讯) 原创 Yutao Cui等 AI生成未来

超越DragGAN和DragDiffusion&#xff01;StableDrag:基于点的图像编辑新框架(南大&腾讯) 原创 Yutao Cui等 AI生成未来 文章链接&#xff1a;https://arxiv.org/pdf/2403.04437 开源地址&#xff1a;https://stabledrag.github.io/ 基于点的图像编辑自DragGAN出现以来就引…

【计算机视觉】图像处理算法(其他篇)

来源&#xff1a;《OpenCV3编程入门》&#xff0c;怀念毛星云大佬&#x1f56f;️ 说明&#xff1a;本系列重点关注各种图像处理算法的原理、作用和对比 漫水填充 漫水填充法是一种用特定的颜色填充连通区域&#xff0c;通过设置可连通像素的上下限以及连通方式来达到不同的填…

MyBatisPlus理解

MyBatisPlus是mybatis的增强&#xff0c;mybatis是数据库持久化的框架&#xff0c;但mybatisplus并不是替代mybatis&#xff0c;而是相辅相成的关系 MyBatisPlus不会对以前使用mybatis开发的项目进行影响&#xff0c;引入后仍然正常运行。 使用方法&#xff1a; 1.在引入了对…

使用Spring的AOP

使用Spring的AOP 一、AOP 的常用注解1.切面类Aspect2.Pointcut3.前置通知Before4.后置通知AfterReturning5.环绕通知Around6.异常通知AfterThrowing7.最终通知After8.切面顺序Order9.启用自动代理EnableAspectJAutoProxy 二、AOP注解方式开发三、AOP 全注解开发四、基于XML配置…

5G网络助力智慧文旅发展:实现旅游资源的优化配置与高效利用

目录 一、5G网络在智慧文旅中的关键作用 1、高速率传输提升数据处理能力 2、低时延助力实时决策与调度 3、大连接实现全面覆盖与精细化管理 二、5G网络助力实现旅游资源的优化配置 1、精准匹配游客需求与旅游资源 2、促进旅游资源的跨区域合作与共享 三、5G网络助力实现…

【Python】科研代码学习:七 TrainingArguments,Trainer

【Python】科研代码学习&#xff1a;七 TrainingArguments&#xff0c;Trainer TrainingArguments重要的方法 Trainer重要的方法使用 Trainer 的简单例子 TrainingArguments HF官网API&#xff1a;Training 众所周知&#xff0c;推理是一个大头&#xff0c;训练是另一个大头 之…

XSS-Labs靶场“11-13、15-16”关通关教程

君衍. 一、第十一关 referer参数注入二、第十二关 user-agent参数注入三、第十三关 cookie参数绕过四、第十五关 ng-include文件包含五、第十六关 回车代替空格 点击跳转&#xff1a; XSS-Labs靶场“1-5”关通关教程 XSS-Labs靶场“6-10”关通关教程 一、第十一关 referer参数…