▷ Imprimir y Desplazar Texto en LCD 16x2 con PIC 16F628A (MicroCode)

Aprende a imprimir texto en un LCD 16x2 y desplazarlo suavemente hacia la derecha e izquierda utilizando un microcontrolador PIC 16F628A programado en MicroCode. Este proyecto es ideal para crear mensajes dinámicos, banners y pantallas informativas.

📋 Materiales

Componentes Necesarios

  • PIC 16F628A
  • LCD 16x2 en modo 4 bits
  • Cristal u oscilador según configuración del PIC (opcional en simulación)
  • Potenciómetro para contraste del LCD
  • Fuente de 5V y protoboard/cables

🔌 Diagrama de Conexiones

El siguiente diagrama muestra cómo se conecta el PIC16F628A al LCD 16x2 en modo de 4 bits, utilizando el PORTB para las señales de datos y control del display.

Diagrama de conexiones PIC16F628A con LCD 16x2 para desplazar texto

Conexión PIC - LCD (modo 4 bits)

Según las directivas del código, el LCD se conecta al PORTB del PIC16F628A de la siguiente manera:

DEFINE LCD_DREG  PORTB   ; Puerto de datos (D4-D7)
DEFINE LCD_DBIT  4       ; D4 en RB4
DEFINE LCD_RSREG PORTB   ; RS en PORTB
DEFINE LCD_RSBIT 2       ; RS en RB2
DEFINE LCD_EREG  PORTB   ; E en PORTB
DEFINE LCD_EBIT  3       ; E en RB3

💻 Código Completo (MicroCode)

El siguiente programa imprime dos líneas de texto en el LCD y las desplaza hacia la derecha y luego hacia la izquierda en forma continua:

; Definimos dos variables para el desplazamiento
X  VAR BYTE
X1 VAR BYTE

; Definimos en qué pines del PIC irá conectado el LCD
DEFINE LCD_DREG  PORTB 
DEFINE LCD_DBIT  4   
DEFINE LCD_RSREG PORTB 
DEFINE LCD_RSBIT 2 
DEFINE LCD_EREG  PORTB 
DEFINE LCD_EBIT  3 

; Abrimos el ciclo principal
ciclo: 

  ; Desplazamiento del texto hacia la derecha
  ; Este ciclo FOR va de 0 a 6. 
  ; Si queremos que todo el texto desaparezca del LCD al desplazarse hacia la izquierda,
  ; podemos usar hasta 16 en lugar de 6.
  FOR X = 0 TO 6 

    LCDOUT $FE, 1          ; Limpia la pantalla y coloca el cursor al inicio
    ; Desplazamiento del texto hacia la derecha en la primera fila
    LCDOUT $FE, $80 + X, "Hola Mundo" 
    ; Desplazamiento del texto hacia la derecha en la segunda fila
    LCDOUT $FE, $C0 + X, "1234567890" 
    PAUSE 100

  NEXT 

  ; Desplazamiento del texto hacia la izquierda
  ; Usamos otra variable (X1) para el ciclo, y vamos disminuyendo X
  FOR X1 = 0 TO 5 

    ; En este momento X = 6, por lo que restamos 1 en cada iteración
    ; para que el texto se desplace hacia la izquierda.
    X = X - 1 

    LCDOUT $FE, 1          ; Limpia la pantalla
    LCDOUT $FE, $80 + X, "Hola Mundo" 
    LCDOUT $FE, $C0 + X, "1234567890" 
    PAUSE 100

  NEXT 

  ; Cerramos el ciclo y repetimos indefinidamente
GOTO ciclo

🔍 Explicación del Funcionamiento

Elemento Función Detalle
X y X1 Control de desplazamiento Definen cuántas posiciones se desplaza el texto en cada ciclo FOR.
$80 + X Dirección DDRAM fila 1 Posiciona el cursor en la primera línea, desplazando el inicio del texto.
$C0 + X Dirección DDRAM fila 2 Posiciona el cursor en la segunda línea, usando el mismo desplazamiento.
PAUSE 100 Velocidad de animación Controla la velocidad del desplazamiento (100ms por paso).

📐 Ajustes y Personalización

Modificar distancia de desplazamiento

  • Cambia FOR X = 0 TO 6 por FOR X = 0 TO 16 para que el texto salga completamente de la pantalla hacia la derecha.
  • Ajusta el rango de X1 según el efecto de retorno que desees.

Cambiar mensajes

  • Sustituye "Hola Mundo" por cualquier texto de hasta 16 caracteres.
  • Modifica "1234567890" por otra línea, como el nombre de tu proyecto o un contador.

⚙️ Consejos de Implementación

  • Verifica que el LCD esté correctamente inicializado y con buen contraste antes de probar el desplazamiento.
  • Si el movimiento es muy rápido, incrementa PAUSE 100 a 150 o 200.
  • Si usas otro PIC, adapta los pines en las directivas DEFINE LCD_*.
Este ejemplo es una excelente base para crear menús desplazables, mensajes de bienvenida animados o indicadores de estado en proyectos con PIC y LCD 16x2.

0/Deja un comentario/Comentarios

¡Hola! Nos alegra mucho que hayas llegado hasta aquí y que estés leyendo este artículo en Edeptec.
Este formulario es un espacio abierto para ti: puedes dejar un comentario con tus dudas, sugerencias, experiencias o simplemente tu opinión sobre el tema tratado.

» ¿Te resultó útil la información?
» ¿Tienes alguna experiencia personal que quieras compartir?
» ¿Se te ocurre algún tema que te gustaría ver en próximos artículos?

Recuerda que este espacio es para aprender y compartir, por eso te animamos a participar de manera respetuosa y constructiva. Tus comentarios pueden ayudar a otros lectores que están en el mismo camino, ya sea en electrónica, programación, deportes o tecnología.

¡Gracias por ser parte de esta comunidad de aprendizaje! Tu participación es lo que hace crecer este proyecto.