Proyecto Termometro Digital

26
UNIVERSIDAD NACIONAL “SANTIAGO ANTÚNEZ DE MAYOLO” FACULTAD DE CIENCIAS Escuela Profesional de Ingeniería de Sistemas e Informática MICROPROCESADORES Y PERIFERICOS DOCENTE: ING. ALVARADO CACERES LUIS TEMA: TERMÓMETRO DIGITAL CON PIC 16f877A ALUMNOS: Blas Cerda Elmer Chauca Guzmán John Harold Guerra Calderón Lenin Maldonado Inti Nelson Vitaliano Pohl Cáceres Paul

Transcript of Proyecto Termometro Digital

Page 1: Proyecto Termometro Digital

UNIVERSIDAD NACIONAL

“SANTIAGO ANTÚNEZ DE MAYOLO”

FACULTAD DE CIENCIAS

Escuela Profesional de Ingeniería de Sistemas e Informática

MICROPROCESADORES

Y PERIFERICOS

DOCENTE: ING. ALVARADO CACERES LUIS

TEMA: TERMÓMETRO DIGITAL CON PIC 16f877A

ALUMNOS:

Blas Cerda Elmer

Chauca Guzmán John Harold

Guerra Calderón Lenin

Maldonado Inti Nelson Vitaliano

Pohl Cáceres Paul

Silverio Torres Edison

Tahua Quijano Edwin

HUARAZ – 2011

Page 2: Proyecto Termometro Digital

INTRODUCCIÓN

En el presente trabajo se explica el diseño y desarrollo para implementar un “termómetro digital” basado en el microcontrolador PIC 16f877A, fabricado por Microchip, el cual se programará en el lenguaje ensamblador del microcontrolador para el funcionamiento del proyecto.

La temperatura es un factor de medida engañoso debido a su simplicidad. A menudo pensamos en ella como un simple número, pero en realidad es una estructura estadística cuya exactitud y repetitividad pueden verse afectadas por la masa térmica, el tiempo de medida, el ruido eléctrico y los algoritmos de medida.

La temperatura es difícil de medir con exactitud aún en circunstancias óptimas, y en las condiciones de prueba en entornos reales es aún más difícil. Entendiendo las ventajas y los inconvenientes de los diversos enfoques que existen para medir la temperatura, resultará más fácil evitar los problemas y obtener mejores resultados.

Page 3: Proyecto Termometro Digital

1. DESCRIPCIONES GENERALES

El presente proyecto pretende construir un termómetro digital que haciendo uso de un sensor de calor LM35DZ muestre la temperatura del ambiente en un visualizador LCD.

Para realizar este proyecto será necesario el uso del microcontrolador PIC 16f877A el cual tiene incorporado un convertidor analógico digital que hace de interprete entre el sensor y el PIC, este PIC será programado en lenguaje ensamblador para que realice los métodos necesarios.

Con el presente proyecto pretendemos poner en práctica los conceptos hasta ahora aprendidos en el curso y además desarrollar nuestras capacidades de formulación, desarrollo e implementación de proyectos de sistemas.

2. MARCO TEÓRICO

Sensor LM35DZ

El sensor que se utilizará será el transistor LM35DZ modelo TO-92, el cual es un sensor de temperatura con buena precisión en escala Celsius. Éste dispositivo transforma la temperatura del ambiente en voltaje, del orden de mV.

El LM35DZ entrega a la salida una resolución de 10mV por cada grado centígrado.

Empleándolo solo sin ninguna configuración en especial, el dispositivo presenta un rango de medición de 2 a 150°C, como se muestra a continuación:

Esta configuración es la idónea para el proyecto pues solamente la utilizaremos para medir temperaturas hasta 99°C.

Page 4: Proyecto Termometro Digital

Este sensor es fabricado por Fairchild y National Semiconductor.

Convertidor analógico-digital

La etapa de conversión se llevará a cabo mediante un convertidor analógico-digital, el cual es A / D de 8 bits con salida en paralelo, debido a que es uno de los dispositivos más populares en aplicaciones de sistemas, además de estar bien documentado, pues existe gran cantidad de información en libros y en Internet para poderlo emplear en aplicaciones con microprocesadores, microcontroladores y PLD’s.

Dicho convertidor utiliza el método de aproximaciones sucesivas para la conversión, que se describe brevemente a continuación:

