Interfaz de un PIC a un Módulo


Esta nota de aplicación AN587 trata sobre la interfaz entre un dispositivo PIC micro a un módulo de LCD LM032L de Hitachi, con un display de dos renglones por 20 caracteres, ya que los módulos de LCD son útiles para la visualización del texto de un sistema. En aplicaciones de gran volumen, el uso de displays LCD especiales para usuarios resulta económico.
Las rutinas provistas en esta nota pueden ser un buen punto de partida para usuarios cuya implementación de aplicaciones se efectúa con módulos LCD especiales. El código fuente que se explica en dicha nota también es compatible con dispositivos del tipo PIC16C5X ó 16F5/8X, pero en estos casos se debe hacer una modificación para la inicialización del registro de funciones especiales (de una forma similar a lo que explicamos en Saber Electrónica Nº 184 cuando mencionamos cómo emigrar de un PIC 16F84 a un PIC 16F628).


Desarrollo


Funcionamiento
El módulo de caracteres del display LCD LM032L de Hitachi puede funcionar en uno de dos modos. El primer modo (y también el asignado de fábrica), es el modo de interfaz de datos de 4 bits. El segundo es el modo de interfaz de datos de 8 bits. Cuando se opera en el modo de 4 bits, se necesitan dos transferencias por carácter / comando. En el modo de 8 bits, se necesitan cuatro líneas adicionales de E/S, si bien es más fácil su implementación al necesitar menos memoria de programa. El uso del modo de 8 bits es estrictamente un compromiso entre tamaño de memoria de programa y líneas de E/S. Los tres interfaces de datos más comunes son:

1. Una interfaz de 8 bits.
2. Una interfaz de 4 bits, con transferencia de datos en el nibble más alto del port.
3. Una interfaz de 4 bits, con transferencia de datos en el nibble más bajo del port.

Recordamos a nuestros amigos lectores que el “nibble” es una palabra binaria, constituída por la agrupación de 4 bits que son tratados en forma unitaria. El módulo LCD tiene también tres señales de control:
• Enable (E).
• Read/Write (Lectura/Escritura) (R_W).
• Register Select (Selección de Registro) (RS).

Las funciones de cada señal de control pueden observarse en la tabla 1.
Una fila única de la fuente es usada para generar cualquiera de estas opciones con ensamble condicional. Esto requiere dos indicadores. En la tabla 2 vemos los indicadores y sus resultados.
Las figuras 1, 2 y 3 muestran los diagramas en bloques de las tres diferentes interfaces de datos. Las líneas de datos LCD_CNTL y LCD_DATA son definidos por el usuario con respecto a su asignación de ports. Esto se logra por medio de declaraciones de EQUate en el código de fuente. Observe los Apéndice S, C y D.
Los drivers de LCD son dispositivos lentos en comparación con los microcontroladores. Resulta preocupante que las comunicaciones no se realicen en forma demasiado rápida. El software debe controlar la velocidad y la temporización de las comunicaciones para asegurar que el LCD lento y el microcontrolador veloz puedan mantenerse sincronizados. Los requisitos de temporización del LM032L pueden verse en el Apéndice A de dicha nota de aplicación que Ud. puede bajar de nuestra web: www.webelectronica.com.ar o en inglés de la página de Microchip. Comunicamos que las especificaciones completas del LM032L se han obtenido de Hitachi y su manual de datos también puede bajarlo de Internet.
Cuando el módulo se enciende, el modo de transferencia de datos preajustado es el de 8 bits. La secuencia de inicialización sólo requiere comandos de una longitud de 4 bits. El último comando de inicialización debe especificar el ancho de la transferencia de datos (4 u 8 bits) y a continuación debe ejecutarse un retardo de 4,6 ms antes que el módulo LCD pueda ser inicializado. Algunos de los comandos del módulo LCD son:

• 1 ó 2 renglones de caracteres
• display on/off
• desactivar display
• incrementar o no incrementar el puntero de direcciones de caracteres después de cada carácter
• cargar el puntero de direcciones de caracteres

El flujo de inicialización para el módulo surge de la figura 4.
Después de la inicialización, cada dirección de carácter puede ser buscado en forma individual. La figura 5 muestra la estructura de comandos para especificar la dirección del carácter.
El driver de display HD44780A de Hitachi posee 80 bytes de RAM. El módulo LM032L usa sólo 40 bytes de la RAM disponible de 2x20 caracteres. Es factible usar las restantes posiciones de memoria de la RAM para el almacenamiento de otra información.
La figura 6 muestra las posiciones de datos del display soportados por el driver, así como los caracteres visibles realmente en el display del módulo (marcados por las direcciones no sombreadas).
El ejemplo de programa indicado aquí usa la prestación de “incremento automático del carácter”. El mismo incrementa automáticamente el puntero de la dirección de caracteres después de que cada caracter haya sido escrito en el display.

Conclusión
El módulo del display de caracteres LM032L de Hitachi está indicado para la visualización de información. La selección de modos de transferencia de datos de 4 u 8 bits es estrictamente un compromiso entre magnitud de la memoria con respecto a los recursos de E/S. El código suministrado es de fácil uso en cualquiera de las tres interfaces comunes. La fuente puede ser modificada fácilmente para adaptarla a las necesidades de diseño. Otros módulos de display o drivers pueden ser implementados con las modificaciones apropiadas. En la tabla 3 vemos los recursos necesarios para las subrutinas SEND_CHAR, SEND_COMMAND y BUSY_CHECK en los diferentes modos de interfaz de datos.
Recuerde que si Ud. desea tener la bilbliografía completa y el código fuente, puede bajar la nota de nuestra web: www.webelectronica.com.ar con la clave “piclcd”

 
De la Redacción de la Revista Saber Electrónica
PROMOCIONES
 
 
FIGURA 1
 
 
FIGURA 4
 
 
FIGURA 5
 
FIGURA 6
 


Posicionado por < ProSEO >