esp32驱动SSD1306的oled显示汉字(micropython)
1.完整源码:
主函数oled.py
from ssd1306 import SSD1306_SPI
from ssd1306 import SSD1306
import font
import machine def draw_chinese(lcd,ch_str,x_axis,y_axis): offset_=0 y_axis=y_axis*16#中文高度一行占8个 x_axis=(x_axis*16)#中文宽度占16个 for k in ch_str: code = 0x00#将中文转成16进制编码 data_code = k.encode("utf-8") code |= data_code[0]<<16 code |= data_code[1]<<8 code |= data_code[2] byte_data=font.byte2[code] for y in range(0,16): a_=bin(byte_data[y]).replace('0b','') while len(a_)<8: a_='0'+a_ b_=bin(byte_data[y+16]).replace('0b','') while len(b_)<8: b_='0'+b_ for x in range(0,8): lcd.pixel(x_axis+x-offset_,y+y_axis,int(a_[x]))#文字的上半部分 lcd.pixel(x_axis+x+8-offset_,y+y_axis,int(b_[x]))#文字的下半部分 offset_+=16 WIDTH = const(128)
HEIGHT = const (64)
pdc = machine.Pin(27, machine.Pin.OUT)
pcs = machine.Pin(26, machine.Pin.OUT) prst = machine.Pin(18, machine.Pin.OUT) spi = machine.SPI(baudrate=100000, polarity=1, phase=0, sck=machine.Pin(0), mosi=machine.Pin(2), miso=machine.Pin(4)) spi.init(baudrate=200000) # set the baudrate ssd = SSD1306_SPI(WIDTH, HEIGHT, spi, pdc, prst, pcs) draw_chinese(ssd,'我',0,0)
draw_chinese(ssd,'我',1,1)
draw_chinese(ssd,'我',2,2)
draw_chinese(ssd,'我',3,3) ssd.show()
字体包font.py
byte2={
0xE997B9:
[0x20,0x17,0x00,0x42,0x41,0x5F,0x41,0x41,0x4F,0x49,0x49,0x49,0x49,0x41,0x41,0x40,
0x00,0xFC,0x04,0x04,0x04,0xF4,0x04,0x04,0xE4,0x24,0x24,0xA4,0x44,0x04,0x14,0x08],#闹
0xe68891:
[0x04,0x0E,0x78,0x08,0x08,0xFF,0x08,0x08,0x0A,0x0C,0x18,0x68,0x08,0x08,0x2B,0x10,
0x40,0x50,0x48,0x48,0x40,0xFE,0x40,0x44,0x44,0x48,0x30,0x22,0x52,0x8A,0x06,0x02],#我
0xE9929F:
[0x10,0x10,0x3C,0x20,0x41,0xBD,0x11,0x11,0xFD,0x11,0x11,0x10,0x14,0x18,0x10,0x00,
0x20,0x20,0x20,0x20,0xFC,0x24,0x24,0x24,0x24,0xFC,0x24,0x20,0x20,0x20,0x20,0x20],#钟
0xE697B6:
[0x00,0x00,0x7C,0x44,0x45,0x44,0x44,0x7C,0x44,0x44,0x44,0x44,0x7C,0x44,0x00,0x00,
0x08,0x08,0x08,0x08,0xFE,0x08,0x08,0x08,0x88,0x48,0x48,0x08,0x08,0x08,0x28,0x10]
}
2. esp硬件spi接线
oled esp32
GND GND
VCC VCC
D0 P0(SCK)
D1 P2(MOSI)
RES P18(RST)
DC P27(DC)
CS P26(CS)
3. 汉字取模
使用工具PCtoLCD2002完美版,参数设置如下图:

生成字节数组:
0x04,0x0E,0x78,0x08,0x08,0xFF,0x08,0x08,0x0A,0x0C,0x18,0x68,0x08,0x08,0x2B,0x10,
0x40,0x50,0x48,0x48,0x40,0xFE,0x40,0x44,0x44,0x48,0x30,0x22,0x52,0x8A,0x06,0x02
4.显示效果