Los convertidores de aproximaciones sucesivas contienen un valor fijo en su tiempo de conversión que no depende del valor de la entrada analógica, la disposición básica es semejante a la de ADC de rampa digital, sin embargo, el convertidor de aproximaciones sucesivas no utiliza ningún contador para dar la entrada en el bloque del convertidor DAC, pero en cambio usa un registro con lógica de control que modifica el contenido del registro bit a bit hasta que los datos del registro son el equivalente digital de la entrada analógica.

El tiempo de conversión de los convertidores de aproximaciones sucesivas de "n" bits requieren "n" ciclos de reloj para realizar su conversión sin importar la magnitud del voltaje que esta presente en su entrada, esto se debe a que los circuitos de control tienen que ensayar un 1 lógico en cada posición del bit para ver si se necesita o no, es por esto que los convertidores de aproximaciones sucesivas tienen tiempos de conversión muy rápidos, su uso en aplicaciones de sistemas con adquisición de datos permitirán que se adquieran mas valores de datos en un intervalo de tiempo dado.

Esto puede ser muy importante cuando los datos analógicos cambian su valor rápidamente.

Page 5: Proyecto Termometro Digital

Ejemplo de un convertidor A/D tenemos el ADC0804

La función de cada uno de sus pines es:

Pin Nombre Función Lógica

1 CS- Chip Select Habilita el chip I / 0 2 RD- Salida autorizada Lee la información I / 0 3 WR- Start conversion Iniciar conversión I / 0 4 CLKIN Entrada de reloj   5 INTR Indicador fin conversión I / 0 6 Vlts + Señal positiva analógica -0,3/16V 7 Vlts - Señal negativa analógica 0 8 A GND Tierra analógica 0 9 Vref/2 1/2 máximo del Pin 6  

10 D GND Tierra digital   11/18 DB7 a DB0 Salidas digitales I / 0

19 CLK R Salidas reloj interno   20 Vcc Alimentación hasta 6,5V

Este convertidor es fabricado por National Semiconductor.

Este convertidor se empleará debido a que el sensor LM35DZ nos entrega la temperatura como voltaje y como el voltaje es una cantidad analógica, necesitamos convertirla a su equivalente en valor digital para poderla manejar, pues los valores digitales son cantidades discretas y por lo tanto es más fácil trabajar con ellas que con cantidades analógicas.

El convertidor presenta el siguiente diagrama de acuerdo a la colocación de sus pines descritos anteriormente:

Page 6: Proyecto Termometro Digital
Page 7: Proyecto Termometro Digital

Sus características más importantes son:

Posee dos entradas analógicas: VIN (+) y VIN (-), las cuales permiten tener entradas diferenciales. Es decir, el voltaje real de entrada VIN es la diferencia entre los voltajes aplicados en dichas terminales. En mediciones hechas en un solo punto, la entrada analógica se aplica en VIN(+) mientras que VIN(-) se conecta a la tierra analógica. Durante la operación normal, el convertidor utiliza VCC = +5 V como voltaje de referencia y la entrada analógica puede variar desde 0 hasta 5 V, que es el valor de escala completa.

Convierte el voltaje analógico de entrada en una salida digital de ocho bits. La salida es de tres estados, lo que permite conectar al convertidor con facilidad en canales de datos. Con ocho bits la resolución es de 5V / 255 = 19.6 mV.

Tiene un circuito de reloj interno que produce una frecuencia igual con f=1/(1.1RC), donde R y C son los valores de los componentes externos conectados al convertidor. Una frecuencia típica de reloj es de 606 kHz y se obtiene con R = 10k y C = 150 pf. Si se desea también se puede conectar un reloj externo; éste se conecta a la terminal CLKIN del CI.

Al utilizar un frecuencia de 606 kHz, el tiempo de conversión es, aproximadamente, igual a 100s.

Tiene conexiones a tierra por separado para los voltajes analógicos y digitales. La terminal ocho corresponde a la tierra analógica y se conecta al punto común como referencia en el circuito analógico que genera el voltaje analógico. La terminal diez es la tierra digital, que es la que utilizan todos los dispositivos digitales que integran al sistema.

Microcontrolador PIC 16f877A

La interpretación de los datos obtenidos del convertidor A / D se realiza dentro del microcontrolador PIC 16f877A, fabricado por Microchip.

El PIC 16f877A convierte los valores del convertidor A / D en valores equivalentes para la visualización.

