Files
mixly3/boards/default/micropython_nrf51822_microbit/build/lib/lcd1602.py
2024-07-19 10:16:00 +08:00

86 lines
1.8 KiB
Python

from microbit import *
class LCD1602():
def __init__(self, lcd_i2c_addr):
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'
self.lcd_i2c_addr=lcd_i2c_addr
def setReg(self, dat):
self.buf[0] = dat
i2c.write(self.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]))
def mixly_puts(self, s, x=1, y=1):
s = str(s)
x = x - 1
y = y - 1
self.puts(self, s, x, y)
def mixly_puts_two_lines(self, line1, line2):
line1 = str(line1)
line2 = str(line2)
self.puts(self, line1, 0, 0)
self.puts(self, line2, 0, 1)