Redeya.com
Programación de las pantallas de cristal líquido
Autor: Juan Antonio Rubia Mena masamune@mixmail.com

Indice


Introducción

Actualmente podemos encontrar pantallas de cristal líquido por precios bastante asequibles, y que con un poco de imaginación nos permiten hacer muchas cosas. Además son de manejo bastante sencillo, ya que presentan un bus de datos y un mini-bus de control, y lo que hay que hacer es simplemente mandarle comandos. ;-)

Los módulos que encontramos habitualmente presentan 1, 2 ò 4 filas de 16 ó 20 caracteres y, a pesar de estas variaciones, el circuito integrado que los controla es el mismo. No obstante, existen módulos que poseen otros segmentos, bien números o palabras, para funciones extra.

Desde el punto de vista del controlador, los segmentos extra aparecen dispuestos en una matriz de 5 x 7 puntos donde cada punto de la matriz se corresponde con uno de estos segmentos especiales.

Controlador Hitachi HD44780

El circuito integrado de Hitachi HD44780, o modelos compatibles, es normalmente el encargado del control del sistema. De cara al exterior encontramos un conector de 14 patillas donde se conecta la alimentación, la señal de contraste y todas las señales de control.

La función de cada patilla es la siguiente:

Patilla         Nombre  Nivel           Descripción

 1              Vss      0V              Masa
 2              Vcc      5V              Alimentación
 3              Vee      Nota            Polarización del cristal
 4              RS      lógico           Registro de selección, 1=datos, 0=instrucción
 5              R/W        "             Read/Write, 1=lee 0=escribe
 6              E          "             Habilitación
 7-14           DB0-DB7    "             Bus de datos (DB0, LSB)
Nota:

La tensión de polarización controla el contraste de la pantalla. Para las pantallas de rango normal de temperatura se utiliza una tensión entre 0 y 5V mientras que para los módulos de temperatura extendida se usará una tensión entre 0 y -7V.
Normalmente se recomienda obtener esta tensión con una resistencia variable de entre 10K y 20K conectada entre masa y la tensión adecuada.

Las funciones que podemos efectuar son las siguientes:

  • Escribir comandos
  • Escribir datos
  • Leer datos
  • Leer el estado

Estructura interna del controlador

El controlador posee una memoria RAM que aparece dividida en dos bloques diferenciados: la RAM de datos (DDRAM) y la RAM de caracteres generados (CGRAM).

La DDRAM almacena los códigos ASCII de los caracteres que queramos que aparezcan en pantalla y existe una correspondencia entre las filas de la pantalla y las posiciones consecutivas de memoria. Por otro lado, la CGRAM nos permite definir caracteres especiales que no se encuentren en la memoria ROM que dispone el microcontrolador.

La DDRAM tiene un tamaño de 128 bytes, sea cual sea el tamaño de la pantalla; cuando ésta es más pequeña podemos almacenar en ella caracteres y mostrarlos programando el modo de desplazamiento de pantalla.

Normalmente la primera fila comienza en la dirección 00h y la segunda en la 40h. La excepción es la pantalla de 1 fila por 16 caracteres, en la que la fila se divide en dos porciones de memoria cuyas direcciones van desde la 00h hasta la 07h para los 8 primeros caracteres y desde la 40h hasta la 47h para los otros 8.

La patilla R/W permite leer un registro de estado que sólo sirve para ver si el controlador ha terminado de realizar la instrucción que se le ha enviado y seguir enviando más. Sin embargo, para un control sencillo, podemos realizar pausas después de cada instrucción o envío de datos para no tener que leer el registro de estado

Comandos de control

Los comandos se envían a través del bus de datos. Para que la pantalla los reconozca hay que poner la señal RS a nivel bajo.

Borrar pantalla: 0 0 0 0 0 0 0 1

Limpia la pantalla y pone el cursor en la primera posición.
Tiempo de ejecución 1.64ms

Cursor al principio: 0 0 0 0 0 0 1 x

Coloca el cursor en la primera posición.
Tiempo de ejecución 1.64 ms

Modo de entrada: 0 0 0 0 0 1 i d

* i=1 la posición de la DDRAM se incrementa automáticamente tras cada lectura o escritura a la misma, mientras que si i=0 se configura para decrementar el puntero de DDRAM.

* d=1 la pantalla se desplaza en el sentido indicado por el bit mencionado antes (i) cuando el cursor llega al filo de la pantalla.

Encendido-apagado: 0 0 0 0 1 p c i

Selecciona el encendido de la pantalla (p=1), la visibilidad del cursor (c=1) y la intermitencia del mismo (i=1 parpadea).

Cursor/Desplazamiento: 0 0 0 1 p d x x

Selecciona si se desplaza toda la pantalla (p=1) o sólo el cursor (p=0) sin alterar el contenido de la DDRAM; el bit d selecciona el sentido de desplazamiento; será hacia la derecha si d=1.

Función: 0 0 1 l c f x x x

Selecciona el modo de transmisión, ciclo y fuente de carácter.

* Si l=1 la comunicación es con 8 bits, mientras que en el caso contrario solo se usan líneas d4-d7 del bus, mandando la parte alta y luego, la baja del dato.

* El bit c indica el número de líneas; para c=0 se usará una sóla línea, mientras que si c=0 usaremos 2.

* El bit f establece el tipo de caracteres que usaremos si f=1 los caracteres serán de 5 x 11 puntos, mientras que si f=0 configuramos el controlador para usar caracteres de 5 x 7 puntos.

Dirección en la DDRAM: 1 d d d d d d d

Esta instrucción se utiliza para modificar el puntero a la DDRAM.

Si la dirección es la 00h escribiremos en la primera línea, y la segunda línea empieza en 40h. (Ojo : el display de 1x16 se divide en dos mitades: la izquierda empieza en 00h y la derecha en 40h)

Inicialización

Los controladores de Hitachi se inicializarán de manera automática si durante el encendido conseguimos que la tensión de alimentación suba desde 0'5V hasta 4'5V en un tiempo comprendido entra 0'1 y 10ms. Puesto que ésto puede ser difícil de conseguir, podemos recurrir a la inicialización por software. Consiste en enviar una serie de comandos de los descritos anteriormente y esperar un determinado tiempo.

En la inicialización se configura también si la transmisión se hace con 4 o con 8 hilos.

La inicialización para configurar el modo de 4 bits (el que utilizamos) es así:

En este momento, la inicialización ha sido completa.

Notas importantes:

Los tiempos de espera son los mínimos; puede esperarse más. Esto es válido si sólo tenemos retardos de ms.

Fijémonos en que la configuración para 8 bits no usa las líneas 0-3, y por eso sirve también con 4 hilos.
Cuando hay que mandar los comandos en 4 bits se manda primero la parte alta y luego la baja

Programa de ejemplo

Como complemento a este pequeño tutorial se acompaña un programa que efectúa la programación del controlador por medio del puerto paralelo de un PC compatible. El programa está escrito en C y funciona tanto con Turbo C++ de Borland como con DJGPP (el compilador GNU). Las conexiones pertinentes se muestran dentro del fichero lcd.c.

LCD.ZIP (fichero comprimido de 1K)


Página original de Http://www.redeya.com, prohibida su reproducción sin consentimiento del autor