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.
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 6porFOR X = 0 TO 16para que el texto salga completamente de la pantalla hacia la derecha. - Ajusta el rango de
X1segú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 100a 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.
Publicar un comentario
¡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.