Universidad Tecnológica del Perú
Programación de Microcontroladores
Laboratorio Dirigido N°3
Manejo de LCD alfa-numérica
2019 - 2
Escuela de Electrónica
MANEJO DE LCD ALFA-NUMÉRICA
Objetivo:
“Configuración y manejo de una pantalla de cristal líquido alfa-numérica”
Este laboratorio consiste en implementar un conjunto de funciones que permitan controlar
una pantalla de cristal líquido (LCD) alfa-numérica de 2 x 16. Las funciones construidas
permitirán al usuario transmitir un solo caracter a la vez y también transmitir una cadena de
caracteres.
I. Pre-Laboratorio
1) Realizar la definición de cada uno de los pines que serán utilizados en la
comunicación entre el microcontrolador y la LCD: DB7, DB6, DB5, DB4, RS, R/W y E.
No olvide que debe haber una definición para el registro TRIS, otra para el registro
LAT y otra para el pin correspondiente.
2) Realizar la definición de la cantidad de líneas, la cantidad de caracteres en cada línea
de la DDRAM del HD44780, la cantidad de caracteres en cada línea de la LCD, y la
dirección del inicio de cada línea en el HD44780.
3) Realizar la definición de las instrucciones más relevantes de la LCD, las cuales se
indicaron en el material proporcionado en clase.
4) Realizar la definición de las macros LCD_E_HIGH(), LCD_E_LOW(), LCD_RS_HIGH()
y LCD_RS_LOW, las cuales llevan a cabo las acciones E = 1, E = 0, RS = 1 y RS = 0,
respectivamente.
II. Desarrollo del laboratorio dirigido
Implementar el circuito básico de funcionamiento del microcontrolador PIC18F4550.
Luego, verificar si los terminales correspondientes al backlight de la LCD coinciden con
los pines 15 y 16. De ser ese el caso, conectar la pantalla LCD al PUERTO B del
microcontrolador, tal y como se muestra en el diagrama de la Figura 01.
Escuela de Electrónica
Figura 01
Si los terminales correspondientes a los terminales del backlight coinciden con los pines
1 y 2, entonces la conexión entre el microcontrolador y la LCD debe ser tal y como se
muestra en el diagramad e la Figura 02.
Figura 02
Escuela de Electrónica
Transmisión de una instrucción
Basándose en la información proporcionada en clase, y en la hoja de especificaciones
del driver HD44780, construir una función que reciba como parámetro un número natural
de 8 bits, y que permita transmitirlo a la LCD como si fuera una instrucción.
El nombre de esta función debe ser LCD_Tx_Command, y debe presentar el siguiente
formato:
void LCD_Tx_Command(uint8_t command)
Inicialización de la LCD
Basándose en la información proporcionada en clase, y en la hoja de especificaciones
del driver HD44780, construir una función que inicialice la LCD alfa-numérica para
trabajar en modo 4 bits, con caracteres de 5x8 pixeles.
El nombre de esta función debe ser LCD_Init_4_Bits, y debe presentar el siguiente
formato:
void LCD_Init_4_Bits(void);
Ubicación del cursor en la LCD
Basándose en la información proporcionada en clase, y en la hoja de especificaciones
del driver HD44780, construir una función que permita ubicar el cursor en una posición
específica de la LCD (coordenadas verticales, coordenadas horizontales). Recuerde que
existen 32 ubicaciones posibles, ya que la LCD es de 2 líneas de 16 caracteres cada
una.
El nombre de esta función debe ser LCD_Goto_XY, y debe presentar el siguiente
formato:
void LCD_Goto_XY(uint8_t pos_x, uint8_t pos_y);
Escuela de Electrónica
Impresión de un caracter
Basándose en la información proporcionada en clase, y en la hoja de especificaciones
del driver HD44780, construir una función que permita imprimir en la LCD un caracter, el
cual se encuentre almacenado en una variable.
El nombre de esta función debe ser LCD_Put_Char, y debe presentar el siguiente
formato:
void LCD_Put_Char(char byte)
Una vez que haya verificado el correcto funcionamiento de esta función, construir una
función similar, la cual permita imprimir en la LCD un caracter constante (un literal de tipo
char). El nombre de esta función debe ser LCD_Put_Const_Char, y debe presentar el
siguiente formato:
void LCD_Put_Const_Char(const char byte)
Verificar el funcionamiento de la función creada, imprimiendo los caracteres ‘h’, ‘o’, ‘l’,
‘a’, en la primera línea de la LCD y , ‘m’, ‘u’, ‘n’, ‘d’, ‘o’, en la segunda línea.
Impresión de una cadena de caracteres
Basándose en la información proporcionada en clase, y en la hoja de especificaciones
del driver HD44780, construir una función que permita imprimir en la LCD una cadena de
caracteres, la cual se encuentre almacenada en forma de arreglo.
El nombre de esta función debe ser LCD_Put_String, y debe presentar el siguiente
formato:
void LCD_Put_String(char str[ ])
Una vez que haya verificado el correcto funcionamiento de esta función, construir una
función similar, la cual permita imprimir en la LCD una cadena de caracteres constante
(un literal de tipo string). El nombre de esta función debe ser LCD_Put_Const_String, y
debe presentar el siguiente formato:
void LCD_Put_Const_String(const char *str)
Verificar el funcionamiento de la función creada, imprimiendo en la LCD el mensaje
mostrado en la Figura 03.
Escuela de Electrónica
Figura 03
Prueba de instrucciones adicionales
Para verificar el funcionamiento de las instrucciones de la LCD, llevar a cabo la siguiente
secuencia:
Imprimir “Curso de” en la primera línea y “Microcontroladores” en la segunda línea de
la LCD.
Hacer visible el cursor.
Desplazar el texto en pantalla cuatro veces hacia la derecha, dejando un intervalo de 1
segundo entre cada desplazamiento.
Transmitir la instrucción LCD_HOME para regresar el texto a su posicón original.
Hacer que el cursor parpadee.
Desplazar el texto en pantalla cuatro veces hacia la izquierda, dejando un intervalo de
1 segundo entre cada desplazamiento.
Trasnmitir la instrucción LCD_HOME para regresar el texto a su posición original.
Hacer invisible el cursor y también desactivar el parpadeo.
Esperar 5 segundos y luego apagar la pantalla.
Escuela de Electrónica
III. Post-laboratorio
Cuando escribimos un programa en C en una computadora personal, es posible imprimir
datos empleando la función printf. Esto no es posible en un microcontrolador, ya que este
último puede contar con diferentes salidas (LEDs, displays de 7 segmentos, pantallas, etc.) y
la función printf no tiene definido el funcionamiento de cada dispositivo de salida.
Por otro lado, existe una función cuya forma de manejo es muy similar a la de printf, y puede
utilizarse para facilitar la impresión de caracteres coon un microcontrolador. El nombre de
esta función es sprintf.
Investigar el uso de la función sprintf y responder:
¿Qué archivo debe incluirse para poder utilizar esta función?
¿Para qué sirve esta función?
¿Cómo es que esta función puede facilitar la escritura de código?
¿Qué aplicación se le puede dar al trabajar con una LCD alfa-numérica?