Saltar al contenido
Control Automático Educación

Hola controleros y controleras, en esta entrada vamos a aprender a utilizar un LCD con PIC de forma fácil usando el PIC C Compiler. Aquí trataremos los LCD más comunes como el LCD 16×2 o el LCD 20×4, sin embargo esto puede ser extendido a cualquier LCD que tengas.

Antes que nada te hago la invitación de que veas

👉👉👉 CURSO GRATIS DE MICROCONTROLADORES PIC

👉👉👉 TODOS LOS VIDEOS EN YOUTUBE

LCD con PIC

Manejo del LCD con PIC

Existe en el compilador un driver para manejar un display de cristal líquido (LCD) de 2 líneas por 16 caracteres cada una.

El procedimiento para trabajar con el LCD 16×2 con PIC es parecido al procedimiento del teclado telefónico.

La conexión entre el LCD y el microcontrolador es la siguiente:

Conexión LCD con PIC

Los pasos que se deben seguir para manejar el LCD son:
1. Incluir en el encabezado del programa el driver para manejar el teclado.

2. Por defecto el LCD se conecta al puerto D, si se desea conectar el LCD en el puerto B  se incluye esta línea en el encabezado:

3. En el programa principal se inicializa el driver

4. Se usan las funciones del LCD que tiene implementadas el driver:

Un LCD 16×2 PIC (Mostrado en la figura al inicio) esta conformado por 16 columnas y 2 filas

Sin embargo también existen en el mercado otros tipos de LCDs como por ejemplo el LCD 20×4 PIC que tiene 20 columnas y 4 filas.

Quizas te pueda interesar ver como configurar una Pantalla LCD con Arduino.

LCD PIC – EJEMPLOS

A continuación se encuentran los 4 Ejemplos del video, donde podrás ver y descargar el código en lenguaje C y también los archivos de simulación del Proteus, para que puedas reproducirlos por ti mismo y practiques con el uso del LCD. Para tener acceso a todos estos códigos, debes compartir el contenido de este blog con cualquiera de los siguientes 3 botones, asi ayudas a que la pagina sea más conocida y contribuyes a que siga aportando mucho más contenido de interes,

Códigos

A continuación están disponibles los códigos de ejemplos vistos en los videos para descarga y reproducción de los mismos.

>> DESCARGAR CÓDIGOS Y ESQUEMA EN PROTEUS <<

Ejemplo 1 – Mensaje en el LCD

Ejemplo 2 – Animación de Desplazamiento en LCD

Ejemplo 3 – LCD y Teclado en el mismo Puerto B

Ejemplo 4 – LCD con Teclado para Contraseña

Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:

👉 Invitar a Sergio a un Café ☕️

Que esten muy bien, nos vemos en la siguiente entrada.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (20)

Hola Sergio yo de nuevo jajaj, disculpa, los códigos me funcionan bien y al compilar no me marcan ningún error, solamente que al hacer la simulación en el proteus, me aparecen errores y no me aparece ningún mensaje, creo que las conexiones las tengo mal, ya que estoy usando un pic 18f2550 y no he encontrado como conectarlo al ldc 16*2, tú no sabrás como? Saludos

Responder

Intentaste usar la definición del cristal como:
#USE DELAY(CLOCK=4000000,CRYSTAL)
En esa familia del 18F he notado que toca especificar el cristal externo.

Responder

Sii sí utilicé esa función, y también coloqué el cristal con los capacitores en los pins de osciladores, pero me sigue marcando error, y hasta en unos pins del lcd, el cuadro aparece amarillo

Responder

Pero usar ese PIC no tiene misterio, se conecta exactamente igual que mostrado en el post, solo que en el puerto B. Incluso puedes descargar los archivos del proteus, y solo basta con sustituir el pic16f887 por el pic 18f2550. Recuerda colocar el pin 1 a positivo.

Responder

Que tal Sergio! Muy buena explicación y muy buenos ejemplos, tan solo que tengo un problema, y es mío, propio de mi compilador y no sé que hacer, ya que al añadir la librería lcd.d, al compilar el programa que he hecho me marca error en la librería, que no identifica ningún “delay”, y no sé que hacer ni porqué será, espero sepas qué sucede, saludos!