Como éste dispositivo es el que desarrollará el trabajo más importante de nuestro proyecto, pues de nada sirve tener el mejor sensor de temperatura ni el convertidor analógico digital más exacto sino contamos con un dispositivo que interprete los valores correctamente, se describirá brevemente a continuación al PIC 16f877A:

Para las aplicaciones más habituales (casi un 90%) la elección de una versión adecuada de PIC es la mejor solución; sin embargo, dado su carácter general, otras familias de microcontroladores son más eficaces en aplicaciones específicas, especialmente si en ellas predomina una característica concreta, que puede estar muy desarrollada en otra familia.

Los detalles más importantes de la excelente acogida que tienen los PIC son los siguientes:

Page 8: Proyecto Termometro Digital

Sencillez de manejo: Tienen un juego de instrucciones reducido; 35 en la gama media.

Buena información, fácil de conseguir y económica. Precio: Su coste es comparativamente inferior al de sus competidores. Poseen una elevada velocidad de funcionamiento. Buen promedio de parámetros:

velocidad, consumo, tamaño, alimentación, código compacto, etc. Herramientas de desarrollo fáciles y baratas. Existe una gran variedad de herramientas hardware que permiten grabar, depurar,

borrar y comprobar el comportamiento de los PIC. Diseño rápido. La gran variedad de modelos de PIC permite elegir el que mejor responde a los

requerimientos de la aplicación.Una de las razones del éxito de los PIC se basa en su utilización. Cuando se aprende a manejar uno de ellos, conociendo su arquitectura y su repertorio de instrucciones, es muy fácil emplear otro modelo.

Características relevantes.

Descripción de las características más representativas de los PIC:

Arquitectura.

La arquitectura del procesador sigue el modelo Harvard. En esta arquitectura, la CPU se conecta de forma independiente y con buses distintos con la memoria de instrucciones y con la de datos.

La arquitectura Harvard permite a la CPU acceder simultáneamente a las dos memorias. Además, propicia numerosas ventajas al funcionamiento del sistema como se irán describiendo.

Segmentación.

Se aplica la técnica de segmentación ("pipe-line") en la ejecución de las instrucciones.

La segmentación permite al procesador realizar al mismo tiempo la ejecución de una instrucción y la búsqueda del código de la siguiente. De esta forma se puede ejecutar cada instrucción en un ciclo (un ciclo de instrucción equivale a cuatro ciclos de reloj).

Las instrucciones de salto ocupan dos ciclos al no conocer la dirección de la siguiente instrucción hasta que no se haya completado la de bifurcación.

Formato de las instrucciones.

El formato de todas las instrucciones es de la misma longitud

Todas las instrucciones de los microcontroladores de la gama baja tienen una longitud de 12 bits. Las de la gama media tienen 14 bits y más las de la gama

Page 9: Proyecto Termometro Digital

alta. Esta característica es muy ventajosa en la optimización de la memoria de instrucciones y facilita enormemente la construcción de ensambladores y compiladores.

Juego de instrucciones.

Procesador RISC (Computador de Juego de Instrucciones Reducido).

Los modelos de la gama baja disponen de un repertorio de 33 instrucciones, 35 los de la gama media y casi 60 los de la alta.

Todas las instrucciones son ortogonalesCualquier instrucción puede manejar cualquier elemento de la arquitectura

como fuente o como destino.

Arquitectura basada en un "banco de registros"Esto significa que todos los objetos del sistema (puertas de E/S,

temporizadores, posiciones de memoria, etc.) están implementados físicamente como registros.

Diversidad de modelos de microcontroladores con prestaciones y recursos diferentes

La gran variedad de modelos de microcontroladores PIC permite que el usuario pueda seleccionar el más conveniente para su proyecto.

Herramientas de soporte potentes y económicasLa empresa Microchip y otras que utilizan los PIC ponen a disposición de

los usuarios numerosas herramientas para desarrollar hardware y software. Son muy abundantes los programadores, los simuladores software, los emuladores en tiempo real, Ensambladores, Compiladores C, Intérpretes y Compiladores BASIC, etc.

La arquitectura Harvard y la técnica de segmentación son los principales recursos en los que se apoya el elevado rendimiento que caracteriza estos dispositivos programables, mejorando dos características esenciales:

Velocidad de ejecución. Eficiencia en la compactación del código.

Características del PIC 16f877A

