Você está na página 1de 11

06/04/2011

Detalle del LCD


Programacin en lenguaje C para Microcontroladores PIC LCD HD44780
Ing. Germn Jess Pereira Muoz

DETALLE DE LOS PINES

CONJUNTO DE INSTRUCCIONES

DETALLE DE LOS BITS

06/04/2011

Ing. Germn Jess Pereira Muoz

06/04/2011

PATRONES DE LOS CARACTERES

Driver para LCD de matriz de puntos para representacin de caracteres y smbolos en formato 5x8 5x10 Dispone de 240 patrones de caracteres almacenados en ROM, de los cuales 208 son de tamao 5x8 y 32 de tamao 5x10 Memoria RAM de pantalla (DDRAM) de 80 posiciones x 8 bits/posicin Contenido en 8 bits (DDRAM): cdigo del carcter para un generador de caracteres ROM con 240 caracteres posibles 8 posiciones (dobles) para caracteres definibles por el usuario en una memoria CGRAM (caracteres grficos) Visibles 1 2 lneas de 16 caracteres/lnea

Para que imprima A en la pantalla del LCD se necesita el patron 01000001 = 0x41
06/04/2011 8 Ing. Germn Jess Pereira Muoz

CODIGO ALFANUMERICO: A Z y a z

Ventana Visible

DDRAM (Display Data RAM) Almacena el cdigo de los caracteres que estn siendo visualizados o que se encuentran en posiciones no visibles debido a la posicin de la ventana de visualizacin. Tiene un tamao de 2 lneas x 40 bytes/lnea = 80 bytes. Direcciones no contiguas entre lnea 1 y 2:

06/04/2011

PATRONES DE CARACTERES ROM A00

PATRONES DE CARACTERES ROM A00

PATRONES DE CARACTERES ROM A02

Display de cristal liquido

LCD (funciones bus 8 bits)


Lcd8_Config Lcd8_Init Lcd8_Out Lcd8_Out_Cp Lcd8_Chr Lcd8_Chr_Cp Lcd8_Cmd

Lcd8_Config
Descripcin: Inicializa el LCD usando un bus de datos de 8 bits. Los
puertos de Control (ctrlport) y Datos (dataport) usan la asignacin de terminales especificada. void Lcd8_Config( unsigned short *ctrlport,
unsigned short *dataport, unsigned short RS, unsigned short EN, unsigned short WR, unsigned short D7, unsigned short D6, unsigned short D5, unsigned short D4, unsigned short D3, unsigned short D2, unsigned short D1, unsigned short D0 );

06/04/2011

Lcd8_Config 2
Ejemplo: Lcd8_Config(&PORTA,&PORTB,0,1,2,7,6,5,4,3,2,1,0);

Lcd8_Config 2
Ejemplo: Lcd8_Config(&PORTC,&PORTD,0,1,2,0,1,2,3,4,5,6,7);

Lcd8_Init
Descripcin: Inicializa el LCD usando un bus de 8 bits. Los puertos de Control (ctrlport) y Datos (dataport) usan la siguiente asignacin de terminales.E ctrlport.6 RS ctrlport.4 R/W ctrlport.5 D7 dataport.7 D6 dataport.6 D5 dataport.5 D4 dataport.4 D3 dataport.3 D2 dataport.2 D1 dataport.1 D0 dataport.0

Lcd8_Init 2
Ejemplo: Lcd8_Init(&PORTB, &PORTC);

void Lcd8_Init(unsigned short *ctrlport, unsigned short *dataport);

Lcd8_Out
Descripcin: Imprime mensaje en el LCD en la fila y columna especificada (row y col). void Lcd8_Out(
unsigned short row, unsigned short col, char *text );

Lcd8_Out_Cp
Descripcin: Imprime mensaje en el LCD en la posicin actual del cursor. void Lcd8_Out_Cp(char *text); Ejemplo: Imprime Here! en la posicin actual del cursor Lcd8_Out_Cp("Here!");

