提示:博主是小白,如有不足,望海涵和指出
在单片机上练习使用OLED显示屏时,可以看到有个OLED字模库
本文用python将这些字符打印出来,代码如下(本文只适用与128*64的OLED,如果是其它OLED,借鉴思路即可):
data = [
0x00, 0xE0, 0x10, 0x88, 0x88, 0x18, 0x00, 0x00,
0x00, 0x0F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00
]
line = []
data_begin = data[8:]
data_end = data[:8]
for row in range(8):
for byte in data_end:
# 从低位低位到高位提取bit
bit = (byte >> (row)) & 0x01
line.append('████' if bit else ' ')
for row in range(8):
for byte in data_begin:
# 从低位到高位提取bit
bit = (byte >> (row)) & 0x01
line.append('████' if bit else ' ')
for i in range(16):
for j in range(8):
print(line[i*8+j],end="")
print()
输出效果:
使用方法:将代码中的字符数组替换为字模库中字符数组即可
实现思路:
data数组中保存的16进制数分为上面8个和下面8个十六进制数
进制转换:在OLED显示时,十六进制是转换为二进制显示的,每一个十六进制代表着8行1列的区域,例如:
data = [ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ]
当data等于上面的数据时,显示如下,其中0xFF代表的二进制数为1111_1111
每一个16进制读取方式要按照从低位到高位,例如0xE0=1110_0000,在读取时我们先读最低位的0,而不是最高位的1
读取方式:先读上半部分每个16进制数的最低位,依次到上半部分每个16进制数最高位。下半部分同理,先读最低位,再读最高位,最后使用python将其输出即可