MicroPython-On-ESP8266——OLED屏幕的使用方法(含显示中文)

MicroPython-On-ESP8266——oled屏幕的使用方法

1. OLED屏幕介绍

1.1. I2C协议简述

I2C是一种串行总线,用来连接多个集成电路设备或芯片,它的连接方式比较简单2条线连接即可,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。

通信原理是通过对SCL和SDA线高低电平时序的控制,来产生信号传递。空闲时上拉电阻拉高,保持着高电平。

想更多了解I2C相关的原理的话自行骚扰度娘。

1.2. OLED屏幕

之所以先介绍I2C总线,是因为咱们要用到的OLED显示屏幕,它就是使用的I2C总线协议来与单片机通信的。

我这里手上使用的是0.96寸的oled屏幕,是当时买第一块esp8266开发板europa时附带买的,单色屏价格便宜,能达到测试使用的目的就行。

在这里插入图片描述

这块屏的分辨率是128*64,上面分布了这么多矩阵排列的发光二极管,我们要在上面绘制线条、图案、字符甚至中文,其实就是点亮相应的像素点二极管。

至于绘制的算法,需要查看显示屏官方资料,分为横向扫描法和纵向扫描法,这里也不展开了。

2. 与屏幕通信

2.1. Micropython中使用I2C总线的方式

前面咱们在学习温湿度计的时候,当时已经使用过I2C总线。

Micropython官方 提供的I2C总线的基本通信代码:

from machine import Pin, I2C

# construct an I2C bus
i2c = I2C(scl=Pin(5), sda=Pin(4), freq=100000)

i2c.readfrom(0x3a, 4)   # read 4 bytes from slave device with address 0x3a
i2c.writeto(0x3a, '12') # write '12' to slave device with address 0x3a

buf = bytearray(10)     # create a buffer with 10 bytes
i2c.writeto(0x3a, buf)  # write the given buffer to the slave

此处是把两个GPIO管(5和4)脚当作SCL和SDA线来使用,I2C的通信由这两个管脚完成。I2C接线是4条,另外两条是电源正负。

2.2. OLED驱动库引入

0.96寸的这款oled屏幕,官方提供了ssd1306库作为驱动,这个库底层是有多种总线通信的实现方式的,我们使用的I2C总线,所以需要引入下面的库:

from ssd1306 import SSD1306_I2C

如果编译的mpy固件没有包含该库时,可以从mcropython官网上下载ssd1306库

2.3. 简单显示示例

2.3.1. 查找屏幕从机地址
from machine import I2C, Pin
i2c = I2C(scl=Pin(5), sda=Pin(4))  # C1接口对应的SCL=IO5, SDA=IO4
print(i2c.scan())

通过REPL看到日志打印出[60] 或 [61]之类,证明已找到屏幕的从机地址。

2.3.2. 根据从机地址初始驱动并显示字符
from machine import I2C, Pin
from ssd1306 import SSD1306_I2C
i2c = I2C(scl=Pin(5), sda=Pin(4))
oled = SSD1306_I2C(128, 64, i2c, addr=61)  # 创建OLED对象,addr地址需要参考上面scan输出的地址
oled.text('Hello World', 0, 20)  # 在屏幕(0, 20)坐标上显示文字“Hello World”
oled.show()  # 刷新屏幕

这里需要注意的是在初始化ssd1306对象时,要准确地指定分辨率,这样才好在后面指定不同字符的显示位置。

ssd1306继承自framebuffer类,绘制内容时是将定义好的缓存对象刷新(show)到屏幕上。

附:ssd1306的功能函数列表:

  • framebuf绘制图形
    • fill 填充整个缓存区为
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值