Control de pantallas de cristal líquido mediante PIC
Ejemplo práctico de interconexión y control de una pantalla de cristal líquido (LCD) por un microcontrolador PIC
Introducción al microcontrolador
El mundo de la electrónica quedó marcado de forma radical con la aparición de los microprocesadores. A partir de la irrupción en el mercado de dicho elemento, se inició un cambio total en la electrónica de control, a todos los niveles y en todos los sectores productivos que deseemos analizar.
Estos microcircuitos, que incorporan en su interior y a tamaño microscópico, miles de elementos básicos como transistores, resistencias, etc., fueron aceptados con gran rapidez en el mercado, dado que, por sus características propias, ofrecían mayor versatilidad, mayor fiabilidad, más sencillez en el diseño de equipos de control, posibilidad de implementar diversas aplicaciones en diseños idénticos, menor coste y muchas otras posibilidades que podríamos enumerar. Sí, podemos afirmar que fue el paso más decisivo para sustituir a nivel industrial los sistemas basados en lógica secuencial, por la lógica programable que resulta de la implementación de estos microchips en los circuitos electrónicos.
Desde su aparición, los fabricantes han sacado al mercado una enorme variedad de microcircuitos, que van desde los microprocesadores de carácter general,a los diseñados para aplicaciones específicas en función de la demanda de las diversas empresas consumidoras.
Estos componentes llegaron a nosotros como elementos extraños y complejos, que rápidamente fueron aceptados a nivel profesional. Su estructura interna hacía que para realizar el diseño de diferentes sistemas de control, necesitáramos emplear además del propio chip, otros elementos como memorias, periféricos de comunicación, buffers, sistemas osciladores, temporizadores, etc.
Al objeto de facilitar este tipo de diseños, los fabricantes de microchips, decidieron incorporar en la misma pastilla del microprocesador, una serie de elementos (memorias, puertos de E/S, convertidores A/D, etc.) que hicieron más sencillo el diseño de las tarjetas por parte de los técnicos en ingeniería de aplicación. Aparecieron entonces los microcontroladores y dada la fuerte competencia existente entre los distintos fabricantes, surge como es natural, gran variedad de ellos. Cada uno con características peculiares, que lo diferencia de los demás, otorgándole una potencialidad específica, distinta flexibilidad, etc.
Microcontrolador PIC 16C57
Sin duda los grandes fabricantes de este tipo de microchips, son Intel, Motorola, etc.; aunque en este artículo trataremos sobre los microcontroladores de Microchip Technology. Este fabricante americano, pone a nuestra disposición, gran cantidad de elementos, con características muy variadas, de modo que tengamos a nuestro alcance, desde el microcontrolador más sencillo, hasta aquel cuya complejidad requiere un análisis bastante más profundo por nuestra parte, todo en función del proyecto que deseemos abordar.
“EL PIC 16CJ PRESENTA UNA ESTRUCTURA INTERNA BASADA EN LA ARQUITECTURA HARVARD, QUE UTILIZA BUSES INTERNOS DISTINTOS PARA ACCEDER A LAS MEMORIAS DE PROGRAMA Y DE DATOS”
Es de destacar que prácticamente todos los microcircuitos de las diferentes familias de Microchip, están basados en la misma estructura interna y poseen repertorios de instrucciones de programación similares. Esto quiere decir que, una vez comprendido el funcionamiento general de uno de ellos, los demás resultarán asimilables con relativa facilidad.
En nuestro artículo trataremos la familia 16C5X, que resulta ser una de las más sencillas de asimilar, y nos permitirá tener una idea clara del funcionamiento de los PIC de Microchip. En la tabla 1 se muestran los diversos microcircuitos de dicha familia, con indicación de sus características más importantes. De entre todos ellos elegiremos para nuestro trabajo concreto el PIC 16C57.
Nuestro PIC, presenta una estructura interna basada en la arquitectura Harvard, que utiliza buses internos distintos para acceder a las memorias de programa y de datos. El bus interno de instrucciones tiene un ancho de 12 bits, lo que hace que podamos utilizar la misma palabra para manipular el código de operación y el operando asociado a la misma. El bus de datos interno posee un ancho de 8 bits en lectura y en escritura.
Como podemos apreciar en la tabla 1, el 16C57 dispone de:
a) Memoria de programa de 2 K, por lo que empleará un bus de direccionamiento interno de 11 bits.
b) Memoria de datos compuesta por una RAM de 72 palabras, por lo que su bus de direccionamiento interno será de 7 bits.
En la figura 1 podemos observar los diferentes buses internos de manipulación de las memorias y trabajo del microcircuito.
En la llamada memoria de programa (2K x 12 bits), almacenaremos los valores correspondientes a las instrucciones que componen nuestros programas ejecutables. Mientras que en la memoria de datos (72 x 8 bits) se irán almacenando los valores generados por el propio pro-grama durante su ejecución. En la figura 2 podemos apreciar la composición de estas memorias.
Debemos destacar aquí cómo la memoria de programa (EPROM o PROM) se encuentra dividida en cuatro partes denominadas páginas, abarcando la página 0 desde la dirección 000H hasta la 1FFH, la página 1 desde la dirección 200H hasta la 3FFH, la página 2 desde la dirección 400H hasta la 5FFH, y la página 3 desde la dirección 600H hasta la 7FFH.
En cuanto a la memoria de datos (RAM), podemos apreciar que está dividida en cuatro bancos de trabajo, compuestos cada uno del siguiente modo:
• Banco 0: Desde la dirección 00H hasta la dirección 07H contiene 8 registros especiales de trabajo, de los que después hablaremos. Y desde la dirección 08H hasta la dirección 1FH, contiene 24 registros de propósito general que usaremos para almacenar datos.
• Banco 1: Desde la dirección 20H hasta la 2FH contiene 16 registros que no se usan. Y desde la dirección 30H hasta la 3FH, contiene registros de propósito general.
• Banco 2: Desde la dirección 40H hasta la 4FH contiene 16 registros que no se usan. Y desde la dirección 50H hasta la 5FH, contiene registros de propósito general.
• Banco 3: Desde la dirección 60H hasta la 6FH contiene 16 registros que no se usan. Y desde la dirección 70H hasta la 7FH, contiene registros de propósito general.
En la tabla 2 se presentan los registros especiales contenidos en las primeras direcciones de memoria RAM. Podemos ver sus denominaciones, la dirección concreta en la que se encuentran y la función que realizan.
Además de lo mostrado en la tabla anterior, el microcontrolador dispone de otros registros de trabajo particulares, que no están implementados en la memoria RAM y que se presentan en la tabla 3.
El PIC dispone también de otra serie de bloques internos que le confieren mayor potencialidad, como un bloque oscilador que marca la velocidad de trabajo del sistema, los temporizadores y contadores empleados para realizar conteos de sucesos, la ALU (Unidad Aritmético Lógica) que constituye el núcleo central del PIC y realiza las operaciones aritméticas y booleanas necesarias para el programa, etc.
Set de instrucciones del PIC 16C57
En la página siguiente se presenta la tabla 4, en la que se muestra de forma resumida el set de instrucciones de nuestro PIC.
Distribución de terminales del PIC 16C57
En la figura 3 puede apreciarse la distribución física de pines o terminales de nuestro microcontrolador. En ella podemos apreciar la existencia de dos terminales (3 y 5) que no tienen ninguna función asignada (no se deben conectar).
En la tabla 5 se presenta una descripción simple de la función de cada uno de los terminales del 16C57.
La pantalla LCD
Elegimos para nuestro artículo, de entre todos los modelos de LCD’s existentes, la pantalla LCD de Batron (BT 12009) cuyas características principales son:
• Una línea de 20 caracteres.
• Un carácter se compone de 5×7 puntos.
• Una CG ROM (generador de caracteres ROM) con 192 caracteres predefinidos.
• Una CG RAM que permite definir ocho caracteres por el usuario.
• Una RAM que almacena hasta 80 bytes.
• Un registro de instrucciones IR.
• Un registro de datos DR.
Esta pantalla es de fácil conexión a los terminales del PIC 16C57. En la tabla 6 se presenta la distribución de terminales de este módulo:
Todas las funciones que se pueden programar en este módulo LCD, se controlan mediante las señales E, RS y R/W escribiendo o leyendo los datos oportunos. Los niveles lógicos activos de todas las señales de control corresponden con el nivel alto. En la tabla 7 se muestran las operaciones que se realizan según las combinaciones de las mismas.
La señal E es de habilitación del módulo y es activa con nivel lógico alto. La señal RS sirve para seleccionar los registros internos IR (RS=0) y DR (RS=1). La señal R/W se emplea para leer (R/W=1) o para escribir (R/W=0) un dato en el registro deseado.
El módulo, posee además un registro denominado AC que apunta a la dirección donde serán leídos o escritos los datos sobre la DD RAM (RAM de datos del display) y la CG RAM (generador de caracteres RAM definibles por el usuario). El AC se incrementa o decrece automáticamente de acuerdo a cómo se programe el modo entrada.
Programación de la pantalla LCD
Las funciones que pueden programarse en la pantalla vienen expresadas en la tabla 8.
Aplicación práctica
En la figura 4 podemos apreciar la forma de conectar la pantalla LCD a nuestro microcontrolador. Las líneas RA0, RA1, y RA2 se utilizan para control de la pantalla (E, RS y R/W respectivamente), mientras que las líneas RB0, RB1…, RB7, se conectan a DB0, DB1…, DB7, respectivamente.
Además realizaremos las siguientes consideraciones:
• El bloque oscilador interno, está completado con un cristal de cuarzo (XTAL) de 20 MHz, y los condensadores C1 y C2 de 22 pF cada uno.
• La entrada MCLR es controlada por el circuito RC, formado por una resistencia de 20 K y un condensador C de 1 µF, que proporcione un pulso de reset al conectar el circuito a la fuente de alimentación. El diodo D sirve para descargar el condensador con mayor rapidez al desaparecer la alimentación.
• En todas y cada una de las líneas de los buses de interconexión, debe conectarse una resistencia de 1K a la alimentación (+5V).
La programación de nuestro sistema consistirá básicamente, en el diseño del software apropiado al esquema de la figura 4, que permita el control y utilización de la pantalla LCD.
La idea base de nuestro programa puede ser la siguiente: al arrancar el sistema, mediante su conexión a la alimentación, el PIC debe controlar todos los elementos dispuestos bajo su mando, comprobar su funcionamiento, y final-mente pasar a ejecutar las acciones deseadas (en este caso escribir una frase en la pantalla LCD).
Bibliografía
José Mª Angulo, Microprocesadores. Curso sobre aplicaciones industriales. Paraninfo.
M. Robin y Th. Maurin, Interconexión de microprocesadores. Paraninfo.
Javier Martínez Pérez y Mariano Barrón Ruiz, Prácticas con microcontroladores de 8 bits. McGraw Hill.
Manuales de Microchip.
Internet
www.microchip.com www.netcom.es/celes