Está en la página 1de 21

UNIVERSIDAD NACIONAL SANTIAGO ANTNEZ DE MAYOLO

FACULTAD DE CIENCIAS

Escuela Profesional de Ingeniera de Sistemas e Informtica

MICROPROCESADORES Y PERIFERICOS
DOCENTE: ING. ALVARADO CACERES LUIS

TEMA:

TERMMETRO DIGITAL CON PIC 16f877A

ALUMNOS:

Blas Cerda Elmer Chauca Guzmn John Harold Guerra Caldern Lenin Maldonado Inti Nelson Vitaliano Pohl Cceres Paul Silverio Torres Edison Tahua Quijano Edwin
HUARAZ 2011

INTRODUCCIN En el presente trabajo se explica el diseo y desarrollo para implementar un termmetro 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 engaoso debido a su simplicidad. A menudo pensamos en ella como un simple nmero, pero en realidad es una estructura estadstica cuya exactitud y repetitividad pueden verse afectadas por la masa trmica, el tiempo de medida, el ruido elctrico y los algoritmos de medida. La temperatura es difcil de medir con exactitud an en circunstancias ptimas, y en las condiciones de prueba en entornos reales es an ms difcil. Entendiendo las ventajas y los inconvenientes de los diversos enfoques que existen para medir la temperatura, resultar ms fcil evitar los problemas y obtener mejores resultados.

1. DESCRIPCIONES GENERALES El presente proyecto pretende construir un termmetro 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 analgico digital que hace de interprete entre el sensor y el PIC, este PIC ser programado en lenguaje ensamblador para que realice los mtodos necesarios. Con el presente proyecto pretendemos poner en prctica los conceptos hasta ahora aprendidos en el curso y adems desarrollar nuestras capacidades de formulacin, desarrollo e implementacin de proyectos de sistemas. 2. MARCO TERICO Sensor LM35DZ El sensor que se utilizar ser el transistor LM35DZ modelo TO-92, el cual es un sensor de temperatura con buena precisin en escala Celsius. ste dispositivo transforma la temperatura del ambiente en voltaje, del orden de mV. El LM35DZ entrega a la salida una resolucin de 10mV por cada grado centgrado. Emplendolo solo sin ninguna configuracin en especial, el dispositivo presenta un rango de medicin de 2 a 150C, como se muestra a continuacin:

Esta configuracin es la idnea para el proyecto pues solamente la utilizaremos para medir temperaturas hasta 99C.

Este sensor es fabricado por Fairchild y National Semiconductor.

Convertidor analgico-digital La etapa de conversin se llevar a cabo mediante un convertidor analgico-digital, el cual es A / D de 8 bits con salida en paralelo, debido a que es uno de los dispositivos ms populares en aplicaciones de sistemas, adems de estar bien documentado, pues existe gran cantidad de informacin en libros y en Internet para poderlo emplear en aplicaciones con microprocesadores, microcontroladores y PLD s. Dicho convertidor utiliza el mtodo de aproximaciones sucesivas para la conversin, que se describe brevemente a continuacin: Los convertidores de aproximaciones sucesivas contienen un valor fijo en su tiempo de conversin que no depende del valor de la entrada analgica, la disposicin bsica es semejante a la de ADC de rampa digital, sin embargo, el convertidor de aproximaciones sucesivas no utiliza ningn contador para dar la entrada en el bloque del convertidor DAC, pero en cambio usa un registro con lgica de control que modifica el contenido del registro bit a bit hasta que los datos del registro son el equivalente digital de la entrada analgica. El tiempo de conversin de los convertidores de aproximaciones sucesivas de "n" bits requieren "n" ciclos de reloj para realizar su conversin 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 lgico en cada posicin del bit para ver si se necesita o no, es por esto que los convertidores de aproximaciones sucesivas tienen tiempos de conversin muy rpidos, su uso en aplicaciones de sistemas con adquisicin de datos permitirn que se adquieran mas valores de datos en un intervalo de tiempo dado. Esto puede ser muy importante cuando los datos analgicos cambian su valor rpidamente.

