Está en la página 1de 62

MICROCONTROLADORES

Visualizador LCD
Ing. Hctor Jimnez M.

Pantallas de Cristal Lquido

Display LCD (Liquid Crystal Display)

Muestran cualquier carcter alfanumrico,


permitiendo representar cualquier informacin que se
genere

Consta de una matriz de caracteres (normalmente de


5x7 puntos) distribuidos en una, dos, tres o cuatro
lneas de 16 hasta 40 caracteres cada lnea.

LCD Serial

LCD para Grficos

LCD

El proceso de visualizacin es gobernado por un


microcontrolador incorporado a la pantalla
(el modelo ms utilizado es el Hitachi 44780)

El modelo utilizado en el libro es el LM016L


(mdulo de 2 lneas de 16 caracteres cada una)

Su fcil manejo es ideal para dispositivos que necesitan una


capacidad de visualizacin pequea o media
La explicacin siguiente se refiere al modelo LM0I6L
(con pequeas variaciones es vlido para cualquier otro)

LCD

Caractersticas del Mdulo LMOI6L

+ 5V con consumo reducido 7,5 mW

Pantalla de caracteres ASCII, adems de


caracteres griegos, japoneses (Kanji), y smbolos
matemticos

Memoria de 40 caracteres por


visualizndose 16 caracteres por lnea

Pueden ser gobernados de dos formas:


Conexin con bus de 4 bits
Conexin con bus de 8 bits

lnea,

Caractersticas del Mdulo LMOI6L

Movimiento del cursor y cambio de su aspecto

Ocho caracteres programables por el usuario

Desplazamiento de caracteres a la izquierda o a la


derecha

La regulacin de contraste se realiza mediante un


divisor de voltaje con una resistencia ajustable
entre 10k y 20k en el pin VLC

Puede eliminarse la resistencia y conectar VLC a


tierra para fijar el mximo contraste
permanentemente

Patillaje de 14 Pins

LMO16L

SEAL

DEFINICIN

PINES

FUNCIN

DBO....DB7

Data Bus

7.... 14

Bus de Datos.

Enable

E0, LCD no habilitado.


E=I, LCD habilitado.

R/W

Read/Write

R/W=O, escribe en LCD


R/W=1, lee del LCD.

RS

Register Select

R/S=O, Modo Comando


R/S=1, Modo Carcter.

VLC

Liquid Crystal Driving Voltage

Tensin para ajustar el contraste.

VDD

Power Supply Voltage

Tensin de alimentacin, +5V

VSS

Ground

Masa.

Las lneas del bus de datos


son triestados y pasan a
estado de alta
impedancia cuando no
est habilitado.

DDRAM

LMO16L

Zona de memoria RAM - Data Display RAM, se


almacenan los caracteres que se pueden representar

Capacidad de 80 bytes, 40 por lnea, slo 32 se pueden


visualizar a la vez (16 bytes por lnea)

Almacena los cdigos ASCII de los caracteres que


aparecern en pantalla

Existe una correspondencia entre las filas de la pantalla y


las posiciones consecutivas de memoria

DDRAM

De las 80 posibles, las 2 direcciones ms importantes son:

LMO16L

00h (comienzo de la primera lnea)


40h (comienzo de la segunda lnea)

Cada vez que se escribe un dato en la DDRAM automticamente


se apunta a la siguiente posicin, donde se realizar la escritura
del prximo carcter.
Zona de memoria interna no voltil donde se almacena una tabla
con los 192 caracteres que pueden ser visualizados

Caracteres Definidos en CGROM

LMO16L

Cada uno de los caracteres tiene su representacin


binaria de ocho bits

Los ocho nuevos caracteres de usuario no estan


incluidos en tabla interna: se guardan en una zona
de RAM denominada CGRAM (Character
Generator RAM)

Para visualizar un carcter debe recibir por el bus


de datos el cdigo correspondiente

Por ejemplo, para


visualizar el
carcter A el
LCD debe recibir
por su bus de datos
el cdigo b0100
000l

Descripcin De Pins

Modos De Funcionamiento

LMO16L

Tiene 3 modos de funcionamiento principales:

Modo Comando

Por el bus de datos el LCD recibe instrucciones


como Borrar Display, Mover Cursor, Desplazar
a izquierda, etc.

RS y R/W deben estar a 0 para indicar que se


realiza una operacin de escritura.

(La operacin en este modo tarda un mximo de 1,64 ms)

Modos De Funcionamiento

LMO16L

Modo Carcter o Dato

Por el bus de datos se recibe un carcter a escribir en


la DDRAM; se enva el carcter ASCII a visualizar

RS = 1 y R/W = 0 para indicar que est


realizando una operacin de escritura

Tambin se le puede llamar modo carcter


o modo registro
(Una operacin en este modo tarda mximo 40 s)

