Anda di halaman 1dari 14

LCD - Display de Cristal Liquido

1 2 3 Vss Vdd Vo Tierra Alimentacin +5V Ajuste de Voltaje de Contraste Seleccin Datos/Control Rs = 0 Control Rs = 1 Datos Lectura/Escritura R/W = 0 Escritura R/W = 1 Lectura Habilitacin 6 7 8 9 10 11 12 13 14 E D0 D1 D2 D3 D4 D5 D6 D7 E= 0 deshabilita E= 1 habilita

RS

R/W

BUS DE PALABRA DE DATOS

Diagrama de bloques del Sistema interno del LCD

RS RW E CIRCUITO DE CONTROL 8

DATOS DISPLAY DDRAM

D7-D0

CGRAM (Caracteres Generados) USUARIO

CGROM (Caracteres Generados ) FABRICANTE

DDRAM Datos del display

DDRAM: En esta memoria se almacenan los caracteres que se visualizan en la pantalla, el tamao y distribucin de esta memoria depende del tamao del display.

Display de 1 Lnea ( 1 x 80) :


1 0 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 10 11 8 9 A . . . . 76 77 78 79 80 4B 4C 4D 4E 4F

Area Visible

Area no visible

Direcciones de la memoria DDRAM


Display de 2 Lneas ( 2 x 40) :
1 0 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 11 9 A . . . . 36 37 38 39 40 23 24 25 26 27 63 64 65 66 67

40 41 42 43 44 45 46 47 48 49 4A

Area Visible

Area no visible

Display de 2 Lneas ( 4 x 16) :


1 0 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 10 11 12 13 14 15 16 8 9 A B C D E F

40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F

Cdigos ASCII

Tabla 1. CARACTERES GENERADOS POR EL FABRICANTE

Librera: #include <lcd.c>

El compilador C incluye un fichero (driver ) que permite trabajar con un LCD . El archivo es LCD.c y debe llamarse de la siguiente forma :

Lcd_getc(byte x. byte x); Lee el carcter de la posicin (x,y). Lcd_putc(char s); S es una variable de tipo char . Esta funcin escribe la variable en la posicin correspondiente. lcd_send_byte( RS, n ) RS: es 0 si lo enviado es para configurar el LCD RS: es 1 si lo enviado es para mostrar un carcter N: es un byte de 8 bits que representa la palabra de configuracin o el cdigo ASCII del carcter.

#include <lcd.c>
Este archivo dispone de varias funciones ya definidas:

lcd_init();
Es la primera funcin que debe ser llamada. Y contiene la siguiente secuencia de inicializacin: Bus a 4 bits, dos lneas caracteres 5x8 Lcd encendido, Cursor Apagado y sin parpadeo Incrementar cursor, sin desplazamiento .

Lcd_gotoxy(byte x, byte x);


Indica la posicin de acceso al LCD. Por ejemplo, (1,1) indica la primera posicin de la primer lnea y (1,2) indica la primer posicin de la segunda lnea.

Cdigos de Configuracin del LCD

Comandos de inicializacin del LCD


Antes de escribir cualquier carcter en el LCD se debe realizar una secuencia de inicializacin de Display con una serie de palabras de control, este procedimiento se puede hacer de dos formas:
forma 1: (enviando cada comando de forma individual): lcd_send_byte(0,0x02); Forma 2: lcd_send_byte(0,0x38); Estas 5 instrucciones se pueden remplazar lcd_send_byte(0,0x06); lcd_send_byte(0,0x0C); Por la funcin: Lcd_init(); lcd_send_byte(0,0x01); Donde cada cdigo se tiene una configuracin de terminada segn como aparece en la diapositiva anterior y como se explica a continuacin: Palabra de control Display & Cursor Home: Funcin Set: Cdigo Ejemplo 0x02 0x48 Significado hubica el cursor en la posicin 1 del la primera linea bus de datos a 4 bits, caracteres de 5x7 A dos lneas

Entry Mode Set


Display ON/OFF Clear Display

0x06
0x0C 0x01

Incrementar cursor, no desplazar visualizacin


Display en ON, cursor en off, no parpadeo Borra display y se ubica la linea 1 carcter 1

Visualizacin de caracteres usando display de cristal Liquido


El siguiente programa enva los caracteres AEIOU usando las funciones lcd_send_byte() :
#include <16F877.h> #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #define use_portd_lcd_TRUE //configura LCD para trabajar usando PORTD #include <lcd.c> void main() { lcd_send_byte(0, 0x02 ); lcd_send_byte(0, 0x28 ); lcd_send_byte(0, 0x06 ); lcd_send_byte(0, 0x0C ); lcd_send_byte(0, 0x01 ); lcd_send_byte(1, 'A' ); lcd_send_byte(1, 'E); lcd_send_byte(1, 'I' ); lcd_send_byte(1, 'O' ); lcd_send_byte(1, 'U' ); while(1) { } }

//secuencia de //inicializacin del //LCD

//Enva el carcter A //Enva el carcter A //Enva el carcter A //Enva el carcter A //Enva el carcter A //CICLO INFINITO

Visualizacin de caracteres usando display de cristal Liquido


El siguiente programa enva los caracteres AEIOU usando las funciones lcd_init() y lcd_putc() :
#include <16F877.h> #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #define use_portd_lcd_TRUE //configura LCD para trabajar usando PORTD #include <lcd.c> void main() { lcd_init( ); lcd_putc(AEIOU); while(1) { } }

//secuencia de inicializacin //Enva el carcter A

//CICLO INFINITO

CONTROL DEL LCD USANDO PRINTF


El compilador C ofrece una funcin mas verstil para trabajar el LCD denominada printf() Printf(string) Printf(cstring, values) Printf(fname, cstring, values ) Donde: String : es una cadena o arreglo de caracteres values: es una lista de variables separadas por comas fname : es una funcin.

Ejemplo 1: Int z; z= 0x89; Printf(lcd_putc,Temperatura: %2x\n\r,z); %2x = 2 caracteres tipo entero hexadecimal \n = el cursor va a la posicion (1,2) primera posicion de la segunda linea \r = deja un espacio

Ejemplo 2:
Int z; z= 0x89; Printf(lcd_putc,Temperatura: %2u\n\r,z); %2u = 2 caracteres tipo entero decimal \n = el cursor va a la posicin (1,2) primera posicin de la segunda lnea \r = deja un espacio

Ejemplo 3:
float z; z= 0x89; Printf(lcd_putc,Temp: %.3f\n\r,z); %.3f = muestre el valor de tipo float con 3 decimales \n = el cursor va a la posicin (1,2) primera posicin de la segunda lnea \r = deja un espacio

Formato %nt
%n es opcional y especifica el numero de caracteres a mostrar:

1-9: 01-09: 1.1 9.9:

para especificar cuantos caracteres se deben mostrar para especificar la cantidad de ceros a la izquierda para como flotante

Int z; z= 0x9; Printf(lcd_putc,Temperatura: %03u\n\r,z); %03u = muestre el valor de tipo entero con 3 dgitos \n = el cursor va a la posicin (1,2) primera posicin de la segunda lnea \r = deja un espacio

Formato %nt
t indica:
c s u d Lu Ld x X Lx LX f g e Carcter Cadena o carcter Entero sin signo Entero Con signo Entero Largo sin signo Entero Largo con signo Entero Hexadecimal(minuscula) Entero Hexadecimal (Mayscula) Entero Largo Hexadecimal(minuscula) Entero Largo Hexadecimal (Mayscula) Flotante con truncado Flotante con redondeo Flotante con formato exponencial