from machine import Pin
import utime
# Definir los pines de Raspberry Pi Pico
data_pin = Pin(2, Pin.OUT) # GPIO2
clock_pin = Pin(3, Pin.OUT) # GPIO3
latch_pin = Pin(4, Pin.OUT) # GPIO4
# Función para transferir datos al SN74HC595N
def shift_out(data):
for _ in range(8):
value = (data >> 7) & 1
data_pin.value(value)
clock_pin.value(1)
clock_pin.value(0)
data = data << 1
# Función para escribir datos en el LCD1602
def lcd_write(data, is_command=True):
# Configurar el registro de desplazamiento para el comando o los datos
if is_command:
shift_out(0x80) # RS en 0 para comandos
else:
shift_out(0xC0) # RS en 1 para datos
# Transferir los datos de 4 bits más significativos
shift_out(data >> 4)
latch_pin.value(1)
latch_pin.value(0)
# Transferir los datos de 4 bits menos significativos
shift_out(data)
latch_pin.value(1)
latch_pin.value(0)
# Inicialización del LCD1602
shift_out(0x30) # Modo de 8 bits
latch_pin.value(1)
latch_pin.value(0)
utime.sleep_ms(5)
lcd_write(0x28) # Modo de 4 bits, 2 líneas, 5x8 puntos
lcd_write(0x0C) # Mostrar encendido, cursor y cursor parpadeante apagados
lcd_write(0x06) # Incremento automático del cursor
# Ejemplo de escritura en el LCD1602
lcd_write(0x01) # Limpiar pantalla
lcd_write(0x80) # Establecer el cursor en la primera línea, primera columna
lcd_write(ord('H'), False) # Escribir 'H'
lcd_write(ord('e'), False) # Escribir 'e'
lcd_write(ord('l'), False) # Escribir 'l'
lcd_write(ord('l'), False) # Escribir 'l'
lcd_write(ord('o'), False) # Escribir 'o'