PROYECTO #2-TERMÓMETRO. RICARDO PACHECO, MELVIN CORTÉS MORA, FABIO FERNANDEZ. El ejercicio consiste en la simulación de una estación meteorológica, la misma debe mostrar en una pantalla LCD datos de temperatura, humedad relativa y presión atmosférica. INTRODUCCIÓN El presente proyecto consiste en 1 ejercicio asignado por el profesor Ing. Jorge Castro del curso Organización de Estructuras. Con este proyecto esperamos poner en práctica los conocimientos adquiridos y aumentar nuestro conocimiento del el funcionamiento interno de una computadora, a través del estudio y programación del lenguaje ensamblador. Los ejercicios se desarrollaron en el siguiente orden: algoritmo, código de MP LAB y diagrama de flujo, y simulación en ISIS Proteus . Los cambios en la pantalla LCD se deben de controlar por medio de una interrupción externa controlada por un botón conectado al puerto RB0. Ejercicio 1 Elaborar una estación meteorológica que muestre la temperatura, los grados centígrados y la presión atmosférica en una pantalla LCD. Marco conceptual MP LAB Temperatura MPLAB es un editor IDE gratuito, destinado a productos de la marca Microchip. Este editor es modular, permite seleccionar los distintos microcontroladores soportados, además de permitir la grabación de estos circuitos integrados directamente al programador. La temperatura es una magnitud referida a las nociones comunes de caliente o frío que puede ser medida con un termómetro. La temperatura se mide con termómetros, los cuales pueden ser calibrados de acuerdo a una multitud de escalas que dan lugar a unidades de medición de la temperatura. La escala más extendida es la escala Celsius (antes llamada centígrada). Es un programa que corre bajo Windows y como tal, presenta las clásicas barras de programa, de menú, de herramientas de estado, etc. El ambiente MPLAB® posee editor de texto, compilador y simulación (no en tiempo real). Para comenzar un programa desde cero para luego grabarlo al μC en MPLAB® v7.XX los pasos a seguir son: Humedad La humedad relativa es la relación porcentual entre la cantidad de vapor de agua real que contiene el aire y la que necesitaría contener para saturarse a idéntica temperatura, por ejemplo, una humedad relativa del 70% quiere decir que de la totalidad de vapor de agua (el 100%) que podría contener el aire a esta temperatura, solo tiene el 70%. 1. 2. 3. 4. Presión atmosférica La presión atmosférica es la presión que ejerce el aire sobre la Tierra. Crear un nuevo archivo con extensión .ASM y nombre cualquiera Crear un Proyecto nuevo eligiendo un nombre y ubicación Agregar el archivo .ASM como un SOURCE FILE Elegir el microcontrolador a utilizar desde SELECT DEVICE del menú CONFIGURE Una vez realizado esto, se está en condiciones de empezar a escribir el programa respetando las directivas necesarias y la sintaxis para luego compilarlo y grabarlo en el PIC. 1 1. 2. PIC 16F877A 3. 4. 5. 6. El microcontrolador PIC16F877 de Microchip pertenece a una gran familia de microcontroladores de 8 bits (bus de datos) que tienen las siguientes características generales que los distinguen de otras familias: A. Características • Tiene 8 entradas • El conversor genera un resultado digital de la entrada análoga vía aproximaciones sucesivas • El resultado es un número digital de 10 bits • Los voltaje referenciales son seleccionados por software: vdd, vss, ra2 o ra3 • Tiene cuatro registros: adresh, adresl donde se guarda el resultado digital de la conversión, adcon0 y adcon1 que son los registros de control • Los pines del puerto pueden ser configurados como entradas análogas o como e/s digitales • Cuando la conversión se completa, el resultado se carga en adresh:adresl, el bit go/done- es borrado y el flag adif = 1 - Tecnología RISC - Tecnología CMOS Caraterísticas: 6. 7. Solución del problema: Conversor análogo/digital - Arquitectura Harvard 1. 2. 3. 4. 5. 1 Conversor A/D de 10-bits (8 canales) 2 Módulos CCP (Captura, Comparador, PWM) 1 Modulo I2C 1 USART (Puerto Serie) 2 Timers de 8 bits 1 Timer 16 bits Memoria de Programa tipo Flash 8Kx14 Memoria Datos 368 bytes EEPROM 256 bytes 33 pines de Entrada/Salida Encapsulado: 40 pines DIP, 44 pines PLCC y 44 pines TQFP Soporta Xtal 20MHz Voltaje de Operación: 2.0 hasta 5.5VDC Periféricos: La resolución de la conversión es función de la tensión de referencia externa (en caso de que la hubiere) y viene dada por: 101 = canal 5, (RE0/AN5) 110 = canal 6, (RE1/AN6) 111 = canal 7, (RE2/AN7) GO/DONE-: STATUS DE CONVERSIÓN. SI ADON = 1, ENTONCES, 1 = CONVERSIÓN EN PROGRESO 0 = NO HAY CONVERSIÓN ADON: HABILITA CONVERSOR 1 = CONVERSOR OPERANDO 0 = CONVERSOR APAGADO Registro ADCON0 DCS1:ADCS0 SELECCIONA RELOJ DE CONVERSIÓN 00 = 2Tosc 01 = 8Tosc 10 = 32Tosc 11 = FRC (RELOJ INTERNO RC) CHS2:CHS0: SELECCIONA EL CANAL ANÁLOGO 001 = canal 1, (RA1/AN1) 010 = canal 2, (RA2/AN2) 011 = canal 3, (RA3/AN3) 100 = canal 4, (RA5/AN4) Registro ADCON1 2 ADFM: FORMATO DEL RESULTADO 1= JUSTIFICACIÓN A LA DERECHA 0 = JUSTIFICACIÓN A LA IZQUIERDA Figura. 4 Pasos de configuración 1. Configurar las entradas análogas, voltajes de referencia y digitales en el registro adcon1, seleccionar el canal de entrada en adcon0, el reloj de conversión y activar el a/d en adcon0 2. Si se desea interrupción configurarla: adif = 0, adie = 1, peie = 1, gie = 1. 3. Esperar tiempo requerido de adquisición 4. Arrancar conversión go/done- = 1 5. Esperar que se complete la interrupción por polling de go/done- = 0, o esperar interrupción 6. Leer el resultado en adresh:adresl, borrar adif = 0 7. Esperar próxima conversión Manejo de interrupciones: PCFG3:PCFG0: CONFIGURACIÓN DEL PUERTO Registro OPTION TABLA 6 BIT's Bit 7: RBPU Pull-up p' PORTB Bit 6: INTEDG Flanco/Interrup. Bit 5: T0CS Fte./Reloj p' TMR0 Bit 4: T0SE Flanco/T0CKI Bit 3: PSA Divisor/Frecuencia Descripción 1 = Cargas Pull-Up Desconectadas 0 = Cargas Pull-Up Conectadas 1 = RB0/INT será sensible a flanco ascendente 0 = RB0/INT será sensible a flanco descendente 1 = Pulsos por el pin RA4/T0CKI (contador) 0 = Pulsos igual Fosc/4 (temporizador) 1 = Incremento TMR0 en flanco descendente 0 = Incremento en flanco ascendente 1 = Divisor asignado al WDT 0 = Divisor asignado al TMR0 3 Tabla:7(INTCON). Se instrucciones de carga del PIC como movf, CLRW y movwf; las cuales son muy útiles para la programación y solución de diferentes problemas. También se utilizaron las herramientas ADDLW k e INCF las cuales son utilizadas para realizar cálculos aritméticos. Las instrucciones XORDLW k e ANDLW las cuales son utilizadas para realizar saltos en las rutinas. 1 = Ocurrió una interrupción Bit 1: INTF externa Bandera - RB0/INT 0 = No ha ocurrido interrupción externa Se utilizó el convertidor analógico digital del PIC16F877A con un voltaje de referencia de 5V. 1 = Al menos un pin cambio de Bit 0: RBIF estado Bandera - RB4:RB7 0 = Ningún pin ha cambiado de estado Se utilizó un dispositivo LCD para mostrar los resultados de la conversión. BIT's Descripción Bit 7: GIE Habilitación General. 1 = Todas las Interrupciones activadas 0 = Todas las Interrupciones desactivadas Bit 6: EEIE Int. de Periféricos 1 = Activada 0 = Desactivada Bit 5: T0IE Int. del TMR0 1 = Activada 0 = Desactivada Bit 4: INTE Int. Externa 1 = Activada 0 = Desactivada Bit 3: RBIE Int. por PORTB 1 = Activada 0 = Desactivada Bit 2: T0IF 1 = TMR0 desbordado. Bandera del TMR0. 0 = No se ha desbordado BIBLIOGRAFIA Dispositivo LCD http://www.matpic.com/esp/microchip/adc.html El LCD dispone de una matriz de 5 x 8 para representar cada caracter en total se puede mostrar 256 caracteres diferentes , 240 almacenados en la memoria del lcd y 8 pueden ser definidos por el usuario. http://www.slideshare.net/victorpe/uso-mplabpresentation B. http://www.ceduvirt.com/resources/Microcontroladores. pdf http://www.hispavila.com/3ds/chipspic/interrupciones.h tml CONCLUSIONES Se logró desarrollar la totalidad de los ejercicios y se pusieron en práctica nuestros conocimientos en desarrollo de algoritmos, diagramas de flujo y código en ensamblador. http://ieupao.blogspot.com/2009/07/termometro-digitalcon-lm35-y-pic.html 4 5