interfaz lcd
DESCRIPTION
En la presentación Interfaz LCD, se define lo que es un Display de Cristal Líquido, sus variantes paralelas y seriales y se describe de forma muy puntual los tipos de memorias, sus aplicaciones y sus usos; así mismo, se muestran las opciones de conexión con un microcontrolador y los algoritmos de inicialización, envío de comandos y caracteres, escritos en lenguaje C para que sean fáciles de exportar a diferentes compiladores de diferentes microcontroladores. Ésta versión esta pensada para uso didáctico y puede ser utilizada y modificada, haciendo referencia al trabajo aquí presentado.TRANSCRIPT
Presentador de cristal líquido
Liquid Cristal Display
El LCD (pantalla de exhibición de cristal líquido) es un dispositivo de bajo consumo de energía que nos permite visualizar caracteres alfanuméricos y símbolos de puntuación . Existen una gran variedad de LCD clasificadas en 2 grupos principalmente:
LCD alfanumérico (de caracteres)
LCD gráficos
Su voltaje de alimentación más común es de 5v y su consumo es de 5 mAaproximadamente.
La comunicación más común con el controlador
del LCD es de forma paralela; aunque
puede ser de forma serial RS232, SPI o I2c.
Introducción
El LCD tiene almacenados 240 símbolos en su memoria interna para mostrar todos los símbolos alfanuméricos y símbolos de puntuación contenidos en la tabla de códigos ASCII‐7 y se pueden codificar 8 símbolos definidos por el usuario.
Los símbolos alfanuméricos y los definidos por el usuario se representan en matrices de 5x8 y/o 5.10 puntos por carácter.
LCD DE CARACTERES
Los caracteres y símbolos más usado por nosotros en la tabla ASCII, están en las direcciones 0x20 hasta 0x7f, los demás símbolos del 0x80 al 0xff son usados principalmente en asía.
Los símbolos del 0 al 7 están libres para que el usuario los defina
Tabla de símbolos del LCD
Tabla de símbolos del LCD y códigos ASCII‐7
Es la memoria que almacena los caracteres alfanuméricos del mensaje que se quiere mostrar.
El mapa de la memoria DDRAM esta constituido por dos bloques de 40 bytes cada uno; los primeros 40 bytes localizados en la dirección 0x00 a la 0x27, asociadas con las posiciones del display (1,1) y (40,1) respectivamente. Los siguientes 40 bytes localizados en la dirección 0x40 a la 0x67, las cuales corresponden a las posiciones del display (1,2) y (40,2).
Vea la siguiente figura para su mejor comprensión
Memoría DDRAM (Display Data RAM)
La memoria DDRAM tiene la capacidad de almacenar 40 caracteres por línea; sin embargo, el visualizador gráfico, presentador o display solo puede exhibir los primeros 16 caracteres .
Como se verá más adelante, existen comandos que le indican al manejador del display que desplace el mensaje a la izquierda o derecha, dando un efecto de marquesina de 16 caracteres.
La CGRAM contiene los caracteres que pueden ser personalizados por el usuario; está formada por 64 posiciones de 5 bits cada una localizadas en la 0x00 a la 0x3f.
La memoria esta dividida en 8 bloques que corresponden a las filas que tiene la matriz del carácter, de manera que un 1 indica un punto encendido en la matriz y un 0 apagado. Tal como se muestra en la siguientes figuras.
Memoria CG RAM (carácter generatorRAM)
El LCD tiene 2 tipos de bus
Bus de datos
Bus de control
El bus de datos puede ser configurado de 8 o 4 bits, utilizándose solamente D4 a D7 y dejándose D0 a D3 al aire en el segundo caso
El bus de control esta formado por las señales
RW: 1 indica lectura y 0 escritura
RS: Selecciona el registro del LCD, con RS =0 selecciona el registro de control y con RS=1 selecciona el registro de datos
E : Es la señal de validación, ésta permanece normalmente en 0 y cambia de estado para validar la información cambiando al estado original después de un tiempo.
Conexión de un LCD
Control \#Bits
Bus a 4 bits Bus a 8 bits
Bucle cerrado
OPCION ABits
necesarios: 7
4 pines deben ser
E/S
OPCION BBits
necesarios: 11
4 pines deben ser
E/S
BucleAbierto
OPCION CBits
necesarios: 6
6 pines solo de salida
OPCION DBits
necesarios: 10
10 pinessolo de salida
Conexión de un LCD
La secuencia de inicio ejecutada es la siguiente:
1. Selección de la longitud del bus de datos ( 4 Bits / 8 Bits ). Se ejecuta el comando FUNCTION SET, que establece el interfaz con el Bus de datos. Se elige por defecto el tamaño del bus de datos a 8 bits (DL=1) y el número de renglones del display en 2 (N=1) DBUS=0x38.
2. Se ejecuta el comando DISPLAY ON/OFF CONTROL, que hace que el display que en ON (D=1); también cursor en ON (C=1) y con parpadeo del cursor en (B=1). DBUS=0x0F
3. Se ejecuta el comando ENTRY MODE SET, que establece la dirección de movimiento del cursor con autoincremento del cursor (I/D=1) y modo normal, sin desplazamiento del display (S=0). DBUS=0x06
4. . Se ejecuta el comando CLEAR DISPLAY borrando la pantalla. DBUS=0x01
*ver tabla de comandos en la diapositiva 18
Secuencia de inicialización
1.Poner la señal E siempre a 0 o a 1 antes de realizar cualquier operación
2. Poner RS=1 y R/W=0
3. Situar el dato a imprimir en el bus de datos del LCD (En este ejemplo se enviaría $41)
4. Dar un pulso en E con duración mínima de 300 ns
5. El carácter ha sido impreso en el LCD.
Temporización a 8 bits
1. Poner la señal E siempre a 0 o a 1 antes de realizar cualquier operación
2.‐Poner RS=1 y R/W=0
2. Situar el valor 0x40 en el bus de datos del LCD (4 bits más significativos)
3. Dar un pulso en E con duración mínima de 300 ns
4. Situar el valor 0x10 en el bus de datos del LCD (4 bits menos significativos)
6. Dar un pulso en E con duración mínima de 300 ns
7. El carácter ha sido imprimido en el LCD
Temporización a 4 bits
Tabla de comandos del LCD
Código Descripción
0x01 Limpia pantalla de visualización
0x02 Regresa a posición inicial (dirección RAM 00H)
0x04 Desplaza cursor a la izquierda
0x05 Desplaza visualizador a la derecha
0x06 Desplaza cursor a la derecha
0x07 Desplaza visualizador a la izquierda
0x08 Visualizador apagado, cursor apagado
0x0a Visualizador apagado, cursor encendido
0x0c Visualizador encendido, cursor apagado
0x0e Visualizador encendido, cursor sin destello
0x0f Visualizador encendido, cursor con destello
0x10 Desplaza el cursor a la izquierda
0x14 Desplaza el cursor a la derecha
0x18 Desplaza todo el visualizador a la izquierda
0x1c Desplaza todo el visualizador a la derecha
0x28 Visualizador 2 líneas, matriz 5x8, interfaz 4 bits
0x38 Visualizador 2 líneas , matriz 5x8, interfaz 8 bits
0x80 Forzar cursor al inicio de la primera línea
0xc0 Forzar cursor al inicio de la segunda línea
Códigos de comando del LCD
Algoritmos del LCD
void LCD_COMANDO_4BITS(unsigned short intcomando)
{
LCD_E=0;
LCD_RS=0;
LCD_DBUS = comando&0xF0;//NIBLE ALTO
LCD_E=1;
//DELAY_US(40);//TIEMPO DE ESPERA 40US
LCD_E=0;
LCD_DBUS = (comando<<4)&0XF0;//NIBLE BAJO
LCD_E=1;
//DELAY_US(40);//TIEMPO DE ESPERA 40US
LCD_E=0;
}
Programación LCD opción C
void LCD_INICIAR_4BITS(){LCD_COMANDO_4BITS(DOBLE_LINEA_4_BITS);//0X28
LCD_COMANDO_4BITS(LCD_CURSOR_PARPADEO_ON);//0X0F;
LCD_COMANDO_4BITS(LCD_NO_DESP_INC_CURSOR);//0X06LCD_COMANDO_4BITS(LCD_LIMPIAR);//0X01;DELAY_US(1600);
}
void LCD_CARACTER_4BITS(char caracter){LCD_E=0;LCD_RS=1;LCD_DBUS = caracter&0XF0;//NIBLE ALTOLCD_E=1;//DELAY_US(40);//TIEMPO DE ESPERA 40USLCD_E=0;LCD_DBUS = (caracter<<4)&0XF0;//NIBLE BAJOLCD_E=1;//DELAY_US(40);//TIEMPO DE ESPERA 40USLCD_E=0;
}
void LCD_COMANDO_8BITS(unsigned short intcomando)
{
LCD_E=0;
LCD_RS=0;
LCD_DBUS = comando;
LCD_E=1;
//DELAY_US(40);//TIEMPO DE ESPERA 40US
LCD_E=0;
}
Programación LCD opción D
void LCD_INICIAR_8BITS(){
LCD_COMANDO_8BITS(DOBLE_LINEA_8_BITS);//0X38
LCD_COMANDO_8BITS(LCD_CURSOR_PARPADEO_ON);//0X0F;
LCD_COMANDO_8BITS(LCD_NO_DESP_INC_CURSOR);//0X06LCD_COMANDO_8BTS(LCD_LIMPIAR);//0X01;DELAY_US(1600);
}
void LCD_CARACTER_8BITS(char caracter){LCD_E=0;LCD_RS=1;LCD_DBUS = caracter;LCD_E=1;//DELAY_US(40);//TIEMPO DE ESPERA 40USLCD_E=0;
}