TPYBoard v102 连接OLED SSD1306显示中文

一、准备工作

1、oled ssd1306已经能连上v102,并且正确显示英文。

     如有问题,请参考上一篇:https://blog.csdn.net/michaelzhouh/article/details/103182133

2、下载官网的代码

      https://github.com/TPYBoard/TPYBoard-v102

     “32.学习OLED显示中文”

     因为我是用的4针脚IIC接口的显示屏,同理main.py修改

# I2C connected to Y9, Y10 (I2C bus 2)
display = SSD1306(pinout={'scl': 'Y9',
                          'sda': 'Y10'},
                  height=64,
                  external_vcc=False)

     经过1和2,应该能正常执行,并显示示例的中文了。下面是扩展中文需要用到的。

3、中文转16进制utf8(临时用php写的,一看就明白不做过多介绍)

      https://www.mhw666.com/tool/to_utf8?s=我爱你祖国

4、字模提取工具下载

      http://tpyboard.com/download/tool/187.html

二、新字的添加步骤

打开官方的font.py最后,能看到“我爱你祖国”的中文,照着做

字模工具设置(非常重要)

下面放上我测试的font.py和main.py:

# font.py新增的中文部分
byte2 = {
    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,
    ],#我
    0xe788b1:[
        0x00,0x01,0x7E,0x22,0x11,0x7F,0x42,0x82,0x7F,0x04,0x07,0x0A,0x11,0x20,0x43,0x1C,
        0x08,0xFC,0x10,0x10,0x20,0xFE,0x02,0x04,0xF8,0x00,0xF0,0x10,0x20,0xC0,0x30,0x0E,
    ],#爱
    0xe4bda0:[
        0x08,0x08,0x08,0x11,0x11,0x32,0x34,0x50,0x91,0x11,0x12,0x12,0x14,0x10,0x10,0x10,
        0x80,0x80,0x80,0xFE,0x02,0x04,0x20,0x20,0x28,0x24,0x24,0x22,0x22,0x20,0xA0,0x40,
    ],#你
    0xe7a596:[
        0x20,0x11,0x11,0xF9,0x09,0x11,0x11,0x39,0x55,0x95,0x11,0x11,0x11,0x11,0x17,0x10,
        0x00,0xF8,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0xFE,0x00
    ],#祖
    0xe59bbd:[
        0x00,0x7F,0x40,0x40,0x5F,0x41,0x41,0x4F,0x41,0x41,0x41,0x5F,0x40,0x40,0x7F,0x40,
        0x00,0xFC,0x04,0x04,0xF4,0x04,0x04,0xE4,0x04,0x44,0x24,0xF4,0x04,0x04,0xFC,0x04
    ],#国
    # 不忘初心
    0xe4b88d:[
        0x00,0x7F,0x00,0x00,0x01,0x01,0x03,0x05,0x09,0x11,0x21,0x41,0x81,0x01,0x01,0x01,
        0x00,0xFC,0x80,0x80,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x04,0x00,0x00,0x00,0x00
    ],
    0xe5bf98:[
        0x02,0x01,0xFF,0x10,0x10,0x10,0x10,0x1F,0x00,0x01,0x08,0x48,0x48,0x48,0x87,0x00,
        0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x88,0x84,0x12,0x12,0xF0,0x00
    ],
    0xe5889d:[
        0x20,0x10,0x01,0xFC,0x08,0x10,0x10,0x34,0x58,0x94,0x14,0x10,0x10,0x11,0x12,0x14,
        0x00,0x00,0xFC,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x04,0x28,0x10
    ],
    0xe5bf83:[
        0x00,0x02,0x01,0x00,0x00,0x04,0x04,0x24,0x24,0x24,0x44,0x44,0x84,0x04,0x03,0x00,
        0x00,0x00,0x00,0x80,0x80,0x00,0x08,0x04,0x04,0x02,0x02,0x12,0x10,0x10,0xF0,0x00
    ],
    # 牢记使命
    0xe789a2:[
        0x02,0x01,0x7F,0x40,0x81,0x11,0x11,0x1F,0x21,0x41,0x01,0xFF,0x01,0x01,0x01,0x01,
        0x00,0x00,0xFE,0x02,0x04,0x00,0x00,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00
    ],
    0xe8aeb0:[
        0x00,0x20,0x11,0x10,0x00,0x00,0xF0,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x10,0x00,
        0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x08,0x00,0x00,0x00,0x02,0x02,0xFE,0x00
    ],
    0xe4bdbf:[
        0x10,0x10,0x1F,0x20,0x20,0x67,0x64,0xA4,0x27,0x20,0x22,0x21,0x20,0x21,0x22,0x2C,
        0x40,0x40,0xFE,0x40,0x40,0xFC,0x44,0x44,0xFC,0x40,0x40,0x40,0x80,0x40,0x30,0x0E
    ],
    0xe591bd:[
        0x01,0x01,0x02,0x04,0x08,0x37,0xC0,0x00,0x3E,0x22,0x22,0x22,0x3E,0x22,0x00,0x00,
        0x00,0x00,0x80,0x40,0x20,0xD8,0x06,0x00,0xF8,0x88,0x88,0x88,0xA8,0x90,0x80,0x80
    ]
}
import pyb
from ssd1306_lib import SSD1306
import font

led = pyb.Pin('Y8', pyb.Pin.OUT_PP)

# I2C connected to Y9, Y10 (I2C bus 2)
display = SSD1306(pinout={'scl': 'Y9',
                          'sda': 'Y10'},
                  height=64,
                  external_vcc=False)

display.poweron()
display.init_display()
arr = ['我爱你祖国', '不忘初心', '牢记使命']
while True:
    for s in arr:
        display.clear()
        display.draw_text(8,8,'Welcome to China',)
        display.draw_chinese(s, 1, 3)
        display.display()
        pyb.delay(2000)

上传 + RST运行,看结果吧。

大功告成!缺点是每次新字都要去生成16进制编码 + 取模 + 修改font.py,再使用,确实很麻烦。

有没有一种完美解决中英文+符号的混合显示的解决方案呢?我想是有的,HKZ16 点阵字体,正在研究中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值