Memoria RAM de programa de 1K con palabra de 14 bits tipo Flash. Memoria EEPROM de datos con 68 registros de propósito general. ALU de 8 bits. 2 puertos de comunicación puerto A de 5 bits y puerto B de 8 bits. Temporizador con preescaler. Stack de 8 niveles. Contador de programa de 13 bits.

Page 10: Proyecto Termometro Digital

Display de cristal líquido (LCD) de 2 líneas por 16 caracteres (ks0066u)

Para la visualización de la temperatura se empleará un display de cristal líquido (LCD) de 2 líneas por 16 caracteres (ks0066u), el cual será conectado a la salida del puerto B del PIC16F84A para enviarle a éste los datos a visualizar, siendo éstos los equivalentes a números decimales de la palabra digital obtenida del ADC y por el puerto A se enviarán las señales para controlar el dispositivo.

3. ANÁLISIS

El termómetro digital será desarrollado de acuerdo al siguiente diagrama a bloques

Page 11: Proyecto Termometro Digital

En el diagrama de bloques se muestra el esquema general del proyecto que partiendo de un sensor que en este caso es el LM35; el cual transforma la temperatura del ambiente en voltaje, del orden de mV, este dispositivo entrega a la salida una resolución de 10mV por cada grado centígrado.

Empleándolo solo sin ninguna configuración en especial, el dispositivo presenta un rango de medición de 2 a 150°C, esta configuración es la idónea para el proyecto pues solamente la utilizaremos para medir temperaturas hasta 99°C.

Una vez obtenida la salida del sensor que es analógica esta se envía el convertidor analógico-digital (A/D), el cual es un convertidor A/D de 8 bits con salida en paralelo, el cual tiene la gran labor de transformar la señal analógica del LM35 en una señal digital de 8 bits que se envía a la fase de interpretación.

La interpretación de los datos obtenidos del convertidor A/D la realizará en el microcontrolador PIC 16f877A, este convertirá los valores equivalentes para la visualización.

Este dispositivo necesita ser programado adecuadamente para obtener el funcionamiento deseado por lo cual es de de gran importancia esta etapa ya que definirá el éxito o fracaso del proyecto. Esta programación se realiza en lenguaje Ensamblador para el posterior quemado.

Para la visualización de la temperatura se empleará un display de cristal líquido (LCD) de 2 líneas por 16 caracteres el cual será conectado a la salida del puerto B del PIC 16f877A para enviarle a éste los datos a visualizar, siendo éstos los equivalentes a números decimales de la palabra digital obtenida del ADC y por el puerto A se enviarán las señales para controlar el dispositivo.

Para que el PIC 16f877A pueda realizar la interpretación de los datos es necesario que este sea programado con la funcionalidad deseada para ello emplearemos el siguiente diagrama de bloques del funcionamiento del programa que será quemado en el PIC 16f877A.

220 ohm

Page 12: Proyecto Termometro Digital

4. IMPLEMENTACION TERMÓMETRO DIGITAL

MATERIAL Y EQUIPO A EMPLEAR:

1 PROTOBOARD PIC 16f877A SENSOR LM35DZ ADC0804 CRISTAL DE 4Mhz DISPLAY DE CRISTAL LÍQUIDO DE 2 X 16 2 CAPACITORES CERÁMICOS DE 27pf CAPACITOR CERÁMICO DE 150pf 2 POTENCIÓMETROS DE PRESICIÓN DE 10K RESISTENCIA DE 10K A ¼ DE WATT FUENTE DE ALIMENTACIÓN DE 5V CABLE TELEFÓNICO PINZAS DE PUNTA Y CORTE MULTIMETRO DIGITAL FUENTE DE ALIMENTACIÓN REGULADA DE 5V

DESARROLLO DEL TERMÓMETRO DIGITAL

Page 13: Proyecto Termometro Digital

Inicialmente se tiene que considerar la manera cómo funciona el sensor LM35, que como anteriormente se mencionó, nos entrega a la salida 10mV por cada grado centígrado.

Como la salida del sensor es en mV dicha salida se convertirá en una cantidad digital para facilitar su manejo. Para esto se empleará el ADC0804.

Para la conversión analógica – digital el ADC0804 se manipulará de la siguiente manera:

1. Se habilita el CAD mediante un pulso bajo aplicado a la terminal de CS, para que se inicie la conversión.

2. Se habilita la terminal (pulso bajo) denominada WR para que inicie el proceso de conversión, para esto se debe esperar 100s aproximadamente para que se lleve a cabo la conversión.

