15. LCD Display

Post on 25-Jan-2016

59 views 18 download

description

Aqui se explica Como conectar

Transcript of 15. LCD Display

Carrera: Técnico Universitario

en Electrónica.

Profesor: Guelis Montenegro Z.

Microcomputadores:

LCD Display.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

LCD Display Un LCD (Liquid Crystal Display – Pantalla de

Cristal Líquido) es una herramienta muy utilizada

en programación que despliega información.

El LCD puede representar letras, números y

caracteres presentes en el código ASCII.

Un ejemplo típico de su uso es en las cabinas

telefónicas, donde se visualiza el costo y tiempo

de la llamada.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Código ASCII

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Código ASCII

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

LCD Display Se definen por la cantidad de caracteres posibles

de escribir en una línea ( o fila) y la cantidad de

líneas (o filas) que poseen, es decir:

“número_carácteres” x “filas”

Ejemplos de módulos LCD alfanuméricos como:

20x4, 20x2, 16x4, 16x2, 8x2, etc.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

LCD Display 20x4

(20 carácteres x 4 filas)

Ejemplos de LCD Display

LCD Display 8x2

(8 carácteres x 2 filas)

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

LCD Display 16x2 El LCD alfanumérico a estudiar será el 16x2.

Éste permite visualizar 2 líneas de 16 carácteres

cada una. Cada carácter está compuesto por una

matriz de led’s 7x5 pequeñísimos, permitiendo

formar cualquier letra.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

LCD Display 16x2

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Caracteres más usados

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Caracteres más usados

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Caracteres más usados

Distribución de pines El LCD Display tiene 14 pines.

#PIN Símbolo Descripción

1 GND Pin conectado a GND (tierra).

2 Vcc Pin conectado a 5[v].

3 VeeAjuste para el contraste/brillo del

LCD (varía entre 0-5[v]).

4 RS Registro de control.

5 R/WRead/Write, lectura y escritura

del LCD.

6 ENEnable, habilita o deshabilita el

módulo LCD.

7-14 DB0-DB7 Bus de datos (8 bits).

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Distribución de pines PRECAUCIÓN: los pines se enumeran del 1 al

14 al dorso del LCD.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Funcionamiento Interno Se deben analizar los siguientes elementos:

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Funcionamiento Pin: “RS” RS significa Register Select.

Hay dos registros importantes en el LCDllamados:

1. Command Code Register (Código comandode registro).

2. Data Register (Registro de información).

Si RS=0, una instrucción “Command CodeRegister” es seleccionada lo que permite alusuario enviar un código.

Si RS=1, un registro de información esseleccionada lo que permite enviar informaciónpara ser visualizada en el LCD.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Funcionamiento Pin: “R/W” R/W significa Read/Write.

R/W permite enviar información hacia el LCD o

leer información de él.

1. Si R/W=0, se ejecuta la escritura en el LCD.

2. Si R/W=1, se ejecuta la lectura en el LCD.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Funcionamiento Pin: “E”. E significa Enable.

El pin Enable permite habilitar o no el LCD para

que se pueda visualizar información en él.

Si E=1, se habilita el LCD.

Si E=0, se deshabilita.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Operación en 4 u 8 bits. El LCD 16x2 puede ser operado en dos modos

diferentes: modo de 4 bits y modo de 8 bits.

En el modo de 8 bits, los pines del 7 al 14 están

conectados a ocho pines del microcontrolador.

Mientras que en el modo de 4 bits, los pines del

11 al 14 están conectados a sólo cuatro pines del

microcontrolador.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Operación en 4 u 8 bits. La principal ventaja de operar en el modo 8 bits

(DB7 – DB0) es que la carga de datos se hace

más rápida y la información puede ser

actualizada más rápidamente.

La razón obvia de operar en el modo de 4 bits

(DB7 – DB4) es ahorrar o guardar los 4 pines

restantes para realizar algún proyecto que

requiera más pines de lo pensado.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Conexionado físico

del LCD 16x2

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Conexionado físico

del LCD 16x2

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Conexionado físico del LCD

16x2 con el PIC16F877A Desde librería

“lcd.c” se deducen las

conexiones del LCD:

D0 Enable

D1 RS

D2 RW

D4 D4

D5 D5

D6 D6

D7 D7

Nota: también se puede conectarcon el puerto B.

Instrucciones en Lenguaje C

del LCD Display. Todos los LCD’s utilizan un fichero (driver) para

que puedan funcionar.

El compilador CCS incorpora un fichero quepermite manejar con gran facilidad el LCD. Paratales efectos, debe declararse al inicio el fichero“lcd.c” en la directiva include como sigue:

#include <lcd.c>

Ésta librería contiene la totalidad de las funcionesnecesarias para operar con el LCD.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Funciones de librería lcd.cLas funciones que otorga la librería LCD.c son:

lcd_init();

lcd_gotoxy(posición,fila);

lcd_getc(posición,fila);

