2. INTRODUCCIÓN
Las pantallas de cristal líquido son pantallas dedicadas a la visualización de
mensajes. Caracteres numéricos y hasta gráficos. Los LCD viene de
diferentes configuraciones dependiendo de la cantidad de líneas o pixeles que
posean.
Clases de pantallas LCD
LCD de 2x16
LCD de 4x20
LCD gráficas
de 128 x 64
3. PANTALLAS LCD
Características del LCD de 2x16:
• Poseen 1280 celdas elementales de cristal líquido, distribuidas en 32
caracteres que forman 2 líneas de 16 caracteres cada una.
• Cada carácter es una matriz de 5 x 8 puntos o pixeles.
• Se pueden representar 256 caracteres diferentes de los cuales 240 están
grabados dentro de la memoria del LCD y representan las letras
mayúsculas, minúsculas, signos de puntuación, números, etc. Existen 8
caracteres definidos por el usuario.
• A pesar de que el display solo puede visualizar 16 caracteres por línea, en
total puede almacenar 40. (Zona visible y zona no visible).
• La alimentación es de 5V (algunos pueden alimentarse a 3.3V).
4. PANTALLAS LCD
Diagrama de Bloques:
Conexionado
Vss (1) → Tierra
Vdd (2) → Alimentación
Vo (3) → Contraste
RS (4)
R/W (5)
E (6)
Control de
Lectura y
Escritura
D0 (7)
…..
D7 (14)
Datos
Vo es manejado a través de un potenciómetro si el LCD posee luz trasera.
Si no posee se acostumbra tener Vo = GND para máximo contraste.
5. PANTALLAS LCD
Memoria del LCD:
Posee 2 tipos de memorias independientes
• DD RAM
• CG RAM
Memoria DD RAM (Display Data RAM)
Esta memoria almacena los caracteres que están siendo visualizados o que se
encuentran en posiciones no visibles. Su tamaño es de 80 bytes.
6. PANTALLAS LCD
Fila 1: 00h – 0Fh | 10h – 27h
Fila 2: 40h – 4Fh | 50h – 67h
Visible No Visible
El manejo de cada posición de la pantalla es
manejado mediante coordenadas (x,y)
7. PANTALLAS LCD
Memoria CG RAM (Character Generator RAM)
Es la memoria que contiene los caracteres definibles por el usuario. Está
formado por 64 posiciones (00h – 3Fh). Cada posición es de 5 bits.
La memoria está dividida en 8 bloques, correspondiendo cada bloque a un
carácter definible por el usuario.
Por ello el usuario puede definir como máximo 8 caracteres cuyos códigos
van del 0 al 7.
8. PANTALLAS LCD
Conexión al microcontrolador:
Comunicación a 8 bits Comunicación a 4 bits
En la comunicación a 4 bits, primero se envía el nibble alto y luego se
envía el nibble bajo.
Información Control
Información Datos
4 bits
8 bits
9. PANTALLAS LCD
Diagrama de Tiempos:
Diagrama de Tiempos para enviar una palabra de control a 8 bits:
Resumen
• RS = 1
• E = 0
• Enviar dato
• RETARDO
• RS = 0
• RETARDO
• E = 1
• RETARDO
• E = 0
• RETARDO
• RS = 1
• RETARDO
Retardo =
40us
10. PANTALLAS LCD
Diagrama de Tiempos:
Diagrama de Tiempos para enviar una palabra de control a 4 bits:
Diagrama de Tiempos para enviar
una palabra de datos a 8 bits:
Diagrama de Tiempos para enviar
una palabra de datos a 4 bits:
12. PANTALLAS LCD
Funciones: Conexión a 4 bits
• lcdInit() → Inicializa el LCD
• lcdControlWrite8 → Enviar palabra de control a 8 bits
• lcdControlWrite4 → Enviar palabra de control a 4 bits
• lcdDataWrite4 → Enviar palabra de datos a 4 bits
• lcdGotoXY → Ubica el cursor en cualquier parte de la pantalla
• lcdPrintData → Imprime un mensaje definido en memoria de programa
Al LCD se le envía datos en código ASCII
• show_char → Imprimir una letra
• show_byte → Imprimir un número de 8 bits
• show_word → Imprimir un número de 16 bits
void lcdInit(void)
{
//Configurar las lineas de datos y control como salida
RS = 1 y E = 0
retardo(15ms)
//Enviar comando para trabajar a 8 bits
lcdControlWrite8(....)
retardo(4.1ms) → _delay_us(4100)
//Repetir el comando anterior
13. //Se envía comando para trabajar a 4 bits
lcdControlWrite8(....)
//Se envía el mismo comando anterior pero con la función a 4 bits
lcdControlWrite4(....)
//Apaga pantalla y pone el cursor al inicio
lcdControlWrite4(...)
retardo(4.1ms)
//Enciende el display y apaga el cursor
lcdCntrolWrite4(....)
RS = 0 y E = 0
}
void lcdGotoXY(unsigned char x, unsigned char y)
{
uint8_t valor;
switch(x)
{
case 0: valor = 0x00 + y; break;
case 1: valor = 0x40 + y; break;
}
lcdControlWrite4(1<<DD_RAM | valor);
}
14. PANTALLAS LCD
Archivos correspondientes:
• lcdconf.h → Permite definir el puerto correspondiente a las líneas de control
RS y E así como el puerto para las líneas de datos
#define LCD_CTRL_PORT PORTB
#define LCD_CTRL_DDR DDRB
#define LCD_CTRL_RS 2
#define LCD_CTRL_E 3
#endif
#ifndef LCD_DATA_POUT
#define LCD_DATA_POUT PORTB
#define LCD_DATA_DDR DDRB
• lcd.h → Contiene el prototipo de todas las funciones pertenecientes al LCD y
las constantes según la tabla anterior
• lcd.c → Contiene la definición de todas las funciones del LCD
15. PANTALLAS LCD
Ejercicio:
Mostrar en el LCD los siguientes mensajes:
Mensaje definido en memoria de
programa.
Visualizado durante 2 segundos
Mostrar una secuencia de
0 a 100 cada 250 ms.
Los puertos son escogidos por cada uno.
Pines de control (RS - E)
Pines de datos (D4 a D7)
16. PANTALLAS LCD
Ejercicio:
Ingresar una clave de 4 dígitos y visualizarla en los displays. Si la clave es correcta
encender el led L1 y si es incorrecta encender el led L2. El esquema es el siguiente:
Mostrar los siguientes mensajes:
Una vez la clave es
ingresada se debe
mostrar el respectivo
mensaje por 2
segundos y luego
volver a pedir la clave
17. PANTALLAS LCD
Ejercicio:
Mostrar en el LCD la temperatura entregada por el sensor LM35. El esquema es el
siguiente: Ecuación: v(t) = 10mV * t [°C]
Mostrar los siguientes mensajes:
titulo
Características:
• REF = 2.56V
• Sin Interrupciones
• Res = 8 bits