3. Se habilita la terminal (pulso bajo) denominada RD para que a la salida se tenga el resultado de la conversión.

4. Finalmente se deshabilita el convertidor.

Lo anterior se observa en el siguiente diagrama:

El voltaje de referencia que se manejará en el convertidor se calcula de la siguiente manera:

Como el LM35 nos entrega a la salida 10mV/°C y la máxima temperatura que puede detectar es de 150 °C, se tiene que 10mV x 150 = 1.5V, el cual es el máximo voltaje que nos puede entregar, entonces, en base a este voltaje como es el máximo será el voltaje de referencia.

Pero como el ADC maneja en su entrada VREF/2 el voltaje de referencia será de 0.75 V.

La corriente que se manejará en dicho voltaje de referencia será de 1mA y el voltaje se obtendrá de VCC= 5V mediante un divisor de tensión:

Page 14: Proyecto Termometro Digital

La resistencia total del divisor se calcula:Rt = VCC / Ideseada

Rt = 5V / 1mA = 2.5 k

El factor que se manejará para poder calcular R1 y R2 del divisor de tensión se calcula:

Vdeseado/ Vtotal = 0.75V / 5V = 0.15

Una vez obtenido el factor se procede a calcular el valor de los resistores:

R1 = 0.15 * 2.5k = 375

R2 = 2.5k - 375 = 2125

Ahora se comprobará si los valores son correctos:

Vref = (375/375+2125) * 5V = 0.75 V

Que es el voltaje que se necesita para ajustar los pasos del convertidor a escala completa.

En lo que respecta al PIC 16f877A, para interpretar el valor de la conversión y la visualización de la misma, se desarrolló el programa de conforme al siguiente diagrama de bloques:

Page 15: Proyecto Termometro Digital

De lo expuesto en el diagrama de bloques se desarrolla el siguiente código en lenguaje MikroC.

unsigned char ch;unsigned int adc_rd;char *text,*text2,*text1;long tlong;int i,j;void main() { INTCON = 0; Lcd_Config(&PORTB, 4, 5, 6, 3, 2, 1, 0); LCD_Cmd(LCD_CURSOR_OFF); LCD_Cmd(LCD_CLEAR); for(i=0;i<5;i++){ LCD_Cmd(LCD_CLEAR); text = "ING. SISTEMAS"; LCD_Out(1,i,text); Delay_ms(1000); text2 = "INGENIERIA ELECTRONICA"; LCD_Out(2,i,text2); Delay_ms(1000); } text1 = "INGENIERIA ELECTRONICA"; LCD_Out(2,1,text1); ADCON1 = 0x82; TRISA = 0xFF; Delay_ms(10000); LCD_Cmd(LCD_CLEAR);

text = "Temperatura:"; for(j=16;j>0;j--){ LCD_Cmd(LCD_CLEAR); LCD_Out(1,j,text);

Page 16: Proyecto Termometro Digital

Delay_ms(500); }

while (1) { adc_rd = ADC_read(2);

tlong = (long)adc_rd * 5000; tlong = tlong / 1023 - 40; ch = tlong / 1000;

if(ch==0) LCD_Chr(2,6,' '); else LCD_Chr(2,6,48+ch);

ch = (tlong / 100) % 10;

LCD_Chr_CP(48+ch); ch = (tlong / 10) % 10; LCD_Chr_CP(48+ch); LCD_Chr_CP('.');

ch = tlong % 10; LCD_Chr_CP(48+ch); LCD_Chr_CP('C'); Delay_ms(200); }}

Y en el lenguaje assembler el código es el siguiente:

;#############################################################

LIST p= PIC 16f877A ; Directiva para definir micro. #include <H16F84A.inc> ; Fichero st ndard de cabezera.

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

;#################### DEFINICIONES ###########################

Lcd_var EQU 0X10CONTA1 EQU 0X08CONTA2 EQU 0X09ASCI EQU 0X12CONTA3 EQU 0X20CONTA4 EQU 0X21TEMPERATURA EQU 0X24UNIT EQU 0X25DECT EQU 0X26DIEZ EQU 0X27UNO EQU 0X28UNI EQU 0X29;################ COMIENZO DEL PROGRAMA ##################### ORG 0X00 GOTO INICIO

;################ PROGRAMA PRINCIPAL ######################### ORG 0X05 #include <LCD1602.inc> ; Fichero de rutinas LCD.

