Termometro Digital
Enviado por hmartin • 29 de Abril de 2013 • 14.145 Palabras (57 Páginas) • 367 Visitas
Termómetro digital
OBJETIVO.
El fin perseguido por este montaje es usar el ADC del PIC. El ADC es un módulo que convierte un voltaje analógico en una cifra digital. A su vez nosotros mediante otro artificio de software convertiremos la cifra hexadecimal en decimal. El convertidor analógico digital lo graduaremos para que mida de 5 milivoltios en 5 milivoltios.
La cifra obtenida será un número hexadecimal equivalente al nº de saltos dados. Así, si tengo 24(h) saltos y cada salto es de 5 milivoltios tendré un valor de B4(h) voltios. Como los humanos contamos con el código decimal, está cifra nos resulta muy difícil de cuantificar. Mediante un pequeño artificio matemático la convertimos al código decimal, obteniendo el nº 180(10), 180 milivoltios.
El sensor nos dice el fabricante que da 10 milivoltios por cada grado centígrado. Esos 180 milivoltios los dividimos entre diez y obtenemos 18,0 ºC
Esquema
Circuito electrónico: LCD + PIC + LM35D.
Fuente de alimentación: Regulada a 5,115 voltios
Patillaje del PIC 16F876.
Conexionado del PIC 16 F876.
Conexionado de la pantalla LCD 2 x 16.
Buzzer o chicharra.
Patillaje del LM35D.
Conexionado del sensor de temperatura LM35D.
PROGRAMA: termolm35.asm
El programa empezará titulando el montaje con la siguiente pantalla:
A continuación saldrá una carátula en la pantalla con los lugares
donde saldrán las temperaturas en formato hexadecimal ( nº directo
del ADC), formato hexadecimal del nº anterior pero multiplicado por
cinco ( cada salto del ADC es de 5 milivoltios) y por último en formato decimal.
Y por fin la temperatura en los tres formatos. Por ejemplo:
Nº hexadecimal del ADC = 0021h
Nº hexadecimal del ADC x 5 = 00A5h
Nº decimal = 016.5 ºC
;---------------------------------------------------------
;OSCILLATOR = XTAL/4 MHz.
;CODE PROTECT = CP OFF
;FUSES:
;WDT = NO
;PWRT = SI
;BODEN = SI
;LVP = NO
;CPD = NO
;WRT = SI
;DEBURGGER = NO
;-----------------------------------------------------
;-----------------------------------------------------
;Proyecto: termómetro LM35D
;-----------------------------------------------------
LIST p=16f876
INCLUDE "p16f876.inc"
pagina0 macro
bcf PCLATH,4
bcf PCLATH,3
endm
pagina1 macro
bcf PCLATH,4
bsf PCLATH,3
endm
pagina2 macro
bsf PCLATH,4
bcf PCLATH,3
endm
pagina3 macro
bsf PCLATH,4
bsf PCLATH,3
endm
;--------------------------
ORG 00h
goto inicio
ORG 04h
goto int
int
nop
retfie
ORG 10h
;----------------------------
; I N I C I O
;----------------------------
inicio
;Configuraciones de hard-soft.
;Configurar PA0-5 (A/D.); configurar puerto A para los convertidores ADC.
call banco1
movlw 84h
movwf ADCON1
call banco0
call paconfig
;Configurar PB1-7 salidas.; configurar puerto B para la LCD.
pagina3
call pbconfig
;Configuración inicial LCD.
call lconfigI
;Configuración de trabajo LCD.
call lconfigW
call lcdtm; TERMO
pagina0
;Activar/desactivar buzzer.
call bz1
call sg1
call bz1
;---------------------------------
;Termómetro LM35.
;---------------------------------
pagina3
call lcdtmc; TERMÓMETRO A/D,x5 y decimal.
pagina0
call sg1
call sg1
call bz300
convs
call banco1
movlw 84h
movwf ADCON1
call banco0
call paconfig
movlw 0c1h; CANAL0 y Fosc interno.
movwf ADCON0
call usg150
bsf ADCON0,GO
conv
btfsc ADCON0,GO
goto conv
call banco1
movf ADRESL,0
call banco0
movwf 61h
movf ADRESH,0
movwf 60h
pagina1
call multx5; multiplicar por 5 el nº del ADC en hexadecimal.
pagina0
pagina2
call hexdecT; convertir el nº hexadecimal en decimal.
pagina0
pagina3
call lcdbase2; ver el nº hex ADC.
call lcdbase3; ver el nº anterior mult x 5.
call lcdbase4; ver el nº en decimal.
pagina0
goto convs
;------------------------------------------
;------------------------------------------
;------------------------------------------
;-----------------------------------
;Configurar el Puerto A.
;-----------------------------------
paconfig
call banco1
movlw 1bh
movwf TRISA
call banco0
return
...