Ejemplo de un convertidor A/D tenemos el ADC0804 La funcin de cada uno de sus pines es:

Pin 1 2 3 4 5 6 7 8 9 10 11/18 19 20

Nombre CS- Chip Select RD- Salida autorizada WR- Start conversion CLKIN INTR Vlts + Vlts A GND Vref/2 D GND DB7 a DB0 CLK R Vcc

Funcin Habilita el chip Lee la informacin Iniciar conversin Entrada de reloj Indicador fin conversin Seal positiva analgica Seal negativa analgica Tierra analgica 1/2 mximo del Pin 6 Tierra digital Salidas digitales Salidas reloj interno Alimentacin

Lgica I/0 I/0 I/0 I/0 -0,3/16V 0 0

I/0 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 analgica, necesitamos convertirla a su equivalente en valor digital para poderla manejar, pues los valores

digitales son cantidades discretas y por lo tanto es ms fcil trabajar con ellas que con cantidades analgicas.

El convertidor presenta el siguiente diagrama de acuerdo a la colocacin de sus pines descritos anteriormente:

Sus caractersticas ms importantes son: y Posee dos entradas analgicas: 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 analgica se aplica en V IN(+) mientras que VIN(-) se conecta a la tierra analgica. Durante la operacin normal, el convertidor utiliza V CC = +5 V como voltaje de referencia y la entrada analgica puede variar desde 0 hasta 5 V, que es el valor de escala completa. Convierte el voltaje analgico 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 resolucin 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 tpica de reloj es de 606 kHz y se

y y

obtiene con R = 10k ; y C = 150 pf. Si se desea tambin 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 conversin es, aproximadamente, igual a 100Qs. Tiene conexiones a tierra por separado para los voltajes analgicos y digitales. La terminal ocho corresponde a la tierra analgica y se conecta al punto comn como referencia en el circuito analgico que genera el voltaje analgico. La terminal diez es la tierra digital, que es la que utilizan todos los dispositivos digitales que integran al sistema.

Microcontrolador PIC 16f877A La interpretacin 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 visualizacin. Como ste dispositivo es el que desarrollar el trabajo ms importante de nuestro proyecto, pues de nada sirve tener el mejor sensor de temperatura ni el convertidor analgico digital ms exacto sino contamos con un dispositivo que interprete los valores correctamente, se describir brevemente a continuacin al PIC 16f877A: Para las aplicaciones ms habituales (casi un 90%) la eleccin de una versin adecuada de PIC es la mejor solucin; sin embargo, dado su carcter general, otras familias de microcontroladores son ms eficaces en aplicaciones especficas, especialmente si en ellas predomina una caracterstica concreta, que puede estar muy desarrollada en otra familia.
Los detalles ms importantes de la excelente acogida que tienen los PIC son los siguientes:
y y y y y y y y

Sencillez de manejo: Tienen un juego de instrucciones reducido; 35 en la gama media. Buena informacin, fcil de conseguir y econmica. Precio: Su coste es comparativamente inferior al de sus competidores. Poseen una elevada velocidad de funcionamiento. Buen promedio de parmetros: velocidad, consumo, tamao, alimentacin, cdigo compacto, etc. Herramientas de desarrollo fciles y baratas. Existe una gran variedad de herramientas hardware que permiten grabar, depurar, borrar y comprobar el comportamiento de los PIC. Diseo rpido. La gran variedad de modelos de PIC permite elegir el que mejor responde a los requerimientos de la aplicacin. Una de las razones del xito de los PIC se basa en su utilizacin. Cuando se aprende a manejar uno de ellos, conociendo su arquitectura y su repertorio de instrucciones, es muy fcil emplear otro modelo.

Caractersticas relevantes. Descripcin de las caractersticas ms 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 simultneamente a las dos memorias. Adems, propicia numerosas ventajas al funcionamiento del sistema como se irn describiendo. Segmentacin. Se aplica la tcnica de segmentacin ("pipe-line") en la ejecucin de las instrucciones. La segmentacin permite al procesador realizar al mismo tiempo la ejecucin de una instruccin y la bsqueda del cdigo de la siguiente. De esta forma se puede ejecutar cada instruccin en un ciclo (un ciclo de instruccin equivale a cuatro ciclos de reloj). Las instrucciones de salto ocupan dos ciclos al no conocer la direccin de la siguiente instruccin hasta que no se haya completado la de bifurcacin. 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 l a gama media tienen 14 bits y ms las de la gama alta. Esta caracterstica es muy ventajosa en la optimizacin de la memoria de instrucciones y facilita enormemente la construccin 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 ortogonales Cualquier instruccin 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.) estn implementados fsicamente 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 ms conveniente para su proyecto. Herramientas de soporte potentes y econmicas La empresa Microchip y otras que utilizan los PIC ponen a disposicin 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, Intrpretes y Compiladores BASIC, etc. La arquitectura Harvard y la tcnica de segmentacin son los principales recursos en los que se apoya el elevado rendimiento que caracteriza estos dispositivos programables, mejorando dos caractersticas esenciales: Velocidad de ejecucin. Eficiencia en la compactacin del cdigo.
Caractersticas del PIC 16f877A
y y y y y y y

y y

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

P r la visuali aci de la temperatura se emplear u display de cristal l uido (L de 2 l eas por 16 caracteres (ks 66u el cual ser para enviarle a ste los conectado a la salida del puerto B del PI 16F datos a visuali ar siendo stos los equivalentes a nmeros decimales de la palabra di ital obtenida del ADC y por el puerto A se enviar n las seales para controlar el dispositivo.

3. A

El termmetro di ital ser bloques

desarrollado de acuerdo al si uiente diagrama a

220 ohm

En el diagrama de bloques se muestra el esquema general del proyecto que partiendo de un sensor que en este caso es el L el cual trans orma la temperatura del ambiente en voltaje, del orden de mV, este dispositivo entrega a la salida una resolucin de 10mV por cada grado centgrado.
Emplendolo solo sin ninguna configuracin en especial, el dispositivo presenta un rango de medicin de 2 a 150C, esta configuracin es la idnea para hasta 99C. el proyecto pues solamente la utili aremos para medir temperaturas Una vez obtenida la salida del sensor que es analgica esta se enva el convertidor analgico-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 seal analgica del L 5 en una seal digital de 8 bits que se enva a la fase de interpretacin.

(LCD) d

Di pl d (k 0066u)

cri al lquid

2 l

por 16 carac r



La interpretacin de los datos obtenidos del convertidor A/D la realizar en el microcontrolador PIC 16f877A, este convertir los valores equivalentes para la visualizacin. 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 programacin se realiza en lenguaje Ensamblador para el posterior quemado. Para la visualizacin de la temperatura se emplear un display de cristal lquido (LCD) de 2 lneas 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 nmeros decimales de la palabra digital obtenida del ADC y por el puerto A se enviarn las seales para controlar el dispositivo. Para que el PIC 16f877A pueda realizar la interpretacin 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.

4. IMPLEMENTACION TERMMETRO DIGITAL


MATERIAL Y EQUIPO A EMPLEAR:
y y y y y y y y y y y y y y y

1 PROTOBOARD PIC 16f877A SENSOR LM35DZ ADC0804 CRISTAL DE 4Mhz DISPLAY DE CRISTAL LQUIDO DE 2 X 16 2 CAPACITORES CERMICOS DE 27pf CAPACITOR CERMICO DE 150pf 2 POTENCIMETROS DE PRESICIN DE 10K ; RESISTENCIA DE 10K ; A DE WATT FUENTE DE ALIMENTACIN DE 5V CABLE TELEFNICO PINZAS DE PUNTA Y CORTE MULTIMETRO DIGITAL FUENTE DE ALIMENTACIN REGULADA DE 5V

DESARROLLO DEL TERMMETRO DIGITAL


Inicialmente se tiene que considerar la manera cmo funciona el sensor LM35, que como anteriormente se mencion, nos entrega a la salida 10mV por cada grado centgrado. 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 conversin analgica digital el ADC0804 se manipular de la siguien te manera:

1. Se habilita el CAD mediante un pulso bajo aplicado a la terminal de CS, para que se inicie la conversin. 2. Se habilita la terminal (pulso bajo) denominada WR para que inicie el proceso de conversin, para esto se debe esperar 100Qs aproximadamente para que se lleve a cabo la conversin. 3. Se habilita la terminal (pulso bajo) denominada RD para que a la salida se tenga el resultado de la conversin. 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 mxima temperatura que puede detectar es de 150 C, se tiene que 10mV x 150 = 1.5V, el cual es el mximo voltaje que nos puede entregar, entonces, en base a este voltaje como es el mximo 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 V CC= 5V mediante un divisor de tensin:

La resistencia total del divisor se calcula: Rt = V CC / Ideseada Rt = 5V / 1mA = 2.5 k; El factor que se manejar para poder calcular R1 y R2 del divisor de tensin 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 conversin y la visualizacin de la misma, se desarroll el programa de conforme al siguiente diagrama de bloques:

De lo expuesto en el diagrama de bloques se desarrolla el siguiente cdigo en lenguaje MikroC.


; unsigned unsigned int dc_rd; char *text,*text2,*text ; l ng tl ng; int i,j; id ain() { = 0; I

   

 " ! 

cd_Config(&P B, 4, 5, , 3, 2, , 0); CD_Cmd(LCD_CURS R_OFF); LCD_Cmd(LCD_CLEAR); for(i=0;i<5;i++){ LCD_Cmd(LCD_CLEAR); text = "I . SIS E AS"; LCD_Out(1,i,text); Delay_ms(1000); text2 = "I E IERIA 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); Delay_ms(500); }

hile (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 cdigo es el siguiente:


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

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ;#################### DEFINICIONES ########################### Lcd_var CONTA1 CONTA2 ASCI E U CONTA3 CONTA4 TE PERATURA UNIT DECT E U E U E U 0X12 E U E U E U E U E U

0X10 0X08 0X09 0X20 0X21 0X24 0X25 0X26

'

% & $ &

) 0

5 5 5

5 5 5 5 5

) 0

# #

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

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

6 6 6

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' CALL LCD_REG MOVLW 0X80 CALL LCD_REG ;DISPLAY LCD SIN PARPADEO Y SIN CURSOR. ;VISUALIZACION DE LA FRASE "LA TEMPERATURA" ;EN LA PRIMERA LINEA DEL DISPLAY LCD

MEDIANTE CALL MOVLW 'L' ;LAS ORDENES LCD_REG Y LCD_DATO DEL ARCHIVO LCD_DATO ;LCD1602.INC. MOVLW 'A' CALL LCD_DATO MOVLW ' ' CALL LCD_DATO MOVLW 'T' CALL LCD_DATO MOVLW 'E' CALL LCD_DATO MOVLW 'M' CALL LCD_DATO MOVLW 'P' CALL LCD_DATO MOVLW 'E' CALL LCD_DATO MOVLW 'R' CALL LCD_DATO MOVLW 'A' CALL LCD_DATO MOVLW 'T' CALL LCD_DATO MOVLW 'U' CALL LCD_DATO MOVLW 'R' CALL LCD_DATO MOVLW 'A' CALL LCD_DATO MOVLW 0XC0 CALL LCD_REG MEDIANTE MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL 'E' LCD_DATO 'S' LCD_DATO '' LCD_DATO 'D' LCD_DATO 'E' LCD_DATO ':' LCD_DATO '' LCD_DATO '+' LCD_DATO '0' LCD_DATO '0' LCD_DATO B'11011111' LCD_DATO 'C' LCD_DATO ;LAS ORDENES LCD_REG Y LCD_DATO DEL ARCHIVO ;LCD_CXX.INC. ;VISUALIZACION DE LA FRASE "ES DE: +00C" ;EN LA SEGUNDA LINEA DEL DISPLAY LCD

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

CALL FUNCIONAMIENTO CALL CALL CALL CALL

TEMPO1 TEMPO1 TEMPO1 TEMPO1 TEMPO1

;TEMPORIZACIONES PARA EL BUEN ;DEL ADC.

BSF STATUS,RP0 MOVLW B'11111111' MOVWF TRISB BCF STATUS,RP0 MOVLW B'00010000' MOVWF PORTA CALL CALL CALL CALL CALL TEMPO1 TEMPO1 TEMPO1 TEMPO1 TEMPO1

;PUERTO B COMO ENTRADAS PARA RECIBIR DATOS, ;HABILITACION DEL ADC COMO LECTURA.

;TEMPORIZACION PARA TERMINAR DE REALIZAR ;LA LECTURA EL ADC.

MOVLW B'00000000' MOVWF PORTA CALL CALL CALL CALL CALL MOVF TABLA CALL TABLA MOVWF TEMPERATURA BSF ADC BCF CLRF TRISB STATUS,RP0 MOVLW B'00011100' MOVWF PORTA BTFSS GOTO TEMPERATURA. GOTO POSITIVO MOVLW CALL MOVLW CALL GOTO BCF NEGATIVO 0XC7 LCD_REG '+' LCD_DATO FINT STATUS,RP0 TEMPO1 TEMPO1 TEMPO1 TEMPO1 TEMPO1 PORTB,W

;HABILITACION DE LA ESCRITURA DEL ADC. ;TEMPORIZACION PARA TERMINAR DE REALIZAR ;LA ESCRITURA DEL ADC.

;RECOGIDA DE DATOS DEL ADC, LLAMADA A ;PARA LA CONVERSION DE DATOS Y ALMACENA E DE ;ESTOS DATOS EN REGISTRO TEMPERATURA. ;PUERTO B COMO SALIDAS, DESHABILITACION DEL ;Y HABILITACION DEL DISPLAY LCD.

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

;MANDA EL SIGNO '+' A LA POSICION 0XC7 ;DEL DISPLAY LCD Y SALTA A LA POSICION ;FINT.

NEGATIVO TEMPERATURA

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

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. ;ESCRIBE EL DATO DEL REGISTRO UNIT EN LA ;POSICION 0XC9 DEL DISPLAY LCD.

MOVF

MOVLW 0XC9 CALL LCD_REG UNIT,W CALL LCD_DATO MOVLW CALL MOVF CALL GOTO 0XC8 LCD_REG DECT,W LCD_DATO PRINCIPAL

;ESCRIBE EL DATO DEL REGISTRO DECT EN LA ;POSICION 0XC8 DEL DISPLAY LCD.

;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 BUCLE4 DECFSZ CONTA3,1 GOTO BUCLE3 DECFSZ CONTA4,1 GOTO BUCLE3 RETURN

;************ CONVERSION A BCD DE LA TEMPERATURA.************* ;************************************************************ ;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. ;********************************* *************************** CLRF UNIT ;SUBRUTINA UE 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 DOS PRINCI 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 CUATRO CINCO INCF UNIT,F ;INCREMENTAMOS UNIT EN 1 POR CADA CUATRO 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 BCDT

Despus de compilar el cdigo y generar su cdigo hexadecimal se simulara su funcionamiento en el Software Proteus de acuerdo al siguiente grfico

Diagrama del termmetro en proteus

5. SNTESIS Como hemos explicado el proyecto realiza la medicin de la temperatura del ambiente usando un sensor LM35 el cual nos da la medida en una seal analgica, la que ser convertida a digital por el convertidor analgico digital que otorgara como salida una seal digital de 8bits que sern interpretadas por el PIC 16f877A y se realizar la visualizacin 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.
BIBLIOGRAFA
y

Microcontroladores PIC, Diseo prctico de aplicaciones Jos Ma. ngulo Usategui, Ignacio ngulo Martnez 2da. edicin Editorial Mc Graw Hill Pgs. 29,30 1999 www.microchip.com www.fairchildsemi.com www.monografias.com www.samsung.com

y y y

También podría gustarte