printf(lcd_putc,…)

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Función: lcd_init(); Función: lcd_init();

Es la primera función que debe ser llamada.

Borra la pantalla LCD.

Configura y adapta el LCD al formato del display.

Prepara el modo encendido, el cursor apagado y

sin parpadeo.

Se declara después de void main().

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Función: lcd_gotoxy(…); Función: lcd_gotoxy(posición,línea)

Indica la posición del cursor del LCD donde se

debe escribir.

Ejemplos:

a. Escribir en posición 5 y fila 2:

lcd_gotoxy(5,2);

b. Escribir en posición 7 y fila 1:

lcd_gotoxy(7,1);Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Función: lcd_getc(…); Función: lcd_getc(posición,línea);

Lee el carácter del par (posición,línea).

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Función: printf(lcd_putc,…);

Función: printf(lcd_putc,…);

Permite escribir en el LCD.

Además, si es necesario se debe indicar:

1. \f se limpia el LCD.

2. \n el cursor va a la posición(1,2).

3. \b el cursor retrocede una posición.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Se puede definir de 3 formas:

1. printf(lcd_putc,string);

2. printf(lcd_putc,string,variables);

“string” es una cadena o arreglo de caracteres;

“variables” es una lista de variables separadas

por comas.

Función: printf(lcd_putc,…);

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Función: printf(…); Formato: printf(lcd_putc,%nt,…)

La variable “n” es opcional y puede ser:

Variable “n” Descripción

1 – 9 Para mencionar cantos caracteres se deben

especificar.

01 – 09 Para indicar la cantidad de ceros a la

izquierda.

1.1 – 9.9 Para coma flotante.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Función: printf(…); La variable “t” puede indicar:

Símbolo Descripción

c Carácter.

s Cadena o carácter (cadena=string).

u Entero sin signo (unsigned).

d Entero con signo (int).

Lu Entero largo sin signo (large unsigned).

Ld Entero largo con signo.

x Entero hexadecimal (minúsculas).

X Entero hexadecimal (mayúsculas).

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Función: printf(…); La variable “t” puede indicar:

Símbolo Descripción

Lx Entero largo hexadecimal (minúsculas).

LX Entero largo hexadecimal (mayúsculas).

f Flotante con truncado (float).

g Flotante con redondeo.

e Flotante con formato exponencial.

wEntero sin signo con decimales. La 1ª cifra

indica el total, la 2ª el número de decimales.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Ejemplos: printf(…);

Formato int H=3; int H=58;

printf(lcd_putc,“%03u”,H); 003 058

printf(lcd_putc,“%u”,H); 3 58

printf(lcd_putc,“%d”,H); 3 58

printf(lcd_putc,“%x”,H); 03 3a

printf(lcd_putc,“%X”,H); 03 3A

printf(lcd_putc,“%f”,H);

printf(lcd_putc,“%3.2w”,H); 0.03 0.58

printf(lcd_putc,“%8.1w”,H); 0.3 5.8

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Resumen: Funciones

en C del LCD.

Función: lcd_init();

Se declara después de void main().

Función: lcd_gotoxy(posición,línea);

Se declara antes de printf(…);

Función: printf(lcd_putc,string,variables);

Se declara cuando se escribe un string en el LCD.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Ejemplo1: LCD Display 16x2

Desarrolle un programa para el microcontrolador

PIC16F77A en el que utilizando un LCD Display

16x2 se muestre los siguientes textos “centrados”:

a. En la primera línea “Guelis D.” y en la

segunda, “Montenegro Z.”.

b. Luego de 2[s], se debe mostrar en la primera

línea la palabra “Tec. Electronico” y en la

segunda, “UTFSM JMC”.

c. Este proceso se vuelve a repetir.

Utilice el puerto D como salida para el Display

LCD.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Ejemplo1: LCD Display 16x2#include <16F877A.h>; #fuses XT, …, NODEBUG; #use delay (clock=4000000)

#include <lcd.c>

void main(){

set_tris_D(0); // Puerto a usar

lcd_init(); // Inicio de LCD

while(1){

printf(lcd_putc,"\f"); // Borrar por completo pantalla LCD

lcd_gotoxy(5,1); // Escribir en posición 5 y línea 1

printf(lcd_putc,"Guelis D."); // Escribir lo que hay entre comillas

lcd_gotoxy(3,2); // Escribir en posición 3 y línea 2

printf(lcd_putc,"Montenegro Z."); // Escribir lo que hay entre comillas

delay_ms(2000); // Retardo de 2 [s]

printf(lcd_putc,"\f"); // Borrar por completo pantalla LCD

lcd_gotoxy (1,1); // Escribir en posición 1 y línea 1

printf(lcd_putc,"Tec. Electronica"); // Escribir lo que hay entre comillas

lcd_gotoxy(4,2); // Escribir en posición 4 y línea 2

printf(lcd_putc,"UTFSM JMC"); // Escribir lo que hay entre comillas

delay_ms(2000); // Retardo de 2[s]

printf(lcd_putc,"\f"); // Borrar por completo pantalla LCD

}

}

