Interfaz lcd

22
Presentador  de  cristal  líquido Liquid Cristal  Display

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 of Interfaz lcd

Page 1: Interfaz lcd

Presentador  de  cristal  líquido

Liquid Cristal  Display

Page 2: Interfaz lcd

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 

Page 3: Interfaz lcd

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

Page 4: Interfaz lcd

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

Page 5: Interfaz lcd

Tabla de símbolos del LCD y códigos ASCII‐7

Page 6: Interfaz lcd
Page 7: Interfaz lcd

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)

Page 8: Interfaz lcd

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.

Page 9: Interfaz lcd

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) 

Page 10: Interfaz lcd
Page 11: Interfaz lcd

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

Page 12: Interfaz 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

Page 13: Interfaz lcd
Page 14: Interfaz 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

Page 15: Interfaz lcd

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

Page 16: Interfaz lcd

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

Page 17: Interfaz lcd
Page 18: Interfaz lcd

Tabla de comandos del LCD

Page 19: Interfaz 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

Page 20: Interfaz lcd

Algoritmos  del LCD

Page 21: Interfaz 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;

}

Page 22: Interfaz lcd

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;

}