Experiencia No.3 Computadores – Mención Sistemas Computacionales Título: Aplicación PIC 16F877A: acoplar un LCD Objetivo: Usar los conocimientos adquiridos sobre el MCU 16F877A para construir una aplicación haciendo uso de LCD. Procedimiento de laboratorio: 1. Construya una aplicación cuyo circuito se muestra a continuación. Adapte lo que sea necesario del hardware para el LCD entregado. Palabra de configuración: misma experiencia anterior. 2. Escriba un programa en lenguaje C para correr esta aplicación. Adapte lo que sea necesario del código para el LCD entregado. 3. Ejecute la aplicación Fig. 1: hardware de la aplicación El LCD es actualmente usado en variadas aplicaciones para despliegue gráfico y alfanumérico. Este rango va desde pequeños tipos numéricos de 7 segmentos tales como aquellos usados en multímetros digitales (típicamente 3½ dígitos, máxima lectura 1.999, monocromo alfanumérico) grandes pantallas de alta resolución las cuales pueden desplegar video. En esta experiencia se concentrará en un tipo de pequeño LCD el cual despliega caracteres alfabéticos, numéricos y simbólicos desde el conjunto de caracteres ASCII. Este tipo también puede desplegar gráficos de baja resolución. A continuación se entrega una descripción a nivel de máquina. Recordar que el uso del LCD lo realizaremos mediante el uso de la biblioteca FLEX_LCD.C, lo que nos libera de codificar directamente en nivel de máquina. El display mostrado es el LM016L. Estudie la similitud y compatibilidad con el display entregado por la carrera para esta experiencia. El display puede desplegar 2 líneas de 16 caracteres (16x2). Cada carácter es de 5x8 píxeles, constituyendo un total de 80x16 píxeles. En el código propuesto para esta oportunidad, un mensaje fijo es desplegado en la línea 1, por ejemplo “Microprocesadores”. La segunda línea termina con un carácter que lleva una cuenta desde 0 a 9, y repite, para mostrar una variable de display. El despliegue se muestra a continuación: Microprocesadores Contador = %d El display recibe el código ASCII de cada carácter por las entradas de datos (D0..D7). Los datos son ingresados a las entradas del display por la MCU, y puestas en condición de “latch” por medio de un pulso en el pin E (Enable). El bit RW (Read/Write) puede ser puesto en estado bajo (modo Write), como se ve en el circuito esquemático, ya que el LCD está recibiendo datos solamente. La línea RS (Register Select) permite que se envíen comandos al display. RS = 0 selecciona el modo comando, RS = 1, es modo de datos. El display mismo contiene un MCU y debe ser iniciado de acuerdo a los datos y opciones del display requeridos. En este ejemplo, los datos están siendo enviados en modo de 4 bits. El código de 8 bits para cada carácter ASCII (ver tabla 3) es transferido en 2 partes: el nibble más alto primero y enseguida el nibble de menor peso. Esto ahorra pines I/O y permite impulsar al LCD usando solo 6 líneas de un puerto, haciendo ligeramente más complejo el código. El conjunto de comandos para el controlador del display es mostrado en la tabla 1, adjunta a esta experiencia. Se puede interpretar los comandos enviados durante la secuencia de inicio del display, comparando los códigos hex con el comando binario. Se puede observar que el display debe ser inicialmente establecido (set) al modo de operación por omisión (default), previo a seleccionar el modo requerido (4 bit, 2 líneas) y reestablecido (reset). Se observa que los comandos son diferenciados por el número de ceros iniciales (Ver Tabla 2). Tabla 1 – Operación del LCD Tabla 2 – Códigos de la secuencia de comandos de iniciación del LCD Tabla 3 – Código de caracteres ASCII Evaluación. Se realizará en el certamen fijado en la fecha indicada. El aprendizaje relacionado con esta experiencia está de acuerdo al trabajo realizado en el laboratorio. Debe preparar conocimiento complementario que complete lo cubierto en laboratorio. JEA/jea/Exp03MCU.docx