Files
Navigathor/lcd1602_backup.py

51 lines
1.3 KiB
Python

import time
from machine import Pin
class LCD1602:
def __init__(self, rs, en, d4, d5, d6, d7):
self.rs = Pin(rs, Pin.OUT)
self.en = Pin(en, Pin.OUT)
self.data_pins = [
Pin(d4, Pin.OUT),
Pin(d5, Pin.OUT),
Pin(d6, Pin.OUT),
Pin(d7, Pin.OUT)
]
self._init_lcd()
def _pulse(self):
self.en.value(1)
time.sleep_us(1)
self.en.value(0)
time.sleep_us(100)
def _send(self, value, mode=0):
self.rs.value(mode)
for i in range(2):
for j in range(4):
self.data_pins[j].value((value >> (4 * (1 - i) + j)) & 0x01)
self._pulse()
time.sleep_ms(2)
def _init_lcd(self):
time.sleep_ms(20)
self._send(0x33) # init
self._send(0x32) # 4-bit mode
self._send(0x28) # 2 lines, 5x7 matrix
self._send(0x0C) # display on, cursor off
self._send(0x06) # entry mode
self.clear()
def clear(self):
self._send(0x01)
time.sleep_ms(2)
def putstr(self, string):
for char in string:
self._send(ord(char), 1)
def move_to(self, col, row):
addr = col + (0x40 if row else 0x00)
self._send(0x80 | addr)