Responder

Ya solucioné el problema por si a alguien más le ocurre! Lo único que tuve que hacer fue colocar el #include al final del encabezado y con eso ya funcionó correctamente jajaja

Responder

Profesor Sergio, una pregunta lo intento simular con el pic 16f628a y tengo un problema, el cual cociste en que el pic no logra activar las resistencias en pull-ups al momento de simularlo en proteus, lo intente con otros pics y tampoco funciona, noce que registro tenga que linea de código deba aumentar.

Responder

Puedes probar poner:

port_b_pullups(0xFF);
delay_us(10);

O quizas también sirva:

port_b_pullups(TRUE);
delay_us(10);

Responder

Es posible conectar el teclado4x4 y LCD solo en el puerto en el puerto D?

Responder

Si es posible, pero debes colocar las resistencias Pull-Up fisicamente en el puerto D, ya que internamente en el PIC estas resistencias solo estan en el puerto B.

Responder

Sergio, ante todo un saludo..
Quisiera pedirte ayuda porque me esta ocurriendo un problema que me tiene loco.
Hasta el momento no he tenido problemas al realizar los programas, pero el ejercicio 3 no encuentro manera de que funcione… Descargue tu contenido para utilizar tu código del ejercicio 3 y tu plantilla de proteus y funcionan PERO, si abro tu código en ccs y lo compilo (sin modificare nada a tu código) la simulación simplemente no funciona, no hace nada… Pareciera que el archivo .HEX generado desde mi programa no funciona para este ejercicio, pero si utilizo el .HEX que descargue de esta pagina si, no entiendo que esta pasando. Podrias ayudarme por favor?

Responder

Hola Pedro, no se a que pueda deberse ese problema. Los otros ejemplos de funcionan bien? Quizas sea la version del compilador

Responder

Saludos antes que nada Sergio, me ha servido mucho tu curso pero tengo el mismo problema que Pedro no me funciona de ninguna manera, podría saber ¿que versión del compilador estás ocupando?

Responder

Hola Dulce, he modificado el código del Ejemplo 3 y ahora se encuentra actualizado y funcional. Realmente lo compilé de nuevo y parecia que en las versiones actuales del compilador no rodaba, reestructuré la programación y ahora funciona bien. Descargalo de nuevo. Saludos!!

Responder

Saludos Sergio, tengo unas duda con el ejercicio 3.
-La primera: Porque en el encabezado del código configuramos el puerto C si luego no lo usamos o conectamos en la simulación?
-La segunda: Porque cuando introduzco un valor por el teclado telefónico, este se muestra en la LCD uno al lado del otro en vez de sobrescribirse. Lo pregunto porque en ningún momento veo que se este cambiando la coordenada. Eso acaso lo hace de forma automática? no se si me doy a explicar

Responder

Hola Pedro.
1. Puedes borrar las lineas de la configuración del Puerto C, eso no se esta usando. Seguramente ese programa lo hice sobre un programa antiguo que tenia.
2. Al usar las instrucciones del LCD automaticamente se desplaza hacia la otra linea. Eso lo hace la libreria por defecto.

Responder

Sergio C mencionarme el deposito de 2 dólares para contribuir a la causa de la educación, en que banco en Lima – Perú
Saludos cordiales

Responder

Hola Alipio gracias por tu interés en ayudar en este programa de educación. El único medio de pago para la doncación es através de PayPal, que recibe en la mayoria de paises porque yo no tengo banco en Lima. Saludos y muchos éxitos.

Responder

sALUDOS amigo
que curioso en el ejemplo 1 configuras el puerto como salida.
en el dos no configuras el puerto como nada.
y en el ejercicio 3 se debe poner el puerto como salida.

ahora una pregunta ¿por que en el ejemplo 3 se debe configurar el puerto como salida?

si tiene la lcd y el teclado conectado al mismo puerto
sera por cuestion de la libreria amigo sergio???

Responder

No es necesario configurar los puertos, yo lo hago por costumbre pero ya la propia librería configura los puertos para usar el periférico, si lo deseas puedes borrar esas lineas de código. Saludos!!

Responder