esp32使用MicroPython驱动oled屏显示中文和英文
文章目录
- esp32使用MicroPython驱动oled屏显示中文和英文
- 介绍
- 安装
- 特点
- 开源
- 硬件连接
- API
- 示例
- 显示英文字符
- 显示汉字
- 参考链接
esp32使用MicroPython驱动oled屏显示中文和英文
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.
欢迎前往社区交流:海萤物联网社区
介绍
手边有个0.96寸的oled屏,驱动芯片是ssd1306,分辨率是128x64,支持ic接口。准备用esp32开发板驱动它。
在网上查了一圈,使用MicroPython驱动oled屏,大都是用官方库ssd1306驱动。官方库只支持8x8显示英文字符,屏幕上显示太小了,看起来太吃力。于是写了个库micropython-ssd1306py,支持中英文显示,并支持不同字号。
安装
输入命令下载包到指定目录:
pip install --target=d:/package micropython-ssd1306py
下载后目录:
删除掉无关文件README和egg-info,将ssd1306py文件夹放在设备的lib目录下。
在设备中的目录:
特点
- 支持英文字号8x8,16x16,24x24,32x32
- 支持中文字号16x16,24x24,32x32
- 封装lcd操作常用接口
开源
- github上的项目地址
- gitee上的项目地址
硬件连接
API
def init_i2c(scl, sda, width, height, i2c=-1):"""初始化i2c接口:param scl: i2c的时钟脚:param sda: i2c的数据脚:param width: oled屏幕的宽度像素:param height: oled屏幕的高度像素:param i2c: i2c口"""def clear():"""清除屏幕"""def show():"""屏幕刷新显示"""def pixel(x, y):"""画点"""def text(string, x_axis, y_axis, font_size):"""显示字符串.注意字符串必须是英文或者数字"""def set_font(font, font_size):"""设置中文字库.允许设置多个不同大小的字库字库必须是字典,格式示例:font = {0xe4bda0:[0x08, 0x08, 0x08, 0x11, 0x11, 0x32, 0x34, 0x50, 0x91, 0x11, 0x12, 0x12, 0x14, 0x10, 0x10, 0x10, 0x80, 0x80,0x80, 0xFE, 0x02, 0x04, 0x20, 0x20, 0x28, 0x24, 0x24, 0x22, 0x22, 0x20, 0xA0, 0x40], # 你0xe5a5bd:[0x10, 0x10, 0x10, 0x10, 0xFC, 0x24, 0x24, 0x25, 0x24, 0x48, 0x28, 0x10, 0x28, 0x44, 0x84, 0x00, 0x00, 0xFC,0x04, 0x08, 0x10, 0x20, 0x20, 0xFE, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xA0, 0x40] # 好}"""def text_cn(string, x_axis, y_axis, font_size):"""显示中文字符.注意字符必须是utf-8编码"""
示例
显示英文字符
import ssd1306py as lcdlcd.init_i2c(22, 21, 128, 64)
lcd.text('font8x8', 0, 0, 8)
lcd.text('font16x16', 0, 20, 16)
lcd.text('font24x24', 0, 40, 24)
lcd.show()
显示效果:
import ssd1306py as lcdlcd.init_i2c(22, 21, 128, 64)
lcd.text('font32x32', 0, 0, 32)
lcd.show()
显示汉字
汉字字库较大,单一字号的字库就需要几M字节,所以没有放在库中。需要自己将需要显示的汉字做成字库传入到库中。
制作字库可以使用工具PCtoLCD2002,百度网盘下载链接,提取码:z4tf
使用方法可参考:如何使用PCtoLCD2002取模(汉字、ASCII字符集)
提取的汉字字库做成字典格式供程序使用,字典的键是汉字的utf-8编码值。可以使用python获取python的utf-8值,比如:
则汉字”你“的utf-8值是0xe4bda0。
也可以使用在线转换工具查询:http://www.mytju.com/classcode/tools/encode_utf8.asp
比如以下示例,显示汉字“你好”。
import ssd1306py as lcdfont16 = {0xe4bda0:[0x08, 0x08, 0x08, 0x11, 0x11, 0x32, 0x34, 0x50, 0x91, 0x11, 0x12, 0x12, 0x14, 0x10, 0x10, 0x10, 0x80, 0x80,0x80, 0xFE, 0x02, 0x04, 0x20, 0x20, 0x28, 0x24, 0x24, 0x22, 0x22, 0x20, 0xA0, 0x40], # 你0xe5a5bd:[0x10, 0x10, 0x10, 0x10, 0xFC, 0x24, 0x24, 0x25, 0x24, 0x48, 0x28, 0x10, 0x28, 0x44, 0x84, 0x00, 0x00, 0xFC,0x04, 0x08, 0x10, 0x20, 0x20, 0xFE, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xA0, 0x40] # 好
}font24 = {0xe4bda0:[0x00, 0x01, 0x01, 0x03, 0x03, 0x02, 0x04, 0x04, 0x0E, 0x1C, 0x14, 0x24, 0x44, 0x04, 0x04, 0x04, 0x04, 0x04,0x04, 0x05, 0x04, 0x06, 0x04, 0x00,0x00, 0x00, 0x8C, 0x0C, 0x08, 0x18, 0x1F, 0x30, 0x21, 0x41, 0x41, 0x91, 0x19, 0x11, 0x31, 0x21, 0x41, 0x41,0x81, 0x01, 0x11, 0x0F, 0x02, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x20, 0x10, 0x18, 0x0C, 0x0C, 0x06,0x04, 0x00, 0x00, 0x00, 0x00, 0x00], # 你0xe5a5bd:[0x00, 0x00, 0x06, 0x06, 0x06, 0x04, 0x04, 0x7F, 0x0C, 0x0C, 0x08, 0x08, 0x08, 0x18, 0x10, 0x11, 0x0D, 0x03,0x02, 0x04, 0x18, 0x20, 0x40, 0x00,0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0xC0, 0x40, 0x40, 0xC0, 0x80, 0xBF, 0x80, 0x80, 0x00, 0x00, 0x80,0xC0, 0x60, 0x00, 0x07, 0x01, 0x00,0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0x20, 0x40, 0x80, 0x80, 0x80, 0x84, 0xFE, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x00, 0x00] # 好
}font32 = {0xe4bda0:[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0D, 0x09, 0x11, 0x11, 0x21,0x01, 0x01, 0x01, 0x01, 0x01, 0x01,0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x40, 0x70, 0x60, 0xE0, 0xC0, 0xC1, 0x81, 0x03,0x03, 0x86, 0x84, 0x8C, 0x88, 0x90,0x81, 0x83, 0x83, 0x83, 0x86, 0x86, 0x8C, 0x88, 0x90, 0x90, 0xA0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,0x00, 0x60, 0xE0, 0xC0, 0xC0, 0x80,0x80, 0xFF, 0x00, 0x10, 0x0C, 0x08, 0x08, 0x08, 0x88, 0x88, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,0x08, 0x08, 0xF8, 0x38, 0x10, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xFC, 0x18, 0x30, 0x20, 0x40, 0x00, 0x00, 0x00, 0x80,0x40, 0x20, 0x30, 0x18, 0x1C, 0x0C,0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], # 你0xe5a5bd:[0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x3F, 0x03, 0x03, 0x02, 0x06, 0x06, 0x04, 0x04, 0x0C,0x0C, 0x08, 0x08, 0x0E, 0x01, 0x00,0x00, 0x01, 0x03, 0x04, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x81, 0x80, 0x00, 0x08, 0xFC,0x08, 0x08, 0x18, 0x18, 0x18, 0x18,0x17, 0x30, 0x30, 0x30, 0x60, 0x60, 0xC0, 0xF0, 0xBC, 0x8C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0xFF, 0x00, 0x00,0x00, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,0x06, 0x06, 0xFC, 0x1C, 0x08, 0x00,0x00, 0x00, 0x00, 0x00, 0x20, 0xF0, 0x70, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xFC, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] # 好
}lcd.init_i2c(22, 21, 128, 64)
lcd.set_font(font16, 16)
lcd.set_font(font24, 24)
lcd.set_font(font32, 32)
lcd.text_cn('你好', 0, 0, 16)
lcd.text_cn('你好', 40, 00, 24)
lcd.text_cn('你好', 0, 30, 32)
lcd.show()
参考链接
- MicroPython: OLED Display with ESP32 and ESP8266
- micropython esp8266+ssd1306(OLED) 显示中文(示例)
esp32使用MicroPython驱动oled屏显示中文和英文相关推荐
- esp32 spi 驱动 oled 屏显示来自 PC 的画面
esp32 spi 驱动 oled 屏显示来自 PC 的画面 实验代码 gayhub 实验源码 设备及运行环境 装有python的电脑 Python 3.8.2 (tags/v3.8.2:7b3ab5 ...
- Arduino Uno 驱动OLED进阶 显示中英文字
之前已经学会如何接线,实现示例显示 这次就开始一些实际的应用 本示例还是使用IIC的接线方法,请参照第一篇 Arduino 驱动OLED屏幕IIC接线方式简单入门 实现文字的显示 这代码上实现在指定的 ...
- arduino上ESP8266用Adafruit_SSD1306库驱动OLED屏
关注.星标公众号,不错过精彩内容 编辑:Tony 来源:公众号TonyCode 在进行后续的ESP8266学习前,我们先来对OLED屏进行驱动,为后续学习提供直观的信息显示. 1. 安装驱动库 在之前 ...
- 用STM32F103达成基于I2C协议的AHT20温湿度传感器和OLED屏显示汉字
目录 一 I2C协议简介 硬件I2C与软件I2C 二 代码和ATH20芯片实现温湿度的串口显示 三 用stm32f103芯片的SPI和IIC接口接上OLED屏显示中文姓名温湿度 1 先用文字字模生成器 ...
- 痞子衡嵌入式:记录i.MXRT1060驱动LCD屏显示横向渐变色有亮点问题解决全过程(提问篇)...
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1060上LCD横向渐变色显示出亮点问题的分析解决经验. 痞子衡前段时间在支持一个i.MXRT1060客户项目时遇到了LCD ...
- 【嵌入式】STM32基于SPI通信协议OLED屏显示
STM32基于SPI通信协议OLED屏显示 一.SPI协议和OLED介绍 1.SPI协议介绍 物理层 协议层 2.OLED显示屏介绍 二.显示个人学号姓名实验 1.题目要求 2.代码部分 1.完整代码 ...
- 实验 STM32 基于SPI的OLED屏显示
STM32 基于SPI的OLED屏显示 一.任务要求 二.显示自己的学号和姓名 1.例子程序的改写 (1)下载资料 (2)解压后找到文件,并用KEIL打开. (3)改写程序 2.连接硬件 3.运行结果 ...
- 0.96寸OLED屏显示(IIC通信)Ⅰ
0.96寸OLED屏显示(IIC通信) 一.0.96寸OLED简介 0.96寸OLED屏内部驱动IC为SSD1306:兼容6800.8080两种并行接口方式,3线或 4线的串行SPI接口方式和 I ...
- 基于STM32F4 的OLED屏显示噪点、花屏问题
现象 在实现OLED屏显示 内容时,屏幕会出现噪点:多点亮一些点位,使要显示的内容不能辨识. 原因 1.可能是因为当前io配置频率过高 2.延时时间太短 解决方法 方法1.更换io管脚为可高频io 例 ...
最新文章
- 电商泛滥的时代,我们的出路在哪里?
- CPU-内存-IO-网络调优
- neo4j 学习-2
- 16.定位模板,布局和样式
- 软考程序员Java答题速成_软考程序员考试下午题解答方法与技巧
- 如何用东华大学的邮箱来在Cousera进行学生认证
- 怎样分析数据致提高产出?(一)
- linux进程家族树,linux下用c语言创建进程树
- Microsoft 365 - Teams会议时如何开启美颜功能
- loadrunner入门教程(14)--检查点
- How cc Works 中文译文
- 【Unity小工具】一键制作艺术字,超简洁操作,策划与美术的福音!
- Dijkstra算法为什么权值不能是负值
- 如何创建一个以chatgpt为基础的QQ群聊机器人的流程细节
- 编写php程序_计算1+2+3+… +100的和_并输出计算结果.,下列程序是用来计算1+2+3……+10的程序段,请补充完该程序。()...
- Python中怎么通过字典的值找到列表中对应的字典,并修改
- 了解23种设计模式之组合模式
- html中添加3dmax建模,3DSMAX制作逼真的欧式沙发建模教程
- org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
- python自动化运维工程师面试题_运维面试题 含答案
热门文章
- linux ubuntu 18.04设置锁屏时间和用户登录超时时间
- 红旗Linux刻录到U盘,安装红旗Asianux_openEuler 8.1(欧拉版)的方法
- SketchUp导出有纹理贴图的模型进入Unity3d的设置
- 动漫中各式各样的服饰怎么绘画?有什么技巧嘛?
- 机器视觉工程师们,2023你准备好跳槽了吗?不妨先看看这篇文章。(销售我们暂时不讨论)
- 关于编程语言的思考——编译型和解释型
- 苹果电脑如何启动外置硬盘的linux系统,【苹果MacBookPro评测】在外置SSD上让苹果本运行Windows系统(全文)_苹果 MacBook Pro_笔记本评测-中关村在线...
- python如何定义名称_Python的基础语法
- CSS-外部引入方法
- 基于凌鸥平台的两电阻采样无感FOC PMSM方案