DISPLAY'S
LCD / ¿Cómo usarlos?
Muchas aplicaciones
microcontroladas requieren mostrar datos de diversas formas. Para ello
se puede emplear fácilmente un display LCD.Estos módulos son la solución
ideal en los casos donde se desea mostrar menúes al usuario, respuestas
a determinadas secuencias de comandos, para lo cual el hardware de
control se resume en un par de teclas del tipo cursos. También son muy
útiles en sistemas de mediciones múltiples y simultaneas, donde de
otra forma habría que emplear cantidades de decodificadores BCD y
transistores para comandar displays de 7 segmentos convencionales. Ni
hablar del tiempo que esto le quita al software del µC.
Conexionado:
La conexión del módulo LCD y el circuito puede realizarse por
medio de un cable plano de 14 hilos, similar al que se emplea en las
disketteras o discos duros. Admitiendose que el display está conformado
por un controlador del tipo HD44780, de la japonesa Hitachi.
Lamentablemente la disposición de los terminales en el LCD aún no
estan normalizadas, por lo que el montador deberá conseguir la hoja de
datos al momento de comprar el display y así poder usarlo tranquilo. Si
bien los terminales no son normalizados, los tipos de señal manejados
por ellos son casi estándar, por lo que no hay casi diferencia entre
cada uno de ellos. Puede variar uno que otro comando, pero no el
cableado del módulo en lo que a señales se refiere.
Pin
|
Símbolo
|
E/S
|
Función
|
1
|
Vss
|
-
|
0V
(Tierra) |
2
|
Vdd
|
-
|
+5V
± 0.25V (Tensión positiva de alimentación) |
3
|
Vo(*)
|
-
|
Tensión
negativa para el contraste de la pantalla |
4
|
RS
|
E
|
Selector
de Dato/Instrucción* |
5
|
R/W*
|
E
|
Selector
de Lectura/Escritura* |
6
|
E
|
E
|
Habilitación
del módulo |
7
|
DB0
|
E/S
|
BUS
DE
DATOS
|
8
|
DB1
|
E/S
|
9
|
DB2
|
E/S
|
10
|
DB3
|
E/S
|
11
|
DB4
|
E/S
|
12
|
DB5
|
E/S
|
13
|
DB6
|
E/S
|
14
|
DB7
|
E/S
|
(*)
ver figura siguiente.

