from machine import Pin
from time import sleep_ms
# Pin assignments
RS = Pin(0, Pin.OUT)
EN = Pin(1, Pin.OUT)
D4 = Pin(2, Pin.OUT)
D5 = Pin(3, Pin.OUT)
D6 = Pin(4, Pin.OUT)
D7 = Pin(5, Pin.OUT)
def pulse_en():
EN.high()
sleep_ms(1)
EN.low()
sleep_ms(1)
def send_nibble(val):
D4.value((val >> 0) & 1)
D5.value((val >> 1) & 1)
D6.value((val >> 2) & 1)
D7.value((val >> 3) & 1)
pulse_en()
def send_byte(val, mode):
RS.value(mode)
send_nibble(val >> 4)
send_nibble(val & 0x0F)
def cmd(val):
send_byte(val, 0)
sleep_ms(2)
def char(val):
send_byte(val, 1)
def init_lcd():
sleep_ms(50)
send_nibble(0x03)
sleep_ms(5)
send_nibble(0x03)
sleep_ms(1)
send_nibble(0x03)
send_nibble(0x02)
cmd(0x28) # 4-bit, 2 line
cmd(0x0C) # display on
cmd(0x06) # entry mode
cmd(0x01) # clear
sleep_ms(2)
def print_str(s):
for c in s:
char(ord(c))
init_lcd()
print_str("Hello Wokwi!")