Ejemplo:
-Imprime Hello! en el LCD en la linea 1, columna 3

Lcd8_Out(1, 3, "Hello!");

06/04/2011

Lcd8_Chr
Descripcin: Imprime un caracter en el LCD en la fila y columna especificada (row y col). void Lcd8_Chr( unsigned short row,
unsigned short col, char character );

Lcd8_Chr_Cp
Descripcin: Imprime un caracter en el LCD en la posicin actual del cursor. void Lcd8_Chr_Cp(char character); Ejemplo: Imprime la letra e en la posicin actual del cursor Lcd8_Chr_Cp('e');

Ejemplo: Imprime la letra i en el LCD en la lnea 2,y columna 3 Lcd8_Out(2, 3, 'i' );

Comandos predefinidos

Lcd8_Cmd
Descripcin: Enva un comando al LCD. Se puede pasar a la funcin una de las constantes predefinidas. void Lcd8_Cmd(unsigned short command); Ejemplo: Limpia el LCD Lcd8_Cmd(LCD_CLEAR);

Comando
LCD_FIRST_ROW LCD_SECOND_ROW LCD_THIRD_ ROW LCD_FOURTH_ROW LCD_CLEAR LCD_RETURN_ HOME LCD_CURSOR_ OFF LCD_UNDE RLINE_ ON LCD_BLINK_ CURSOR_ ON LCD_MOVE_ CURSOR_LEFT LCD_MOVE_ CURSOR_ RIGHT LCD_TURN_ON LCD_TURN_OFF LCD_SHIFT_LEFT LCD_SHIFT_RIGHT

Funcin
Mueve el cursor a la 1a. fila. Mueve el cursor a la 2a. fila. Mueve el cursor a la 3a. fila. Mueve el cursor a la 4a. fila. Limpia el display. Regresa el cursor a la posicin 1,1. Los datos de la RAM no son afectados. Apaga el cursor. Coloca el caracter subrayado. Parpadeo del cursor. Mueve el cursor hacia la izquierda sin cambiar la RAM Mueve el cursor hacia la derecha sin cambiar el contenido de la RAM Enciende el display Apaga el display Mueve el display hacia la izquierda sin cambiar el contenido de la RAM Mueve el display hacia la derecha sin cambiar el contenido de la RAM

LCD 8 BITS
Disear el programa que inicialice un LCD, usando un bus de datos de 8 bits, y a continuacin mande un mensaje de bienvenida. El mensaje debe desplazarse hacia la izquierda a derecha en forma continua.

LCD 8 BITS (algoritmo)


1. Inicialice los puertos de datos y control. 2. Enva mensaje a desplegar. 3. Enva comando de desplazamiento hacia la izquierda y la derecha. 4. Repite el paso 3.

06/04/2011

LCD 8 BITS (esquemtico)