Modos De Funcionamiento

LMO16L

Modo lectura del Busy Flag LCD Ocupada


En el bit 7 (Busy Flag) del bus de datos el LCD
informa al microcontrolador que est ocupado

Para ello, se lee el bus de datos con RS= 0 y


R/W= 1

Si bit 7 = 1 indica que la pantalla est ocupada


realizando operaciones internas y no puede
aceptar nuevas instrucciones ni datos
Hay que esperar a que el Busy Flag valga 0
para enviarle la siguiente instruccin o carcter

Modos De Funcionamiento

LMO16L

El modo Busy Flag se ha ideado para evitar


posibles problemas de tiempo: no se realiza
ninguna operacin con el LCD hasta
comprobar que no est ocupado

R/W permite leer el registro de estado en el


modo Busy Flag que slo sirve para
comprobar si el controlador ha terminado de
realizar la instruccin que se le ha enviado y
as poder enviar ms

Modos De Funcionamiento

LMO16L

Para un control sencillo, se pueden realizar pausas


despus de cada instruccin o envo de datos para no
leer el registro de estado, evitando el modo de lectura del
Busy Flag

La principal ventaja es que se logra ahorrar un pin del


microcontrolador porque R/W no es necesaria y se
puede conectar directamente a tierra

La deteccin del Busy Flag se sustituye por un retardo


antes de realizar cualquier nueva operacin con el LCD

El retardo debe ser mayor a 1,64 ms si trabaja en modo


comando y mayor de 40 s si trabaja en modo dato

Comandos De Control

Clear Display

Set CGRAM Address

Return Home

Set DDRAM Address

Entry Mode Set

Read Busy Flag

Display Control

Write RAM

Cursor and display shift

Read RAM

Function Set

Comandos De Control
Los comandos se envan a travs del bus de datos.
Para que el LCD los reconozca hay que poner la seal
RS a nivel bajo

Comandos De Control

Clear Display (0 0 0 0 0 0 0 1)

Borra pantalla y devuelve el cursor a la posicin


inicial (direccin 0 de la DDRAM)

Return Home (0 0 0 0 0 0 1 x)

Cursor a direccin origen. Devuelve el cursor la


posicin original de la DDRAM (direccin 00h)
quedando intacto su contenido

Comandos De Control

Entry Mode Set (0 0 0 0 0 1 l/D S)


Modo Entrada. Establece las caractersticas de escritura de
los datos Shift e Increment/Decrement:

S = 0 La informacin visualizada en pantalla no se


desplaza al escribir un nuevo carcter

S = 1 La informacin visualizada se desplaza al escribir


un nuevo carcter. La pantalla se desplaza en el sentido
indicado por el bit l/D cuando el cursor llega al filo de
la pantalla

l/D = 1 Incremento automtico de la posicin del cursor.


La posicin de la DDRAM se incrementa
automticamente tras cada lectura o escritura a la misma

1/D = 0 Decremento de la posicin del cursor. Se


decrementa el puntero de la DDRAM.

Comandos De Control

Display Control (00 0 0 1 D C B)

Control de la pantalla:

B = 0 Blink 0FF, no hay efecto de parpadeo del cursor

B = 1 Blink ON, efecto de parpadeo con cursor


rectangular

C = 0 Cursor 0FF, el cursor no se visualiza

C = 1 Cursor ON, el cursor es visualizado

D = 0 Display 0FF, el display se apaga

D = 1 Display ON, el display se enciende

Comandos De Control

Cursor and Display Shift (0 0 0 1 S/C R/L x x)

Control de los desplazamientos del cursor y de la


pantalla:
RJL =0 Left (izquierda)

RJL = 1 Right (derecha)

SIC = 0 El efecto de desplazamiento se aplica


slo sobre el cursor sin alterar el contenido de
la DDRAM

SIC = 1 El efecto de desplazamiento se aplica


sobre todo el display

Comandos De Control

Function Set (0 0 1 DL N F x x)

Caractersticas de control hardware:

F = O Font Caracteres de 5 x 7 puntos

F = 1 Font Caracteres de 5 x 10 puntos

N = 0 Number Line Pantalla de 1 lnea

N = 1 Number Line Pantalla de 2 lneas

DL =0 Data Length Comunicacin con 4 bits.


Indica al LCD que slo se utilizan las lneas
DB7, DB6, DB5 y DB4 para enviarle datos y
que se har enviando primero el nibble alto, y a
despus el nibble bajo

DL = 1 Data Length Comunicacin con 8 bits

Comandos De Control

Set CGRAM Address


Se va a escribir sobre la direccin CGRAM sealada

Set DDRAM Address (1 d d d d d d d)


Esta instruccin se utiliza para modificar el puntero a
la DDRAM.
Ejemplo, si la direccin es 08h se escribir en el
centro de la 1 lnea

Read Busy Flag


