Skip to content

SSD1306 模块

模块介绍

SSD1306 OLED 显示屏驱动类,支持 I2C 接口,继承自 framebuf.FrameBuffer,提供文字显示、图形绘制等功能。适用于 128x64、128x32 等常见尺寸的 OLED 显示屏。

硬件引脚说明

引脚名称全称/含义接线颜色功能描述
SCLSerial Clock/时钟黄色I2C 时钟线(需支持 I2C 功能)
SDASerial Data/数据绿色I2C 数据线(需支持 I2C 功能)
VCCVoltage/电源红色电源电压输入(3.3V 或 5V,取决于模块)
GNDGround/地线黑色接地引脚,完成电路回路

初始化参数

参数类型默认值说明
widthint屏幕宽度(像素,通常为 128)
heightint屏幕高度(像素,通常为 64 或 32)
i2cI2CI2C 接口对象(需先初始化)
addrint0x3CI2C 设备地址(通常为 0x3C 或 0x3D)
external_vccboolFalse是否使用外部电源(影响电荷泵设置)

导入和实例创建

python
from machine import I2C, Pin
from ssd1306 import SSD1306

# 初始化 I2C 接口
i2c = I2C(1, scl=Pin(22), sda=Pin(21), freq=115200)

# 初始化 OLED 屏幕(128x64)
screen = SSD1306(128, 64, i2c)

核心属性方法

属性或方法参数返回类型说明
widthint只读属性:屏幕宽度(像素)
heightint只读属性:屏幕高度(像素)
show()None将缓冲区内容显示到屏幕
fill()color (int 0/1)None填充整个屏幕(0=黑色,1=白色)
pixel()x (int), y (int), color (int 0/1)None设置单个像素点(0=黑色,1=白色)
text()string (str), x (int), y (int), color (int 1)None显示文字(x, y 为起始坐标,color=1 显示)
line()x1 (int), y1 (int), x2 (int), y2 (int), color (int)None绘制直线
rect()x (int), y (int), w (int), h (int), color (int)None绘制矩形(空心)
fill_rect()x (int), y (int), w (int), h (int), color (int)None绘制填充矩形
poweron()None打开屏幕显示
poweroff()None关闭屏幕显示
contrast()contrast (int 0~255)None设置对比度
invert()invert (bool)None反转显示(True=反转,False=正常)

使用示例

基本文字显示

python
from machine import I2C, Pin
from ssd1306 import SSD1306

# 初始化 I2C 接口
i2c = I2C(1, scl=Pin(22), sda=Pin(21), freq=115200)

# 初始化 OLED 屏幕(128x64)
screen = SSD1306(128, 64, i2c)

# 显示文字
screen.text("Hello, World!", 0, 0, 1)
screen.text("OLED Display", 0, 16, 1)
screen.show()  # 刷新显示

图形绘制

python
from machine import I2C, Pin
from ssd1306 import SSD1306

# 初始化 I2C 接口和屏幕
i2c = I2C(1, scl=Pin(22), sda=Pin(21), freq=115200)
screen = SSD1306(128, 64, i2c)

# 清屏
screen.fill(0)

# 绘制图形
screen.rect(10, 10, 50, 30, 1)        # 空心矩形
screen.fill_rect(70, 10, 50, 30, 1)    # 填充矩形
screen.line(0, 0, 127, 63, 1)          # 对角线
screen.pixel(64, 32, 1)                # 单个像素点
screen.show()  # 刷新显示

屏幕控制

python
from machine import I2C, Pin
from ssd1306 import SSD1306

# 初始化 I2C 接口和屏幕
i2c = I2C(1, scl=Pin(22), sda=Pin(21), freq=115200)
screen = SSD1306(128, 64, i2c)

# 显示内容
screen.text("Contrast Test", 0, 0, 1)
screen.show()

# 设置对比度
screen.contrast(0)    # 最低对比度
screen.contrast(255)  # 最高对比度
screen.contrast(128)  # 中等对比度

# 反转显示
screen.invert(True)

# 关闭/打开屏幕
screen.poweroff()
screen.poweron()

注意事项

硬件接口要求

  • 需先初始化 I2C 接口,确保 SCL 和 SDA 引脚支持 I2C 功能
  • I2C 地址通常为 0x3C 或 0x3D,可通过 I2C 扫描命令确认

显示更新

修改缓冲区后必须调用 show() 方法才能将内容显示到屏幕

坐标系统

屏幕左上角为 (0, 0),x 轴向右递增,y 轴向下递增

功能特性

  • text() 方法使用内置字体,支持标准 ASCII 字符
  • 继承自 framebuf.FrameBuffer,支持所有 framebuf 图形绘制方法
  • 支持 128x64 和 128x32 等常见尺寸的 OLED 显示屏