LCD 8 BITS ) (
programa 1

Ejercicio propuesto
Programa que forme la palabra HOLA en un LCD, configurado para utilizar un bus de 8 bits. Las letras deben desplazarse de derecha a izquierda. Primero debe aparecer la H, moviendose desde la derecha a la primer columna a la izquierda. Enseguida debe aparecer la O, tambien saliendo de la derecha y terminando a la derecha de la letra H. Lo mismo debe suceder para las letras L y A. El programa debe ser ciclico.
H

HO

HOL H

H O

HO LA

LCD (funciones bus 4 bits)


Lcd_Config Lcd_Init Lcd_Out Lcd_Out_Cp Lcd_Chr Lcd_Chr_Cp Lcd_Cmd

Lcd_Config
4 bits. El puerto de Control (ctrlport) y Datos (dataport) tiene las asignaciones de terminales especificadas. void Lcd_Config(
unsigned short *ctrl_data_port, unsigned short RS, unsigned short EN, unsigned short WR, unsigned short D7, unsigned short D6, unsigned short D5, unsigned short D4

Descripcin: Inicializa LCD usando un bus de datos de

);

06/04/2011

Lcd_Config 2
Ejemplo: Lcd_Config(&PORTC,1,3,2,4,5,6,7);

Lcd_Config 2
Ejemplo: Lcd_Config(&PORTC,0,1,2,4,5,6,7);

Lcd_Init
Descripcin: Inicializa el LCD usando un bus de 4 bits. El puerto de Control (ctrlport) y Datos (dataport) tiene la siguiente asignacin de terminales.E ctrl_data_port.3 RS ctrl_data_port.2 D7 ctrl_data_port.7 D6 ctrl_data_port.6 D5 ctrl_data_port.5 D4 ctrl_data_port.4 void Lcd_Init(unsigned short *ctrl_data_port);

Lcd_Init 2
Ejemplo: Lcd_Init(&PORTB);

Lcd_Out
Descripcin: Imprime mensaje en el LCD en la fila y columna especificada (row y col). void Lcd_Out(
unsigned short row, unsigned short col, char *text );

Lcd_Out_Cp
Descripcin: Imprime mensaje en el LCD en la posicin actual del cursor. void Lcd_Out_Cp(char *text); Ejemplo:
- Imprime Here! en la posicin actual del cursor

Ejemplo:
-Imprime Hello! en el LCD en la lnea 1, columna 3

Lcd_Out(1, 3, "Hello!");

Lcd_Out_Cp("Here!");

06/04/2011

Lcd_Chr
Descripcin: Imprime un caracter en el LCD en la fila y columna especificada (row y col). void Lcd_Chr(
unsigned short row, unsigned short col, char character );

Lcd_Chr_Cp
Descripcin: Imprime un caracter en el LCD en la posicin actual del cursor. void Lcd_Chr_Cp(char character); Ejemplo:

Ejemplo:
- Imprime la letra i en el LCD en la lnea 2,y columna 3

- Imprime la letra e en la posicin actual del cursor

Lcd_Chr_Cp('e');

Lcd_Out(2, 3, 'i' );

Lcd_Cmd
Descripcin: Enva un comando al LCD.
Se puede pasar a la funcin una de las constantes predefinidas. Los comandos son los mismos para ambos modos de manejo del LCD (bus 8 o 4 bits).

LCD 4 BITS
Disear el programa que inicialice un LCD, usando un bus de datos de 4 bits, y a continuacin mande un mensaje cualquiera de bienvenida. El mensaje debe desplazarse hacia la derecha en forma continua.

void Lcd_Cmd(unsigned short command); Ejemplo: - Apaga el cursor, no aparece en el LCD Lcd_Cmd(LCD_CURSOR_OFF);

LCD 4 BITS (algoritmo)


Inicialice los puertos de datos y control. Enva mensaje a desplegar. Enva comando de desplazamiento hacia la derecha. Repite el paso 3.

LCD 4 BITS (esquemtico Config)

06/04/2011

LCD 4 BITS ) (
programa 2

LCD 4 BITS (esquemtico Init)

Conversin de tipo de datos


Tipo de dato a cadena ByteToStr ShortToStr WordToStr IntToStr LongToStr FloatToStr

ByteToStr
Descripcion: Crea una cadena de salida de un pequeo numero sin signo (valor numrico menos a 0x100 == 256 ). La cadena esta ajustada a un ancho de 3 caracteres; Las posiciones a la izquierda que no se usan en la conversin se rellenan con espacios. void ByteToStr(unsigned short number, char *output); Ejemplo: unsigned short t = 24; char *txt= ; //se inicializa un apuntador a 4 espacios

ByteToStr(t, txt); // txt es " 24" (un espacio en blanco)

ShortToStr
Descripcin: Crea una cadena de salida de un numero pequeo con signo (valor numrico menor a 0x100). La cadena esta ajustada a un ancho de 4 caracteres; Las posiciones a la izquierda que no se usan en la conversin se rellenan con espacios.

WordToStr
Descripcin: Crea una cadena de salida de un numero sin signo (Valor numrico de una variable unsigned). La cadena esta ajustada a un ancho de 5 caracteres; Las posiciones a la izquierda que no se usan en la conversin se rellenan con espacios. void WordToStr(unsigned number, char *output);
Ejemplo: unsigned t = 437; ; // Se inicializa un apuntador de 5 espacios char *txt= ; // Inicializa un apuntador con 6 espacios // txt es 437" (dos espacios vacios)

void ShortToStr(short number, char *output);


Ejemplo: short t = -4; char *txt=

WordToStr(t, txt); ShortToStr(t, txt); // txt es " -4" (dos espacio en blanco)

06/04/2011

IntToStr
Descripcin: Crea una cadena de salida de un numero con signo (Valor numrico de una variable int). La cadena esta ajustada a un ancho de 6 caracteres; Las posiciones a la izquierda que no se usan en la conversin se rellenan con espacios.

LongToStr
Descripcin: Crea una cadena de salida de un numero largo con signo (Valor numrico de una variable long).

La cadena esta ajustada a un ancho de 11 caracteres; Las posiciones a la izquierda que no se usan en la conversin se rellenan con espacios.

void IntToStr(int number, char *output);


Ejemplo: int j = -4220; char *txt= ; // Inicializa un apuntador con 6 espacios // txt es " -4220" (un espacio en blanco)

void LongToStr(long number, char *output);


Ejemplo: long jj = -3700000; char *txt= ; // Inicializa un apuntador con 12 espacios // txt es -3700000" (3 espacios en blanco)

IntToStr(j, txt);

LongToStr(jj, txt);

FloatToStr

Descripcin: Crea una cadena de salida de un numero de punto f lotante. La cadena contiene un formato normalizado de un numero (mantisa entre 0 y 1) con signo en la primera posicin. La mantisa esta ajustada a un formato de 6 dgitos, 0.ddddd; Hay siempre 5 dgitos a continuacin del punto decimal.

Contador 0-9 (problema)


Se quiere un programa que visualice un conteo de 0 a 9 en un LCD.

void FloatToStr(float number, char *output);


Ejemplo: float ff = -374.2; char *txt= ; // Inicializa un apuntador con 14 espacios

FloatToStr(ff, txt); // txt es "-0.37420e3"

Contador 0-9 (algoritmo)


1. 2. 3. 4. 5. 6. 1. Configura el LCD 2. Inicializa el contador 3. Convierte a ASCII el valor del contador 4. Enva valor en ASCII al LCD 5. Incrementa el contador 6. Regresa a 3

Contador 0-9 (programa)

10

06/04/2011

Contador 0-9 (esquemtico)

Ejercicio propuesto
Programa que utilice un LCD, configurado para usar un bus de 8 bits. En el LCD deben aparecer en forma secuencial, los nmeros de la secuencia 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768. Los numero deben ser generados por operaciones aritmticas. El desplegado debe hacerse de la forma mostrada en las siguientes figuras. Se utiliza la segunda fila, presentando hasta 3 numeros consecutivos, un numero a la izquierda, uno mas al centro y otro a la derecha.

Ejercicio propuesto
Serie de numeros Serie de numeros 1 Serie de numeros 1 2

Ejercicio propuesto
El alumno diseara un programa en donde se muestre en un LCD los nmeros desde 00 hasta el 99. Con un intervalo de tiempo entre cambio igual a 500 milisegundos.

Serie de numeros 1 2 4

Serie de numeros 8

Serie de numeros 8 16

Serie de numeros 8 16 32

Serie de numeros 64 128 256

Serie de numeros 8192 16384

32768

Ejercicio propuesto
Contador 00-99 cada 500 mseg 00 Contador 00-99 cada 500 mseg 01 Contador 00-99 cada 500 mseg 02

Contador 00-99 cada 500 mseg 03

Contador 00-99 cada 500 mseg 04

Contador 00-99 cada 500 mseg 05

Contador 00-99 cada 500 mseg 06

Contador 00-99 cada 500 mseg 99

11