micropython oled中文_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完美版,参数设置如下图:

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy84MTg4MzgvMjAxOTAyLzgxODgzOC0yMDE5MDIyNjIwNDM0NzkxMi05ODM2NDc2NzcucG5n.jpg

生成字节数组:

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.显示效果

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy84MTg4MzgvMjAxOTAyLzgxODgzOC0yMDE5MDIyNjIwNDkyMzMzNi0xMTA0OTk5NjgzLnBuZw==.jpg

MicroPython之TPYBoard v102开发板控制OLED显示中文

转载请以链接形式注明文章来源,公众号:MicroPython玩家汇 0x00前言 之前看到一篇文章是关于TPYBoardv102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文.最近 ...

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&period;96寸OLED显示实验

这算是我这个系列的第一篇博客吧.首先要解决的就是屏幕显示问题.我选择了目前新兴起的OLED显示模块. OLED(OrganicLightEmittingDiode),中文译作有机发光二极管,目前被广泛 ...

2&period;数码相框-编码&lpar;ASCII&sol;GB2312&sol;Unicode&rpar;介绍&comma;并使LCD显示汉字字符&lpar;2&rpar;

在上章-学习了数码相框的框架分析(1)了 本章主要内容如下: 1)熟悉ASCII/GB2312/Unicode编码 2)写应用程序,使LCD显示汉字和字符 大家都知道,数据传输的是二进制,而字符和汉字 ...

Linux内核调用SPI平台级驱动&lowbar;实现OLED的显示功能

Linux内核调用SPI驱动_实现OLED显示功能 0. 导语 进入Linux的世界,发现真的是无比的有趣,也发现搞Linux驱动从底层嵌入式搞起真的是很有益处.我们在单片机.DSP这些无操作系统的裸 ...

使用Tslib在触摸屏上显示汉字【转】

转自:http://www.latelee.org/embedded-linux/use-tslib-to-display-chinese-character.html 终于到了在触摸屏上显示汉字了, ...

随机推荐

SQLite浅析

对于iOS工程师有一道常考的面试题,即iOS数据存储的方式 标答如下: Plist(NSArray\NSDictionary) Preference (偏好设置\NSUserDefaults) NSC ...

无法import的原因&lpar;ImportError&colon; No module named &ast;&ast;&ast;&ast;&ast;&rpar;

python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用. 如果想 ...

poj 2007 Scrambled Polygon(极角排序)

http://poj.org/problem?id=2007 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6701   A ...

iOS 关于时间戳的一些细节

最近遇到一个bug,在iPhone上获取当前的时间戳,没有问题,而用iPad来测试的时候,出现了时间戳不对.当时的代码 (需要精确到毫秒,所以*1000) NSTimeInterval t = [[N ...

No&period;2小白的HTML&plus;CSS心得篇

今天要强调的重点是分析把握好HTML标签的两个方面: 1.标签的用途(用途指的是用来干什么,有什么作用)在专业术语叫作 语义化. 举个列子:
换行的作用 见了它就明白它的语义就是 ...

SqlServer发送邮件,定时作业

今天偶然研究了一下sqlserver发送邮件的功能,之前听说过可以发,但是一直没尝试过,只是用C#写后台程序的方式来发邮件. 现在又多了一种发送邮件的途径. 大致的步骤如下: 1.配置sqlserve ...

&lbrack;SHOI2008&rsqb;循环的债务

Description Alice.Bob和Cynthia总是为他们之间混乱的债务而烦恼,终于有一天,他们决定坐下来一起解决这个问题. 不过,鉴别钞票的真伪是一件很麻烦的事情,于是他们决定要在清还债务 ...

Hibernate之综合问题

n + 1问题 query.iterate()方式返回迭代查询会开始发出一条语句:查询所有记录ID语句 Hibernate: select student0_.id ascol_0_0_from t_ ...

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值