15. LCD Display
-
Upload
francisco-portales-leon -
Category
Documents
-
view
59 -
download
18
Embed Size (px)
description
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