Display's LCD alfanuméricos basados en HD4478x / ¿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. Admitiéndose 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 están 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 perfectamente 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 pueden 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 relacionándolos (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

de 40H a 47H

de 48H a 4FH

de 50H a 57H

de 58H a 5FH

de 60H a 67H

de 68H a 6FH

de 70H a 77H

de 78H a 7FH