from machine import Pin, SoftI2C
import ssd1306
import time
# 1. 汉字点阵数据生成(需要PCtoLCD等工具生成)
# 以下为示例数据(实际使用时需要用真实字模替换)
# 格式:16x16像素,纵向取模,字节倒序
zhang = [
0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x24,0x7F,0xFE,0x08,0x20,0x0A,0x20,0x0C,0x20,
0x18,0x20,0x68,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x00,0x00] # 示例"张"字模
jian = [
0x00,0x00,0x7F,0xFC,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,
0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x7F,0xFC,0x00,0x00,0x00,0x00] # 示例"建"字模
ming = [
0x00,0x00,0x21,0x08,0x11,0x10,0x01,0x00,0xFF,0xFE,0x02,0x40,0x04,0x20,0x1F,0xF8,
0xE0,0x07,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xFF,0xFE,0x00,0x00,0x00,0x00] # 示例"明"字模
# 2. I2C初始化(根据实际接线修改引脚)
i2c = SoftI2C(scl=Pin(22), sda=Pin(21)) # 常用ESP32引脚:scl=22, sda=21
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
def show_chinese(char_data, x, y):
"""显示一个16x16汉字"""
oled.fill_rect(x, y, 16, 16, 0) # 先清除区域
for row in range(16):
for col in range(2):
byte = char_data[row * 2 + col]
for bit in range(8):
if byte & (0x80 >> bit):
oled.pixel(x + col*8 + bit, y + row, 1)
# 3. 显示中文
oled.fill(0) # 清屏
show_chinese(zhang, 32, 24) # X坐标,Y坐标
show_chinese(jian, 64, 24)
show_chinese(ming, 96, 24)
oled.show()
# 保持显示
# time.sleep(10)
# oled.poweroff()