文章目录

  • 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屏显示中文和英文相关推荐

  1. esp32 spi 驱动 oled 屏显示来自 PC 的画面

    esp32 spi 驱动 oled 屏显示来自 PC 的画面 实验代码 gayhub 实验源码 设备及运行环境 装有python的电脑 Python 3.8.2 (tags/v3.8.2:7b3ab5 ...

  2. Arduino Uno 驱动OLED进阶 显示中英文字

    之前已经学会如何接线,实现示例显示 这次就开始一些实际的应用 本示例还是使用IIC的接线方法,请参照第一篇 Arduino 驱动OLED屏幕IIC接线方式简单入门 实现文字的显示 这代码上实现在指定的 ...

  3. arduino上ESP8266用Adafruit_SSD1306库驱动OLED屏

    关注.星标公众号,不错过精彩内容 编辑:Tony 来源:公众号TonyCode 在进行后续的ESP8266学习前,我们先来对OLED屏进行驱动,为后续学习提供直观的信息显示. 1. 安装驱动库 在之前 ...

  4. 用STM32F103达成基于I2C协议的AHT20温湿度传感器和OLED屏显示汉字

    目录 一 I2C协议简介 硬件I2C与软件I2C 二 代码和ATH20芯片实现温湿度的串口显示 三 用stm32f103芯片的SPI和IIC接口接上OLED屏显示中文姓名温湿度 1 先用文字字模生成器 ...

  5. 痞子衡嵌入式:记录i.MXRT1060驱动LCD屏显示横向渐变色有亮点问题解决全过程(提问篇)...

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1060上LCD横向渐变色显示出亮点问题的分析解决经验. 痞子衡前段时间在支持一个i.MXRT1060客户项目时遇到了LCD ...

  6. 【嵌入式】STM32基于SPI通信协议OLED屏显示

    STM32基于SPI通信协议OLED屏显示 一.SPI协议和OLED介绍 1.SPI协议介绍 物理层 协议层 2.OLED显示屏介绍 二.显示个人学号姓名实验 1.题目要求 2.代码部分 1.完整代码 ...

  7. 实验 STM32 基于SPI的OLED屏显示

    STM32 基于SPI的OLED屏显示 一.任务要求 二.显示自己的学号和姓名 1.例子程序的改写 (1)下载资料 (2)解压后找到文件,并用KEIL打开. (3)改写程序 2.连接硬件 3.运行结果 ...

  8. 0.96寸OLED屏显示(IIC通信)Ⅰ

    0.96寸OLED屏显示(IIC通信) 一.0.96寸OLED简介   0.96寸OLED屏内部驱动IC为SSD1306:兼容6800.8080两种并行接口方式,3线或 4线的串行SPI接口方式和 I ...

  9. 基于STM32F4 的OLED屏显示噪点、花屏问题

    现象 在实现OLED屏显示 内容时,屏幕会出现噪点:多点亮一些点位,使要显示的内容不能辨识. 原因 1.可能是因为当前io配置频率过高 2.延时时间太短 解决方法 方法1.更换io管脚为可高频io 例 ...

最新文章

  1. 电商泛滥的时代,我们的出路在哪里?
  2. CPU-内存-IO-网络调优
  3. neo4j 学习-2
  4. 16.定位模板,布局和样式
  5. 软考程序员Java答题速成_软考程序员考试下午题解答方法与技巧
  6. 如何用东华大学的邮箱来在Cousera进行学生认证
  7. 怎样分析数据致提高产出?(一)
  8. linux进程家族树,linux下用c语言创建进程树
  9. Microsoft 365 - Teams会议时如何开启美颜功能
  10. loadrunner入门教程(14)--检查点
  11. How cc Works 中文译文
  12. 【Unity小工具】一键制作艺术字,超简洁操作,策划与美术的福音!
  13. Dijkstra算法为什么权值不能是负值
  14. 如何创建一个以chatgpt为基础的QQ群聊机器人的流程细节
  15. 编写php程序_计算1+2+3+… +100的和_并输出计算结果.,下列程序是用来计算1+2+3……+10的程序段,请补充完该程序。()...
  16. Python中怎么通过字典的值找到列表中对应的字典,并修改
  17. 了解23种设计模式之组合模式
  18. html中添加3dmax建模,3DSMAX制作逼真的欧式沙发建模教程
  19. org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
  20. python自动化运维工程师面试题_运维面试题 含答案

热门文章

  1. linux ubuntu 18.04设置锁屏时间和用户登录超时时间
  2. 红旗Linux刻录到U盘,安装红旗Asianux_openEuler 8.1(欧拉版)的方法
  3. SketchUp导出有纹理贴图的模型进入Unity3d的设置
  4. 动漫中各式各样的服饰怎么绘画?有什么技巧嘛?
  5. 机器视觉工程师们,2023你准备好跳槽了吗?不妨先看看这篇文章。(销售我们暂时不讨论)
  6. 关于编程语言的思考——编译型和解释型
  7. 苹果电脑如何启动外置硬盘的linux系统,【苹果MacBookPro评测】在外置SSD上让苹果本运行Windows系统(全文)_苹果 MacBook Pro_笔记本评测-中关村在线...
  8. python如何定义名称_Python的基础语法
  9. CSS-外部引入方法
  10. 基于凌鸥平台的两电阻采样无感FOC PMSM方案