Lee el BF indicando si hay una operacin interna en
curso y lee, adems, el contenido de la direccin
DDRAM apuntada.

Conexin Mediante 4 Bits al Puerto B

Sin lectura del Busy flag

(se ahorra la lnea R/W que se conecta a tierra)

La principal ventaja es que utiliza el mnimo posible de


pines (6 lneas) para el control del LCD

Librera De Subrutinas

LCD_4BIT.INC contiene las subrutinas de control para realizar


las tareas bsicas de control de un mdulo LCD

Las subrutinas principales son:

LCD_Inicializa

Inicializa el LCD para su correcto funcionamiento.


Configura funciones del LCD, produce un reset por
software, borra la memoria DDRAM y enciende la
pantalla.

Es necesario ejecutarla al principio de los programas que


vayan a utilizar la visualizacin mediante LCD

El fabricante especifica que para garantizar una correcta


inicializacin debe realizarse como se indica en la tabla
siguiente:

Librera De Subrutinas

LCD_Carcter
Visualiza en la posicin actual del cursor el cdigo
ASCII del dato contenido en el registro W
LCD_Borra
Borra toda la pantalla y pone el cursor a principio de
la lnea 1
LCD_Lineal
Enva el cursor al principio de la lnea 1
LCD_Linea2
Enva el cursor al principio de la lnea 2

Librera De Subrutinas

LCD_PosicionLineal
Enva el cursor a la posicin de la lnea 1 indicada por (W)
Ejemplo, si (W)=0x08, al ejecutar la subrutina el cursor
ir al centro de la lnea en una pantalla de 16 caracteres

LCD_PosicionLinea2
Igual que el anterior para la lnea 2

LCD_LineaEnBlanco
Visualiza una lnea en blanco

LCD_DosEspaciosBlanco
Visualiza dos espacios en blanco

Nota
La librera ha sido diseada para que funcione
correctamente con el siguiente circuito; donde a las
lneas del bus de datos se han conectado otros
dispositivos

Nota

Por lo tanto no se debe alterar el contenido de las


lneas de la parte baja del Puerto B (no son
utilizadas para el LCD) (pines RB3:RBO), primero
se lee estas lneas y despus se vuelve a enviar este
dato sin cambiarlo

Tambin se debe mantener la configuracin de las


lneas del Puerto B cuando no se utilizan para
enviar datos al LCD. Esto lo supervisa la subrutina
LCD_EscribeLCD

Visualizacin de Caracteres

Como ejemplo de
aplicacin de la
librera se detalla
un programa donde
se indica el
procedimiento para
visualizar los
caracteres de un
mensaje.

Visualizacin De Valores Numricos

LCD_4BIT.INC contiene algunas subrutinas que permiten la


visualizacin de valores numricos de 8 bits:

LCD_ByteCompleto
Visualiza el valor hexadecimal del byte que almacena el registro W
en el lugar actual del cursor

LCD_Byte
Igual que el anterior pero si el nibble alto es un cero visualiza un
blanco en su lugar

Ejemplo, si (W)=b00001110, visualiza 0E

Ejemplo si (W)=00001110, visualiza E (con espacio en blanco en el


nibble alto); si (W)=b1l0101110, visualiza AE

LCD_Nibble
Visualiza el valor hexadecimal que almacena el nibble bajo del
registro W. El nibble alto no es tenido en cuenta

Ejemplo, si (W)=b01010110 visualiza 6, si (W)=b10101110


visualiza E

El siguiente
programa
ejemplo permite
apreciar la
diferencia de
funcionamiento
entre cada una de
estas subrutinas.

Conexin De LCD Mediante 8 Bits

Es conectado a un puerto de 8 bits y se trata como un perifrico


ms. El software de control es algo ms sencillo

Tambin se utiliza el modo Busy Flag, por ello se conecta R/W a


la lnea RA1, aunque se poda haber sustituido por un retardo de
2 ms 50 s, como se hizo con 4 bits

Conexin De LCD Mediante 8 Bits

La ventaja respecto al control de 4 bits, es mayor


rapidez al enviar los 8 bits de una sola vez, en lugar
de empaquetados en bloque de 4 bits

Como inconveniente se destaca el aumento de lneas


de programa. Esto es importante pata el P1C16F84
ya que no tiene muchas lneas de E/S

La librera LCD_4BIT.INC tambin funciona para


este modo. Evidentemente, aunque la disposicin de
las patillas es de conexin a 8 bits, funcionar como
si slo estuviesen conectadas 4 lneas

Visualizacin De Mensajes

Para visualizar mensajes ms o menos largos se


ocupa la librera LCD_MENS.INC que describe
dos subrutinas

LCD Mensaje

visualiza mensajes fijos

LCD_MensajeMovimiento

visualiza mensajes en movimiento

Subrutina Mensaje Fijo