;*********TABLA DE VALORES DE TEMPERATURA.*******************;************************************************************;Rutina: TABLA;Funcion: Tabla con los valores de la temperatura para representar en el LCD.;Entradas: W.;Salidas: W.;Variables utilizadas: Ninguna.;************************************************************

TABLA ADDWF PCL,F ;SUMA W A PCL RETLW B'10000011' ;- 3°C POS.0

Page 17: Proyecto Termometro Digital

RETLW B'10000010' ;- 2°C POS.1 RETLW B'10000001' ;- 1°C POS.2 RETLW B'00000000' ; 0°C POS.3 RETLW B'00000001' ;+ 1°C POS.4 RETLW B'00000010' ;+ 2°C POS.5 RETLW B'00000011' ;+ 3°C POS.6 RETLW B'00000100' ;+ 4°C POS.7 RETLW B'00000101' ;+ 5°C POS.8 RETLW B'00000110' ;+ 6°C POS.9 RETLW B'00000111' ;+ 7°C POS.10 RETLW B'00001000' ;+ 8°C POS.11 RETLW B'00001001' ;+ 9°C POS.12 RETLW B'00001010' ;+10°C POS.13 RETLW B'00001011' ;+11°C POS.14 RETLW B'00001100' ;+12°C POS.15 RETLW B'00001101' ;+13°C POS.16 RETLW B'00001110' ;+14°C POS.17 RETLW B'00001111' ;+15°C POS.18 RETLW B'00010000' ;+16°C POS.19 RETLW B'00010001' ;+17°C POS.20 RETLW B'00010010' ;+18°C POS.21 RETLW B'00010011' ;+19°C POS.22 RETLW B'00010100' ;+20°C POS.23 RETLW B'00010101' ;+21°C POS.24 RETLW B'00010110' ;+22°C POS.25 RETLW B'00010111' ;+23°C POS.26 RETLW B'00011000' ;+24°C POS.27 RETLW B'00011001' ;+25°C POS.28 RETLW B'00011010' ;+26°C POS.29 RETLW B'00011011' ;+27°C POS.30 RETLW B'00011100' ;+28°C POS.31 RETLW B'00011101' ;+29°C POS.32 RETLW B'00011110' ;+30°C POS.33 RETLW B'00011111' ;+31°C POS.34 RETLW B'00100000' ;+32°C POS.35 RETLW B'00100001' ;+33°C POS.36 RETLW B'00100010' ;+34°C POS.37 RETLW B'00100011' ;+35°C POS.38 RETLW B'00100100' ;+36°C POS.39 RETLW B'00100101' ;+37°C POS.40 RETLW B'00100110' ;+38°C POS.41 RETLW B'00100111' ;+39°C POS.43 RETLW B'00101000' ;+40°C POS.44 RETLW B'00101000' ;+40°C POS.45 RETLW B'00101000' ;+40°C POS.46 RETLW B'00101000' ;+40°C POS.47 RETLW B'00101000' ;+40°C POS.48 RETLW B'00101000' ;+40°C POS.49 RETLW B'00101000' ;+40°C POS.50

RETURN ;RETORNA DE LA SUBRUTINA.

;*************** INICIALIZACION DEL PROGRAMA.*****************

INICIO BSF STATUS,RP0 ;PONEMOS LOS PUERTOS A Y B COMO SALIDAS, CLRF TRISB CLRF TRISA BCF STATUS,RP0 MOVLW B'00110000' ;INTRODUCIMOS EL N§ '00110000' EN EL REGISTRO MOVWF ASCI ;ASCI. CALL LCD_INI ;INICIALIZAMOS EL DISPLAY LCD.

MOVLW B'00001100' ;DISPLAY LCD SIN PARPADEO Y SIN CURSOR.CALL LCD_REG

MOVLW 0X80 ;VISUALIZACION DE LA FRASE "LA TEMPERATURA"CALL LCD_REG ;EN LA PRIMERA LINEA DEL DISPLAY LCD

MEDIANTEMOVLW 'L' ;LAS ORDENES LCD_REG Y LCD_DATO DEL ARCHIVO

CALL LCD_DATO ;LCD1602.INC.MOVLW 'A'CALL LCD_DATOMOVLW ' 'CALL LCD_DATOMOVLW 'T'

Page 18: Proyecto Termometro Digital