Ejemplo1: LCD Display 16x2

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Mostrar demostración

Ejemplo2: LCD Display 16x2

Desarrolle un programa para el microcontrolador

PIC16F77A en el que utilizando un LCD Display

16x2 realice lo siguiente:

1. Se muestre el nombre del alumno (nombres en

línea 1 y apellidos en línea 2) si el pin RC0 está

en estado alto.

2. Por otra parte, si el pin RC0 está en estado bajo,

que se muestre su fecha de nacimiento en la

línea 1 y su edad en la línea 2.

Utilice el puerto D como salida para el Display

LCD.

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Ejemplo2(1): LCD Display 16x2#include <16F877A.h>; #fuses XT, …, NODEBUG; #use delay (clock=4000000);#include <lcd.c>

void main(){

set_tris_C(1); // Pin RC0 como entrada

set_tris_D(0); // Puerto a usar para el LCD

lcd_init(); // Inicio de LCD

while (1){

printf(lcd_putc,"\f"); // Borrar por completo pantalla LCD

if(input_C()==1){

lcd_gotoxy(5,1); // Escribir en posición 5, línea 1

printf(lcd_putc,"Guelis D."); // Escribir en pantalla

lcd_gotoxy(3,2); // Escribir en posición 3, línea 2

printf(lcd_putc,"Montenegro Z."); // Escribir en pantalla

}

else{

lcd_gotoxy(4,1); // Escribir en posición 4, línea 1

printf(lcd_putc,"11/04/1989"); // Escribir en pantalla

lcd_gotoxy(5,2); // Escribir en posición 5, línea 2

printf(lcd_putc,"Edad: 25"); // Escribir en pantalla

}

}

}

Si se implementa

este código. ¿Cuál

podría ser su

problema?

Ejemplo2(1): LCD Display 16x2

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Mostrar demostración

Ejemplo2(2): LCD Display 16x2#include <16F877A.h>; #fuses XT, …, NODEBUG; #use delay (clock=4000000);#include <lcd.c>

void main(){

set_tris_C(1); // Pin RC0 como entrada

set_tris_D(0); // Puerto a usar para el LCD

lcd_init(); // Inicio de LCD

while (1){

printf(lcd_putc,"\f"); // Borrar por completo pantalla LCD

while (input_C()==1){

lcd_gotoxy(5,1); // Escribir en posición 5, línea 1

printf(lcd_putc,"Guelis D."); // Escribir en pantalla

lcd_gotoxy(3,2); // Escribir en posición 3, línea 2

printf(lcd_putc,"Montenegro Z."); // Escribir en pantalla

}

printf(lcd_putc,"\f");

while (input_C()==0){

lcd_gotoxy(4,1); // Escribir en posición 4, línea 1

printf(lcd_putc,"11/04/1989"); // Escribir en pantalla

lcd_gotoxy(5,2); // Escribir en posición 5, línea 2

printf(lcd_putc,"Edad: 25"); // Escribir en pantalla

}

}

}

¿Qué sucede si no está ésta instrucción?

Se “superponen” las escrituras.

Ejemplo2(2): LCD Display 16x2

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Mostrar demostración

Ejemplo3: LCD Display 16x2

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Desarrolle un programa para el microcontrolador

PIC16F77A en el que utilizando un LCD Display

16x2 realice lo siguiente:

1. Una cuenta ascendente desde el número 0 a 50

si el pin RC0 está en 1. Para ello, en la línea 1

se muestra “Cuenta arriba” y en la línea 2,

“Numero: …”.

2. Ahora, si el pin RC0 está en 0. En la línea 1 se

muestra “Cuenta abajo” y en la línea 2,

“Numero: …”.

Utilice el puerto D como salida para el Display

LCD.

…MISMA INTRODUCCIÓN DE SIEMPRE…

void main(){ set_tris_C(1); set_tris_D(0); lcd_init();

while(1){

while(input_C()==1){ for(cuenta=0;(cuenta<51)&&(input_C()==1);cuenta++){

printf(lcd_putc, "\f");

lcd_gotoxy(3,1);

printf(lcd_putc,"Cuenta arriba");

lcd_gotoxy(4,2);

printf(lcd_putc,"Numero: %d", cuenta);

delay_ms(500);

}

}

while(input_C()==0){ for(cuenta=100;(cuenta>49)&&(input_C()==0);cuenta--){

printf(lcd_putc, “\F”);

lcd_gotoxy(3,1);printf(lcd_putc,"Cuenta abajo");

lcd_gotoxy(4,2);

printf(lcd_putc,"Numero: %d", cuenta);

delay_ms(500);

}

}

}

}

Ejemplo3: LCD Display 16x2

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015

Mostrar demostración

Agradecimientos

Muchas gracias por su atención…

Microcomputadores – Técnico Universitario en Electrónica. 1º Semestre 2015