Subrutina Mensaje en Movimiento

Ejemplo De Aplicacin

Visualizacin de un
mensaje fijo donde
se aprecia la
sencillez de la
subrutina
LCD_Mensaje

Up ejemplo de aplicacin podra ser el siguiente:

Nota

Para que aparezcan las comillas, el


mensaje hay que grabarlo precediendo las
comillas visibles con una barra, como en
el siguiente ejemplo:

DT Estudia \Electronica\. Es tu futuro!

Practicas

LCD_01.asm: En la pantalla del mdulo LCD se visualiza el mensaje Hola.


Al terminar de escribir la frase el PIC entrar en modo de bajo consumo

LCD_02.asm: En la pantalla se visualiza el mensaje Hola. La escritura de


cada carcter se ir realizando cada 500 ms. Despus se borrar y comenzar
de nuevo

LCD_03.asm: Programa ejemplo para comprender la utilizacin de las


subrutinas para la visualizacin de datos numricos. Para ello se van a utilizar
sucesivamente y en este orden las subrutinas: LCD_ByteCompleto,
LCD_DosEspaciosBlancos, LCD_Byte, LCD_DosEspaciosBlancos y
LCD_Nibble para dos nmeros que sern:
En la primera lnea un nmero con el nibble alto no cero. Por ejemplo:
1Dh.
En la segunda lnea un nmero con el nibble alto igual a cero. Ej. 0Dh.
As por ejemplo, para los nmeros 1D y 0D se visualizara
1D##lD##D (Primera lnea).
0D###D##D (Segunda lnea)

(donde # viene a significar espacio en blanco)

Practicas

LCD_04.asrn La pantalla visualiza un contador descendente desde


59 hasta 0 y vuelve a repetir la cuenta ininterrumpidamente. En
cada valor estar unos 500 ms

LCD_05.asm: Cada vez que presiona el pulsador conectado al pin


RA4 se incrementa un contador que se visualiza en el centro de la
primera lnea de la pantalla

LCD_06.asm: Igual que el anterior pero cuando llegue a su valor


mximo (por ejemplo 6) se resetea y comienza de nuevo la cuenta

LCD_07.asm: Igual que el anterior, pero se incrementa mientras se


mantenga presionado el pulsador una cuenta cada 200ms

LCD_08.asm: Mientras se mantenga presionado el pulsador


conectado al pin RA4 se incrementa un contador y visualiza en la
pantalla en tres formatos: decimal, hexadecimal y binario. Un
ejemplo:
Primera Lnea:CE 206
Segunda Unea: 11001110

Practicas

Mensaje_01.asm: En pantalla se visualiza un mensaje de


menos de 16 caracteres grabado en la memoria ROM
mediante la directiva DT

Mensaje_02.asm. Repetir el anterior utilizando la subrutina


LCD_Mensaje de la librera LCD_MEN.INC

Mensaje_03.asm: En pantalla se visualizan varios mensajes,


uno detrs de otro. Cada mensaje permanece visualizado
durante 2 segundos. Entre mensaje y mensaje la pantalla se
mantiene apagada durante 200 ms

Mensaje_04.asm: En las dos lineas de la pantalla aparecern


dos mensajes parpadeantes

Mensaje_05.asm: En la primera Lnea de la pantalla


aparecer un mensaje fijo. En la segunda lnea aparecer un
mensaje parpadeante

Practicas

Mensaje_06.asm: En la pantalla se visualizarn varios


mensajes diferentes. El paso de uno a otro se realiza al actuar
sobre el pulsador conectado a la lnea RA4. En pantalla
aparecer por ejemplo:
Mensaje 2 (primera lnea)
COSLADA Moderna. (segunda lnea)

Mensaje_07.asm: En la pantalla se visualizar un mensaje


largo (de ms de 16 caracteres) que se va desplazando a lo
largo de la pantalla. Se utilizar la subrutina
LCD_MensajeMovimiento de la librera LCD_MENS.INC

Mensaje_08.asm: Programa para el juego de la Quiniela: Al


presionar sobre el pulsador conectado aL pin RA4 en la
pantalla aparecer rpidamente 1, X, 2. Cuando suelta
el pulsador, permanece el signo seleccionado

Mensaje_09.asm: En pantalla visualiza Cerrado o Abierto


segn si un pulsador est presionado o no

MICROCONTROLADORES

Visualizador LCD
Ing. Hctor Jimnez M.

ACM1602A

ACM1602A

ACM1602A

ACM1602A

ACM1602A

Funciones del Entrenador

Depurador.- Permite la ejecucin pausada paso por paso de


programas, la revisin de registros, memoria o puerto, y
dependiendo del modelo su modificacin, e inclusive la
modificacin del propio programa
Sd
Df
Df
sd
Df
Sd
Yu
Gvk
Vul
Bhul
klnjkn