CALL LCD_DATOMOVLW 'E'CALL LCD_DATOMOVLW 'M'CALL LCD_DATOMOVLW 'P'CALL LCD_DATOMOVLW 'E'CALL LCD_DATOMOVLW 'R'CALL LCD_DATOMOVLW 'A'CALL LCD_DATOMOVLW 'T'CALL LCD_DATOMOVLW 'U'CALL LCD_DATOMOVLW 'R'CALL LCD_DATOMOVLW 'A'CALL LCD_DATO

MOVLW 0XC0 ;VISUALIZACION DE LA FRASE "ES DE: +00°C"CALL LCD_REG ;EN LA SEGUNDA LINEA DEL DISPLAY LCD

MEDIANTEMOVLW 'E' ;LAS ORDENES LCD_REG Y LCD_DATO DEL ARCHIVOCALL LCD_DATO ;LCD_CXX.INC.MOVLW 'S'CALL LCD_DATOMOVLW ' 'CALL LCD_DATOMOVLW 'D'CALL LCD_DATOMOVLW 'E'CALL LCD_DATOMOVLW ':'CALL LCD_DATOMOVLW ' 'CALL LCD_DATOMOVLW '+'CALL LCD_DATOMOVLW '0'CALL LCD_DATOMOVLW '0'CALL LCD_DATOMOVLW B'11011111'CALL LCD_DATOMOVLW 'C'CALL LCD_DATO

;*************** COMIENZO DEL PROGRAMA PRINCIPAL.*************

PRINCIPAL MOVLW B'00011000' ;DESHABILITACION DEL DISPLAY Y EL ADC.MOVWF PORTA

CALL TEMPO1 ;TEMPORIZACIONES PARA EL BUEN FUNCIONAMIENTO

CALL TEMPO1 ;DEL ADC.CALL TEMPO1CALL TEMPO1CALL TEMPO1

BSF STATUS,RP0 ;PUERTO B COMO ENTRADAS PARA RECIBIR DATOS,MOVLW B'11111111' ;HABILITACION DEL ADC COMO LECTURA.MOVWF TRISBBCF STATUS,RP0 MOVLW B'00010000'MOVWF PORTA

CALL TEMPO1 ;TEMPORIZACION PARA TERMINAR DE REALIZARCALL TEMPO1 ;LA LECTURA EL ADC.CALL TEMPO1CALL TEMPO1CALL TEMPO1

MOVLW B'00000000' ;HABILITACION DE LA ESCRITURA DEL ADC.

Page 19: Proyecto Termometro Digital

MOVWF PORTA

CALL TEMPO1 ;TEMPORIZACION PARA TERMINAR DE REALIZARCALL TEMPO1 ;LA ESCRITURA DEL ADC.CALL TEMPO1CALL TEMPO1CALL TEMPO1

MOVF PORTB,W ;RECOGIDA DE DATOS DEL ADC, LLAMADA A TABLA

CALL TABLA ;PARA LA CONVERSION DE DATOS Y ALMACENAJE DE MOVWF TEMPERATURA ;ESTOS DATOS EN REGISTRO TEMPERATURA.

BSF STATUS,RP0 ;PUERTO B COMO SALIDAS, DESHABILITACION DEL ADC

CLRF TRISB ;Y HABILITACION DEL DISPLAY LCD. BCF STATUS,RP0

MOVLW B'00011100'MOVWF PORTA

BTFSS TEMPERATURA,7 ;PREGUNTA SI EL DATO ES POSITIVO OGOTO POSITIVO ;NEGATIVO CON EL BIT 7 DEL REGISTRO

TEMPERATURA.GOTO NEGATIVO

POSITIVO MOVLW 0XC7 ;MANDA EL SIGNO '+' A LA POSICION 0XC7CALL LCD_REG ;DEL DISPLAY LCD Y SALTA A LA POSICIONMOVLW '+' ;FINT.CALL LCD_DATOGOTO FINT

NEGATIVO BCF TEMPERATURA,7 ;PONE A CERO EL BIT 7 DEL REGISTRO TEMPERATURA

MOVLW 0XC7 ;Y MANDA EL SIGNO '-' A LA POSICION 0XC7 CALL LCD_REG ;DEL DISPLAY LCD. MOVLW '-'

CALL LCD_DATO

FINT CALL BCDT ;LLAMA A LA SUBRUTINA DE CONVERSION A BCD.