esp32驱动SSD1306的oled显示汉字(micropython)的更多相关文章
- 联盛德 HLK-W806 (六): I2C驱动SSD1306 128x64 OLED液晶屏
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- 联盛德 HLK-W806 (八): 4线SPI驱动SSD1306/SSD1315 128x64 OLED液晶屏
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- MicroPython之TPYBoard v102开发板控制OLED显示中文
转载请以链接形式注明文章来源,公众号:MicroPython玩家汇 0x00前言 之前看到一篇文章是关于TPYBoardv102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文.最近 ...
- STM32—4线SPI驱动SSD1306 OLED
文章目录 一.OLED简介 二.驱动SSD1306所需知识 1.引脚介绍 2.通信时序 3.显存GRAM 4.字库 5.SSD1306基本命令 三.代码讲解 1.相关引脚配置 2.模拟SPI通信 3. ...
- MicroPython实例之TPYBoard开发板控制OLED显示中文
0x00 前言 之前看到一篇文章是关于TPYBoard v102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文.最近利用空余时间搞定了这个实验,特此将实验过程及源码分享出来,方便以 ...
- 玩转X-CTR100 l STM32F4 l OLED显示-SSD1306无字库
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] OLED显示屏具有自发光特性,不需要背光, ...
- spi子系统之驱动SSD1306 OLED
spi子系统之驱动SSD1306 OLED 接触Linux之前,曾以为读源码可以更快的学习软件,于是前几个博客都是一边读源码一边添加注释,甚至精读到每一行代码,实际上效果并不理想,看过之后就忘记了.主 ...
- I2C子系统之驱动SSD1306 OLED
理解I2C设备驱动框架,主要围绕四个结构体去分析就容易了. struct i2c_algorithm:提供I2C协议的实现的操作,如:master_xfer实现数据收发的最基本方法. struct i ...
- 灵感手环第一步——0.96寸OLED显示实验
这算是我这个系列的第一篇博客吧.首先要解决的就是屏幕显示问题.我选择了目前新兴起的OLED显示模块. OLED(OrganicLightEmittingDiode),中文译作有机发光二极管,目前被广泛 ...
随机推荐
- VMware的NAT网络模式
参考链接:https://www.cnblogs.com/linjiaxin/p/6476480.html 图例:
- R leaflet
setRepositories()#1 chooseCRANmirror()#2 ibrary(leaflet)#学习地址:http://rstudio.github.io/leaflet/marke ...
- 带问号的括号匹配问题918C 1153C
cf里好像经常出 这些题,一般贪心是搞不了的.. 918C 问有多少子段[l,r]满足合法括号 先从左往右扫,如果问号+‘(' 数量 >= ')' 说明这段区间的 ) 是满足条件的 然后再从右往 ...
- 利用Centos服务器来搭建自己的splash,不再被安装的各种环境繁琐而担忧
Centos7.5 ----- docker ------- splash 第一步:服务器环境的配置 第二步:dcoker环境的配置 ...
- ansible的plugins
callback插件:路径 /usr/lib/python2.7/site-packages/ansible/plugins 回显输出型(stdout): stderr.py skippy.py se ...
- 解决 for xml path encode 的问题
select stuff( (select ', <' + name + '>' from sys.databases where database_id > 4 order by ...
- POJ 3280 Cheapest Palindrome (区间DP) 经典
<题目链接> 题目大意: 一个由小写字母组成的字符串,给出字符的种类,以及字符串的长度,再给出添加每个字符和删除每个字符的代价,问你要使这个字符串变成回文串的最小代价. 解题分析: 一道区 ...
- 嵌套For循环性能优化案例
转自:http://cgs1999.iteye.com/blog/1596671 涨知识~~~ 1 案例描述 某日,在JavaEye上看到一道面试题,题目是这样的:请对以下的代码进行优化 for (i ...
- jmeter--001.介绍、下载与安装
一.介绍 使用场景: -1.接口测试 -2.性能测试 .... 特点: -1.开源.轻量级.插件化 -2.适合自动化和持续集成 二.下载(Windows环境) 下载网址:http://jmeter.a ...
- Mac_IntelliJ IDEA For Mac 快捷键
Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ...