Display LCD

Anuncio
E/S
33
3.3 LCD Alfanumérica
Las pantallas de cristal líquido o LCD (Liquid Crystal Display) alfanuméricas
permiten mostrar mensajes y con esto podemos dotar a nuestros circuitos de una interface
más llamativa para el usuario.
La LCD comúnmente usada debido a su bajo costo y disponibilidad es la pantalla
alfanumérica de 16 caracteres por 2 renglones mostrada en la Figura 3-3.
Figura 3-3. LCD 16x2
El funcionamiento de esta pantalla puede revisarlo en su hoja de datos o recomiendo el
libro Microcontrolador PIC16F84 Desarrollo de proyectos de Enrique Palacios para una
explicación mas detallada.
El lenguaje C18 aporta una librería llamada xlcd.h la cual permite controlar este tipo de
LCD. Sin embargo esta librería tiene unas deficiencias y por medio de unas
modificaciones el autor creó la librería lcd.h la cual puede descargar de la página. Dicha
librería consta de 2 archivos llamados lcd.c y lcd.h, ambos archivos deben agregarse al
proyecto.
El siguiente ejemplo demuestra el uso de la librería lcd.h con el circuito mostrado en la
Figura 3-4.
Ing. Juan Ramon Terven Salinas
E/S
34
Ejemplo 3-3. Uso de LCD 16x2
Arme el circuito de la Figura 3-4 y pruebe el ejemplo siguiente.
Figura 3-4. Diagrama para ejemplo LCD
Para que el programa compile sin errores, debe agregar los archivos lcd.c y lcd.h al
proyecto como se muestra en la figura siguiente.
Figura 3-5. Archivos de librería
Ing. Juan Ramon Terven Salinas
E/S
35
Programa 3-3. Ejemplo uso de LCD 16x2
/* DISPLAY LCD 16X4
*
* Uso del Display LCD con la libreria lcd.h
* PIC18 funcionando a 48MHz
*/
#include <p18cxxx.h>
#include "lcd.h"
extern void _startup (void);
#pragma code REMAPPED_RESET_VECTOR = 0x1000
void _reset (void)
{
_asm goto _startup _endasm
}
#pragma code
// Aquí inicia el programa
void main()
{
char cadena[] = "Probando LCD";
char cadena2[] = "en linea 2";
ADCON1 |= 0x0f; // Configura pines como digitales
// configura LCD
OpenLCD( FOUR_BIT & LINES_5X7);
//Envia cadena "Probando LCD"
putsLCD(cadena);
//Cambia al renglon 2
SetDDRamAddr(0x40);
//Envia cadena2 al display
putsLCD(cadena2);
while(1)
{
}
}
Ing. Juan Ramon Terven Salinas
E/S
36
PRÁCTICAS PARA EVALUAR
Para cada una de las siguientes prácticas:
a) Simular el funcionamiento en Proteus.
b) Verificar funcionamiento en su tablilla de pruebas.
PRÁCTICA 1. Contador en LCD
Mostrar un contador en el LCD que se incremente cada vez que se pulsa un botón en
RA0. Use la función itoa de la librería stdlib.h para convertir el contador a cadena y
poderlo mostrar en el display. El contador debe ser tipo int.
La función itoa se usa de la siguiente manera:
char strCont[6];
//se declara una cadena de 6 caracteres
itoa(contador,strCont); //convierte contador a cadena
//y se guarda en strCont
PRÁCTICA 2. Mensajes Desplazables
Mostrar un texto desplazándose por el primer renglón de izquierda a derecha y otro texto
desplazándose por el segundo renglón de derecha a izquierda.
PRÁCTICA 3. Cronómetro con retardos
Diseñe un cronómetro de la forma HH:MM:SS:d en el LCD, donde:
HH = horas(00 a 59)
MM = minutos(00 a 59)
SS = segundos(00 a 59)
d = décimas de segundo(0 a 9)
En el primer renglón deberá decir “CRONOMETRO”
En el segundo renglón debe mostrar el cronómentro inicialmente en 00:00:00:00:0
Al pulsar el botón en RA0 el cronómetro inicia.
Si el cronómetro está iniciado con este mismo botón se pausa y se reanuda el
funcionamiento.
Al pulsar un botón en RA1 el cronómetro se resetea sólo si el cronómetro se encuentra
pausado, de lo contrario no se permite el reseteo.
Ing. Juan Ramon Terven Salinas
Descargar