MOVLW 0XC9 ;ESCRIBE EL DATO DEL REGISTRO UNIT EN LA CALL LCD_REG ;POSICION 0XC9 DEL DISPLAY LCD.

MOVF UNIT,WCALL LCD_DATO

MOVLW 0XC8 ;ESCRIBE EL DATO DEL REGISTRO DECT EN LA CALL LCD_REG ;POSICION 0XC8 DEL DISPLAY LCD.MOVF DECT,WCALL LCD_DATO

GOTO PRINCIPAL ;SALTA A LA POSICION PRINCIPAL.

;******************** SUBRUTINA TEMPO1.**********************;*************************************************************;Rutina: TEMPO1;Funcion: Retardo para la correcta lectura del ADC con 2 contadores en decimal; de 255 y 40 respectivamente.;Entradas: Ninguna.;Salidas: Ninguna.;Variables utilizadas: CONTA3,CONTA4;*************************************************************TEMPO1 MOVLW .255 ;SUBRUTINA DE TEMPORIZACION MEDIANTE

MOVWF CONTA3 ;DOS CONTADORES CARGADOS CON LOS NUMEROS MOVLW .40 ;EN DECIMAL 255 Y 40 RESPECTIVAMENTE.

MOVWF CONTA4

BUCLE3 DECFSZ CONTA3,1GOTO BUCLE3

BUCLE4 DECFSZ CONTA4,1GOTO BUCLE3RETURN

;************ CONVERSION A BCD DE LA TEMPERATURA.*************

Page 20: Proyecto Termometro Digital

;************************************************************;Rutina: BCDT;Funcion: Convierte los valores analogicos de temperatura a digitales para; separar las decenas de las unidades y convertirlo en valor ASCI.;Entradas: TEMPERATURA, ASCI.;Salidas: UNIT, DECT.;Variables utilizadas: Ninguna.;************************************************************

BCDT CLRF UNIT ;SUBRUTINA QUE CONVIERTE EL VALOR EN CLRF DECT ;BINARIO DE UN REGISTRO A BCD. MOVLW B'00001010' ;VARIABLE DIEZ=10. MOVWF DIEZ MOVLW B'00000001' ;VARIABLE UNO=1. MOVWF UNO GOTO DOSPRINCI INCF DECT,F ;INCREMENTAMOS DECT EN 1 POR CADA DOS MOVF TEMPERATURA,W ;DECENA DE TEMPERATURA.TRES MOVWF UNI MOVF DIEZ,W SUBWF TEMPERATURA,F ;RESTAMOS 10 A LA TEMPERATURA PARA BTFSC STATUS,C ;SEPARAR LAS DECENAS DE LAS UNIDADES. GOTO PRINCI GOTO CUATROCINCO INCF UNIT,F ;INCREMENTAMOS UNIT EN 1 POR CADACUATRO MOVF UNO,W ;UNIDAD DE TEMPERATURA. SUBWF UNI,F ;RESTAMOS 1 A LAS UNIDADES PARA SABER BTFSC STATUS,C ;LAS UNIDADES. GOTO CINCO MOVF ASCI,W ;CONVERTIMOS EL VALOR DE UNIT A ASCI. XORWF UNIT MOVF ASCI,W ;CONVERTIMOS EL VALOR DE DECT A ASCI. XORWF DECT RETURN;################ FIN PROGRAMA PRINCIPAL ##################### END ; Fin de programa

Después de compilar el código y generar su código hexadecimal se simulara su funcionamiento en el Software Proteus de acuerdo al siguiente gráfico

Page 21: Proyecto Termometro Digital

Diagrama del termómetro en proteus

5. SÍNTESIS

Como hemos explicado el proyecto realiza la medición de la temperatura del ambiente usando un sensor LM35 el cual nos da la medida en una señal analógica, la que será convertida a digital por el convertidor analógico digital que otorgara como salida una señal digital de 8bits que serán interpretadas por el PIC 16f877A y se realizará la visualización de los datos en el LCD.

Con este dispositivo podemos medir la temperatura de un ambiente o aparato en concreto como pudiera ser un motor, nevera,… etc.

BIBLIOGRAFÍA

Microcontroladores PIC, Diseño práctico de aplicacionesJosé Ma. Ángulo Usategui, Ignacio Ángulo Martínez 2da. ediciónEditorial Mc Graw HillPágs. 29,301999

Page 22: Proyecto Termometro Digital

www.microchip.com www.fairchildsemi.com www.monografias.com www.samsung.com