对代码的一些解析,我是菜鸟加外行,请大家指教
首先这个屏幕分辨率是128*64,点阵显示方式从def text_6x8看是从左到右,横坐标扫描到128后就转下一行的起点即x=0,y+1.
x > 120而不是 x > 126,我认为是为了避免超出范围?
然后这些显示屏的显示方式是开辟一个缓冲区,有些是在显示屏的控制器,有些是mcu的内存,还有些是两者都有。缓冲区的大小和屏幕一样128*64,即对应屏幕每个点。
通过改写缓冲区,把改写结果送到硬件接口,就可以显示字符。
接下来就是从font里寻找对应的字符位置,看要改写那些内容。这部分代码看不明白
def char_6x8(self, x=0, y=0, ch=32, c=1):
try:
ind = x + y * 128 + 1
n = (min(127, max(ord(ch), 32)) -32)*5
for i in range(5):
screen[ind+i] = Font_6x8[n+i] if c else Font_6x8[n+i]^0xFF
screen[ind+5] = 0 if c else 0xFF
self.set_pos(x, y)
self.i2c.writeto(self.ADDR, b'\x40' + screen[ind:ind + 6])
except:
return
def text_6x8(self, x=0, y=0, s='', c=1, wrap=0):
for i in range(len(s)):
self.char(x, y, s[i], c)
x += 6
if wrap and x > 120:
x = 0
y += 1
|