El potenciómetro debe ser de entre 10 y 20 Kohms
Obs.:
En la práctica el LCD es perféctamente visible con una tensión de
1.2V, haciendo innecesaria una fuente simétrica, con sólo subir la
corriente de alimentación al LCD el tema está terminado
Clasificación de
los códigos de Instrucción:
Para sincronizar la velocidad de trabajo del controlador interno
con las posibles velocidades de los sistemas de control a los cuales
puede ser conectado, los módulos multi-matrix disponen de dos registros
que puoden ser accedidos por los µC ó µP externos.
Los registros internos de
instrucciones (RI) y los de datos (RD) almacenan temporalmente la
información de control y la que deberá mostrarse para poder adecuar
los procesos a los tiempos que la tecnología LCD requiere.
En condiciones de uso normal, las
instrucciones mas empleadas son las de transferencia con la RAM interna,
la cual envía datos al display. Pero como el contador interno
incrementa automáticamente (o decrementa) en una unidad la dirección
de la RAM posteriormente a cada instrucción de escritura de datos el número
final de instrucciones del programa se ve reducido a un puñado.
Durante cada operación interna
del µC, el bit 7 permanece activo (estado alto), esto es usado entonces
como busy flag ó bandera de ocupado. Asimismo, cuando se desee una
velocidad de operación alta, alrededor de 50KHz, el estado de este bit
o bandera deberá ser constantemente monitorizado, a fin de mantener la
sincronicidad de los sistemas sin pérdida de cadenas de datos.
Juego de Instrucciones:
Limpiar (Borrar) Pantalla:
Esta instrucción escribe el
caracter ASCII 20H, que corresponde al vacío, en todas las
direcciones de la DD-RAM (Display Data RAM), provocando que todo
mensaje escrito desaparezca y el cursor retorna a la posición más
izquierda de la primera línea (en caso de tener más de una).
RS
|
R/W
|
DB7
|
|
|
|
|
|
|
DB0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
Retorno:
Hace que el cursor vuelva a la
posición mas izquierda de la primera línea (si tiene mas de una) y
hace volver a su posición inicial a los mensajes que hayan sido
desplazados (animados de un lado a otro de la pantalla).El contenido
de la DD-RAM (Display Data RAM) no se modifica.
RS
|
R/W
|
DB7
|
|
|
|
|
|
|
DB0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
x
|
Selección del modo de operación:
I/D:
Incrementa (I/D = 1) o decrementa (I/D = 0) la dirección de la DD-RAM
(Display Data RAM) en una unidad cada vez que es usada una instrucción
de lectura o escritura. El cursor se mueve hacia la derecha cuando el
bit I/D está en uno.Lo mismo se aplica para la CG-RAM (Character
Generator RAM).
S:
cuando S = 1 el mensaje se desliza hacia la izquierda (si el bit I/D =
1) o hacia la derecha (si el bit I/D = 0).El cursor acompaña el
movimiento de los caracteres.
RS
|
R/W
|
DB7
|
|
|
|
|
|
|
DB0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
I/D
|
S
|
Control de encendido del display
(Activo/Inactivo):
D:
El mensaje aparece (se hace visible) cuando D = 1 y desaparece
(invisible) cuando D = 0, pero como el contenido de la DD-RAM
permanece inalterado, el mensaje no cambia cuando D = 1.
C:
El cursor apacere (es visible) cuando C = 1 y desaparece (invisible)
cuando C = 0. Los datos contenidos en pantalla no se ven afectados por
operaciones en este bit.. El cursor es representado por cinco puntos
de la octava línea cuando la matríz de caracteres es de 7x5 o de 8x5
y utilizando cinco puntos de la décima línea cuando la matríz es de
11x5.
B:
Cuando B = 1 y C = 1 el cursor aparece alternando con el texto en ese
segmento con la matríz con todos sus pixels (puntos) encendidos
(negros) en intervalos regulares de 0,4 segundos. Cuando B = 1 y C =
0, obtenemos la activación de un cubo negro (todos los pixels de la
matríz activos) con intervalos regulares de 0,4 segundos, quedando
relegado el texto que hubiese en el display.
RS
|
R/W
|
DB7
|
|
|
|
|
|
|
DB0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
D
|
C
|
B
|
Desplazamiento del cursor con
respecto al mensaje:
Desplaza el cursor con respecto
al mensaje hacia la derecha o izquierda sin la necesidad de escribir o
leer datos del display. Esta función se emplea normalmente para
modificar sólo algunos datos en pantalla evitándonos la necesidad de
limpiarla (borrarla) y escribir nuevamente todo su contenido.
S/C
|
R/L
|
Efecto
|
0
|
0
|
Desplaza el
cursor hacia la izquierda (decremetna el contador de
direcciones en una unidad). |
0
|
1
|
Desplaza el
cursor hacua la derecha(incrementa el contador de direcciones
en una unidad) |
1
|
0
|
Desplaza el
cursor, junto con el mensaje, hacia la izquierda. |
1
|
1
|
Desplaza el
cursor, junto con el mensaje, hacia la derecha. |
RS
|
R/W
|
DB7
|
|
|
|
|
|
|
DB0
|
0
|
0
|
0
|
0
|
0
|
1
|
S/C
|
R/L
|
x
|
x
|
Configuración de el modo de
funcionamiento:
DL:
Estabelece el número de bits de interconexión. Los datos son
transportados en 8 bits (DB7 - DB0) cuando DL =
1, y en 4 bits (DB7 - DB4) cuando DL = 0. Cuando
los datos viajan en 4 bits, es preciso efectuar dos operaciones en vez
de una. En una primera instancia viajan los bits mas significativos y,
en una última, viajan los menos significativos.
N:
Establece el número de líneas de la pantalla.
F:
Establece el tipo de matriz.
N
|
F
|
Nro. de
líneas
|
Tipo de
Matríz
|
Factor de
trabajo
|
Observaciones
|
0
|
0
|
1
|
7x5
(8x5)
|
1/8
|
|
0
|
1
|
1
|
10x5
|
1/11
|
|
1
|
x
|
2
|
7x5
(8x5)
|
1/11
|
Cuando la
matríz es de 10x5 no es posible usar dos líneas.. |
Direccionamiento de la CG-RAM:
Establece la dirección de la CG-RAM
(Character Generator RAM) en el contador de direcciones como un número
binario y, luego, los datos son escritos o leidos por la CPU
relacionandolos (vinculándolos) con la CG-RAM.
RS
|
R/W
|
DB7
|
|
|
|
|
|
|
DB0
|
0
|
0
|
0
|
1
|
A5
|
A4
|
A3
|
A2
|
A1
|
A0
|
Direccionamiento de la DD-RAM:
Establece la dirección de la DD-RAM
(Display Data RAM) en el contador de direcciones como un número
binario y, posteriormente, los datos leídos o escritos son
relacionados con la DD-RAM. Para todos los displays de una línea el número
puede variar de 80H a CFH. Ppara los de dos líneas, el número varia
de 80H a A7H para la primera línea, y de C0H a E7H para la segunda línea.
RS
|
R/W
|
DB7
|
|
|
|
|
|
|
DB0
|
0
|
0
|
1
|
A6
|
A5
|
A4
|
A3
|
A2
|
A1
|
A0
|
Lectura directa del Busy flag
(bandera de ocupado):
Permite la lectura del bit 7 que
funciona como busy flag ó bandera de ocupado. Cuando BF = 1 el
sistema está ocupado en alguna operación interna y no acepta ninguna
instrucción hasta que BF = 0, o sea que se desocupe. Cualquier
instrucción enviada por error no será leida, por lo que será nula.
Además de esto, permite la lectura del contador de direcciones
expresado por un número binario (A6-A0). Como
el contador de direcciones contiene tanto a la DD-RAM (Display Data
RAM) como a la CG-RAM (Character Generator RAM) su contenido depende
de la instrucción anterior.
RS
|
R/W
|
DB7
|
|
|
|
|
|
|
DB0
|
0
|
1
|
BF
|
A6
|
A5
|
A4
|
A3
|
A2
|
A1
|
A0
|
Escritura de datos en la CG-RAM o
en la DD-RAM:
Escribe palabras binarias
(datos) de 8 bits D7-D0 tanto en la CG-RAM (Character
Generator RAM) como en la DD-RAM (Display Data RAM) dependiendo de la
instrucción anterior. Posteriormente a la escritura, la dirección es
automáticamente incrementada o decrementada en una unidad de acuerdo
con el modo de trabajo seleccionado.
RS
|
R/W
|
DB7
|
|
|
|
|
|
|
DB0
|
1
|
0
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
D0
|
Lectura de datos de la CG-RAM o la
DD-RAM:
Lee de la DD-RAM o la CG-RAM un
dado de 8 bits, siendo que a lectura será de la CG-RAM o la DD RAM de
acuerdo con la instrucción anterior. Es importante que, precediendo a
esta instrucción de lectura, se lleve a cabo (ejecute) una instrucción
de direccionamiento de la CG-RAM o de la DD-RAM, caso contrario el
dato leído será inválido. Luego de la lectura la dirección es
automáticamente incrementada o decrementada en una unidad de acuerdo
con el modo previamente seleccionado.
RS
|
R/W
|
DB7
|
|
|
|
|
|
|
DB0
|
1
|
1
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
D0
|
Inicialización:
Cada vez que se
conecta la alimentación al módulo debe ser ejecutado un
procedimiento para iniciar el LCD, el cual consiste en enviar al módulo
un grupo inicial de cuatro instrucciones para configurar el modo de
operación para la ejecución de un programa determinado de conexión:
establecer las condiciones de uso, activar o desactivar el display y
borrar la pantalla.
Programa de
inicialización para comunicación con 8 bits:
Características
|
Secuencia
de instrucciones
|
1 Línea
- matríz de 7 x 5 (8 x 5)
|
30H
|
30H
|
06H
|
0EH
|
01H
|
1 Línea
- matríz de 10 x 5
|
34H
|
34H
|
06H
|
0EH
|
01H
|
2 Líneas
- matríz de 7 x 5 (8 x 5)
|
38H
|
38H
|
06H
|
0EH
|
01H
|
Obs.:
deve haber un retraso de tempo de aprox. 15 mS entre cada instrución.
Programación de Caracteres
Especiales:
Estos módulos permiten la
programación de hasta ocho caracteres especiales en formato 7x5 (8x5)
y hasta cuatro caracteres especiales en formato 11x5. Una vez que
estos caracteres están programados en la CG-RAM (Character Generator
RAM), pueden ser accedidos de la misma forma que si pertenecieran a la
memoria original grabada durante la fabricación. Como la memoria RAM
empleada para almacenarlos es volatil, el conveniente diseñar los
programas de conexión de manera que, luego de las instrucciones de
inicialización, sean escritos los caracteres especiales, en la RAM
para su posterior uso, mediante el llamado a rutinas. El segmento de
memoria destinado al almacenamiento de los caracteres especiales se
ubica en forma continua entre las direcciones 40H y 7FH en grupos de
ocho direcciones. Como durante inicialización generalmente se
programa al módulo para direccionamiento automático, ingresando una
vez el dato correspondiente a la dirección del primer caracter
especial no es necesario repetir el direccionamiento en los siguientes
caracteres, de modo que los ocho caracteres especiales pueden ser
grabados secuencialmente sin la repetición de las instrucciones de
direccionamiento. En la tabla se muestran las direcciones de los
caracteres programables:
Nro.
Caracter Programable
|
Ubicación
en Memoria
|
1º
|
de 40H a
47H
|
2º
|
de 48H a
4FH
|
3º
|
de 50H a
57H
|
4º
|
de 58H a
5FH
|
5º
|
de 60H a
67H
|
6º
|
de 68H a
6FH
|
7º
|
de 70H a
77H
|
8º
|
de 78H a
7FH
|
volver al
comienzo....
|