求助:microbit控制1602LCD液晶显示屏
发表于 : 2020年 7月 4日 11:29
采用microbit控制1602LCD,但是没有输出,请各位大佬帮忙检查一下错误
from microbit import *
LCD_I2C_ADDR = 39
class LCD1620():
def __init__(self):
self.buf = bytearray(1)
self.BK = 0x08
self.RS = 0x00
self.E = 0x04
self.setcmd(0x33)
sleep(5)
self.send(0x30)
sleep(5)
self.send(0x20)
sleep(5)
self.setcmd(0x28)
self.setcmd(0x0C)
self.setcmd(0x06)
self.setcmd(0x01)
self.version = '1.0'
def setReg(self, dat):
self.buf[0] = dat
i2c.write(LCD_I2C_ADDR, self.buf)
sleep(1)
def send(self, dat):
d = dat & 0xF0
d |= self.BK
d |= self.RS
self.setReg(d)
self.setReg(d | 0x04)
self.setReg(d)
def setcmd(self, cmd):
self.RS = 0
self.send(cmd)
self.send(cmd << 4)
def setdat(self, dat):
self.RS = 1
self.send(dat)
self.send(dat << 4)
def clear(self):
self.setcmd(1)
def backlight(self, on):
if on:
self.BK = 0x08
else:
self.BK = 0
self.setdat(0)
def on(self):
self.setcmd(0x0C)
def off(self):
self.setcmd(0x08)
def char(self, ch, x=-1, y=0):
if x >= 0:
a = 0x80
if y > 0:
a = 0xC0
a += x
self.setcmd(a)
self.setdat(ch)
def puts(self, s, x=0, y=0):
if len(s) > 0:
self.char(ord(s[0]), x, y)
for i in range(1, len(s)):
self.char(ord(s))
i = LCD1620()
i.puts("Hello microbit!")
from microbit import *
LCD_I2C_ADDR = 39
class LCD1620():
def __init__(self):
self.buf = bytearray(1)
self.BK = 0x08
self.RS = 0x00
self.E = 0x04
self.setcmd(0x33)
sleep(5)
self.send(0x30)
sleep(5)
self.send(0x20)
sleep(5)
self.setcmd(0x28)
self.setcmd(0x0C)
self.setcmd(0x06)
self.setcmd(0x01)
self.version = '1.0'
def setReg(self, dat):
self.buf[0] = dat
i2c.write(LCD_I2C_ADDR, self.buf)
sleep(1)
def send(self, dat):
d = dat & 0xF0
d |= self.BK
d |= self.RS
self.setReg(d)
self.setReg(d | 0x04)
self.setReg(d)
def setcmd(self, cmd):
self.RS = 0
self.send(cmd)
self.send(cmd << 4)
def setdat(self, dat):
self.RS = 1
self.send(dat)
self.send(dat << 4)
def clear(self):
self.setcmd(1)
def backlight(self, on):
if on:
self.BK = 0x08
else:
self.BK = 0
self.setdat(0)
def on(self):
self.setcmd(0x0C)
def off(self):
self.setcmd(0x08)
def char(self, ch, x=-1, y=0):
if x >= 0:
a = 0x80
if y > 0:
a = 0xC0
a += x
self.setcmd(a)
self.setdat(ch)
def puts(self, s, x=0, y=0):
if len(s) > 0:
self.char(ord(s[0]), x, y)
for i in range(1, len(s)):
self.char(ord(s))
i = LCD1620()
i.puts("Hello microbit!")