from machine import Pin
import time
trig_pin = Pin(15, Pin.OUT) # Broche GP15 de la Pico
echo_pin = Pin(14, Pin.IN) # Broche GP14 de la Pico
Data_Pin = Pin(5, Pin.OUT)
Clk_Pin = Pin(1, Pin.OUT)
Enable_Pin = Pin(2, Pin.OUT)
def Write_LCD_Nibble(N)
Enable_Pin = 1;
# ****** Write RS *********
Clk_Pin = 0
Data_Pin = RS
Clk_Pin = 1
Clk_Pin = 0
# ****** End RS Write
# Shift in 4 bits
Mask = 8
for (t=0; t<4; t++)
Flag = N & Mask
if(Flag==0) Data_Pin = 0
else Data_Pin = 1
Clk_Pin = 1
Clk_Pin = 0
Mask = Mask >> 1
# One more clock because SC and ST clks are tied
Clk_Pin = 1
Clk_Pin = 0
Data_Pin = 0
Enable_Pin = 0
Enable_Pin = 1
def Write_LCD_Data(D)
RS = 1 #It is Data, not command
Low_Nibble = D & 15
High_Nibble = D/16
Write_LCD_Nibble(High_Nibble)
Write_LCD_Nibble(Low_Nibble)
def Write_LCD_Cmd(C)
RS = 0 #It is command, not data
Low_Nibble = C & 15
High_Nibble = C/16
Write_LCD_Nibble(High_Nibble)
Write_LCD_Nibble(Low_Nibble)
def Initialize_LCD()
Delay_50ms()
Write_LCD_Cmd(0x20) # Wake-Up Sequence
Delay_50ms()
Write_LCD_Cmd(0x20)
Delay_50ms()
Write_LCD_Cmd(0x20)
Delay_50ms()
Write_LCD_Cmd(0x28) # 4-bits, 2 lines, 5x7 font
Delay_50ms()
Write_LCD_Cmd(0x0C) # Display ON, No cursors
Delay_50ms()
Write_LCD_Cmd(0x06) # Entry mode- Auto-increment, No Display shifting
Delay_50ms()
Write_LCD_Cmd(0x01)
Delay_50ms()
def Position_LCD(x, y)
temp = 127 + y
if (x == 2) temp = temp + 64
Write_LCD_Cmd(temp)
def Write_LCD_Text(StrData)
q = strlen(StrData)
for (p = 0; p<q; p++)
<br=""> temp = StrData[p]
Write_LCD_Data(temp)
Message1 = "3-Wire LCD"
Message2 = "using 74HC595"
if __name__ == '__main__':
CMCON0 = 7 #Disable Comparators
TRISIO = 0b00001000 #All Outputs except GP3
ANSEL = 0x00 #No analog i/p
Initialize_LCD()
while True:
Position_LCD(1,4)
Write_LCD_Text(Message1)
Position_LCD(2,2)
Write_LCD_Text(Message2)
Delay_ms(1500)
Write_LCD_Cmd(0x01) #Clear LCD
delay_ms(1000)