PROGRAMACIÓN DE UNA PANTALLA LCD
- Conocer el Display LCD y su funcionamiento.
- Programar eficientemente el LCD.
- Programar HMI para proyecto actual.
2. MARCO TEÓRICO
2.1. PANTALLA LCD 16x2
La pantalla de cristal liquido o LCD (Liquid Crystal Display) es un dispositivoµControlado de visualización gráfico para la presentación de caracteres, símbolos o incluso dibujos (en algunos modelos), es este caso dispone de 2 filas de 16 caracteres cada una y cada carácter dispone de una matriz de 5x7 puntos (píxeles), aunque los hay de otro número de filas y caracteres. Este dispositivo esta gobernado internamente por un microcontrolador y regula todos los parámetros de presentación, este modelo es el mas comúnmente usado y esta información se basará en el manejo de este u otro LCD compatible
Características principales:
- Pantalla de caracteres ASCII, además de los caracteres Kanji y Griegos
- Desplazamiento de los caracteres hacia la izquierda o la derecha
- Proporciona la dirección de la posición absoluta o relativa del carácter
- Memoria de 40 caracteres por línea de pantalla.
- Movimiento del cursor y cambio de su aspecto.
- Permite que el usuario pueda programar 8 caracteres.
- Conexión a un procesador usando un interfaz de 4 u 8 bits
2.1.2. FUNCIONAMIENTO
Para comunicarse con la pantalla LCD podemos hacerlo por medio de sus patitas de entrada de dos maneras posibles, con bus de 4 bits o con bus de 8 bits, este último es el que explicare y la rutina también será para este. En la siguiente figura vemos las dos maneras posibles de conexionar el LCD con un PIC.
El control de contraste se realiza al dividir la alimentación de 5V con una resistencia variable de 10K.
Las líneas de datos son triestado, esto indica que cuando el LCD no esta habilitado sus entradas y salidas pasan a alta impedancia.
El control de contraste se realiza al dividir la alimentación de 5V con una resistencia variable de 10K.
Las líneas de datos son triestado, esto indica que cuando el LCD no esta habilitado sus entradas y salidas pasan a alta impedancia.
2.1.3. CONEXIONADO
En la siguiente imagen de Proteus se puede observar la estructura de sus pines.
Lo podemos dividir en los Pines de alimentación, pines de control y los pines del bus de datos bidireccional. Por lo general podemos encontrar ademas en su estructura los pines de Anodo de led backlight y cátodo de led backlight.
Pines de alimentación:
Pines de control:
Pines de Bus de datos:
Lo podemos dividir en los Pines de alimentación, pines de control y los pines del bus de datos bidireccional. Por lo general podemos encontrar ademas en su estructura los pines de Anodo de led backlight y cátodo de led backlight.

- Vss: Gnd
- Vdd: +5 voltios
- Vee: corresponde al pin de contraste, lo regularemos con un potenciómetro de 10K conectado a Vdd.
Pines de control:
- RS: Corresponde al pin de selección de registro de control de datos (0) o registro de datos(1). Es decir el pin RS funciona paralelamente a los pines del bus de datos. Cuando RS es 0 el dato presente en el bus pertenece a un registro de control/instrucción. y cuando RS es 1 el dato presente en el bus de datos pertenece a un registro de datos o un carácter.
- RW: Corresponde al pin de Escritura(0) o de Lectura(1). Nos permite escribir un dato en la pantalla o leer un dato desde la pantalla.
- E: Corresponde al pin Enable o de habilitación. Si E(0) esto quiere decir que el LCD no esta activado para recibir datos, pero si E(1) se encuentra activo y podemos escribir o leer desde el LCD.
Pines de Bus de datos:
- El Bus de datos bidireccional comprende desde los pines D0 a D7. Para realizar la comunicación con el LCD podemos hacerlo utilizando los 8 bits del bus de datos(D0 a D7) o empleando los 4 bits mas significativos del bus de datos(D4 a D7). En este caso vamos a explicar la comunicación con el bus de 4 bits.
3.1. DIAGRAMA DE SIMULACIÓN DEL ENTRENADOR DE PICS, EN PROTEUS
3.2.1. VIDEO: PARICAHUA CRUZ, MAYCOL REINILDO
JUEGO PARA APRENDER A PROGRAMAR: LIGHT BOT
JUEGO PARA APRENDER A PROGRAMAR: LIGHT BOT
3.2.3. VIDEO: SEJJE YUCRA, FERNANDO
JUEGO PARA APRENDER A PROGRAMAR: LIGHT BOT
3.2.4. VIDEO: CHAVEZ CHENEAU, DAVID ALONSO
JUEGO PARA APRENDER A PROGRAMAR: LIGHT BOT

3.2.5. VIDEO: BALLENAS ZÚÑIGA, MARVIN ROODWELL
JUEGO PARA APRENDER A PROGRAMAR: LIGHT BOT
3.2.6. VIDEO: MENDEZU NINA, ELIZABETH YULISSA
JUEGO PARA APRENDER A PROGRAMAR: LIGHT BOT
4. OBSERVACIONES:
- Se utilizaron comandos como "printf()" y "lcd_gotoxy()" para realizar modificaciones en la pantalla LCD.
- Para evitar el errores de rebote debido a los pulsadores, se implementó un sencillo bucle "While", del cual se salía cuando se dejaba de pulsar el pulsador correspondiente.
- Al momento de colocar imprimir un texto diferente al anterior en el LCD, se recomienda rellenar con la tecla "espacio", los caracteres sobrantes; debido a que borrar la pantalla, significaría un paso muy tedioso al volver a colocar los datos que no se quieren modificar.
- Cuando queramos imprimir un texto en el LCD, debemos de fijarnos en en qué fila nos encontramos; ya que podríamos estar llenando la fila equivocada.
- Se debe tener en cuenta la estructura del programa, esta debe estar bien estructurada para corregir el programa en caso de que se detecte un error.
- Al introducir los comandos "lcd_gotoxy"()" y en los paréntesis va la columna y la fila en la cual se imprimirá el dato.
- Observamos que el dato para que no varie este debe estar con el incremento restado ya que sino excederia 1000.
- Observamos que %4lu significa ingresar una variable y darle 4 espacios de separacion.
5. CONCLUSIONES
- Se logró conocer el display LCD 16x2, descripción y funcionamiento, a partir del cual se verificó su conexionado en el PIC16F877A y se realizó la correspondiente programación.
- Se programó el LCD utilizando el PIC16F877A y haciendo uso de las librerías necesarias para el manejo de dicha pantalla.
- Se modificó el programa base para incrementar o decrementar un número, visualizarlo en el LCD y mostrar "Full" o "Valor mínimo" al llegar a los valores extremos.
- Se culminó con éxito el juego para aprender a programar "Lightbot", cuya experiencia fue muy entretenida y divertida, además de un entorno interactivo.
- Se programó la pantalla LCD 16x2 del PIC 16F877A, así como también la simulación de este en el entrenador HFK- O1OU PICS.
- Se reconoció la instrucción IF para establecer una condicional, a la vez también se identificó la instrucción ELSE, para establecer una serie de comandos en caso de que la condición IF no se cumpliera.
- Se logró realizar la compilación del código fuente del programa, para luego configurar y establecer la comunicación con el entrenador HFK – 01OU PICS.



