Microcontroladores - AYUDA CONTROL DE TEMPERATURA

 
Vista:

AYUDA CONTROL DE TEMPERATURA

Publicado por sasha (1 intervención) el 20/03/2013 05:41:03
hola! me gustaria saber si alguien podria ayudarme a ponerle un set point (o una temperatura fija) a este control de temperatura para que pueda prender el led en RB0 cuando la temperatura sea mayor a 30 grados y se apague cuando sea menor, por favor he intentado de mil formas y nada mas no le encuentro donde y como debe ir, solo tengo la idea de que tengo que hacer una comparacion con una resta pero no se que debo restar con que ni en que parte del programa ponerlo, este programa solo muestra la temperatura que da el sensor lm35 en uns pantalla LCD, les agradeceria mucho su ayuda!

;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
INCLUDE <P16F887.INC> ;DECLARO LA LIBRERIA DEL MICROCONTROLADOR CORRESPONDIENTE
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
;P A L A B R A D E C O N F I G U R A C I O N

__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR40V

;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

CBLOCK 0X20
NUM1,NUM2,NUM3
PORTLCDT,PORTLCDTEMP,PORTDTEMP
POINTER ;REGISTROS UTILIZADOS EN BINBCD Y EN LA ADQUISICION DE DATOS
UNIDADES,DECENAS ;
CENTENAS,MILLARES
DATOH
SAMPLE
SHIFT
ENDC

CBLOCK 0X70 ;SE COLOCA A DATOL EN UNA DE LAS LOCALIDADES DE
DATOL ;MEMORIA QUE ESTAN ESPEJADAS EN BANCO0 Y BANCO1
ENDC


;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
ERRORLEVEL -207 ; ELIMINO DE LA VENTANA DE COMPILACION EL ERROR 207
ERRORLEVEL -302 ; ELIMINO DE LA VENTANA DE COMPILACION EL ERROR 302
ERRORLEVEL -305 ; ELIMINO DE LA VENTANA DE COMPILACION EL ERROR 305

;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

#DEFINE RS PORTC,2
#DEFINE EN PORTC,3

LIMPIAR EQU B'00000001' ;LIMPIA TODA LA PANTALLA
RENGLON1 EQU B'10000000' ;COLOCA EN EL RENGLON 1
RENGLON2 EQU B'11000000' ;COLOCA EN EL RENGLON2
DISON EQU B'00001100' ;ENCIENDE EL DISPLAY
HOME EQU B'00000010' ;VA A LA DIDERCCION 0
SHIFTDL EQU B'00011100' ;ROTA EL LCD A LA IZQUIERDA
SHIFTDR EQU B'00011000' ;ROTA EL LCD A LA DERECHA
SHIFTCL EQU B'00010100' ;ROTA EL CURSOR A LA IZQUIERDA
SHIFTCR EQU B'00010000' ;ROTA EL CURSOR A LA DERECHA
PORTLCD EQU PORTD

ORG 0X00 ; VECTOR DE INICIO O RESET
GOTO CONFIGURACION


;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-TABLAS DE DATOS PARA LA SUBRUTINA BINBCD_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

TABLAU ;TABLA DE UNIDADES
MOVF POINTER,W
ADDWF PCL,F
RETLW D'2'
RETLW D'6'
RETLW D'8'
RETLW D'4'
RETLW D'2'
RETLW D'6'
RETLW D'8'
RETLW D'4'
RETLW D'2'
RETLW D'1'

TABLAD ;TABLA DE DECENAS
MOVF POINTER,W
ADDWF PCL,F
RETLW D'1'
RETLW D'5'
RETLW D'2'
RETLW D'6'
RETLW D'3'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'

TABLAC ;TABLA DE CENTENAS
MOVF POINTER,W
ADDWF PCL,F
RETLW D'5'
RETLW D'2'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'


CONFIGURACION



BANKSEL TRISA
CLRF TRISA
CLRF TRISB
CLRF TRISC
CLRF TRISD
CLRF TRISE

BANKSEL PORTB ;ELIMINO POSIBLES LATCH EN LOS PUERTOS
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE

CALL INIT_ADQUI ;LLAMO A LA SUBRUTINA DE INICIALIZACION DE EL MODULO ADC

CALL INITLCD ;;LLAMO A LA SUBRUTINA DE INICIALIZACION DE LA LCD


START



CALL D16X2 ;LLAMO A LA SUBRUTINA QUE ESCRIBE EL MENSAJE INICIAL

;CODIGO QUE HACE QUE SE EJECUTE EL COMANDO DE ROTACION A LA DERECHA X VECES

MOVLW .14
MOVWF SHIFT

VUELTA
CALL RETARDO
MOVLW SHIFTDR ;COMANDO DE ROTACION
CALL CMD

DECFSZ SHIFT,F
GOTO VUELTA

MOVLW LIMPIAR ;COMANDO DE LIMPIEZA DE PANTALLA
CALL CMD

OPERA

MOVLW RENGLON1 ;COMANDO PARA EMPEZAR A ESCRIBIR A PARTIR
CALL CMD ;DE LA PRIMERA DIRECCION DEL RENGLON1


CALL ADQUI ;SE LLAMA A LA SUBRUTINA DE ADQUISICION DE DATOS DEL ADC

CALL BINBCD ;LLAMO A LA SUBRUTINA QUE CONVIERTE DE BINARIO A ASCII




;****************************************

MOVF MILLARES,W
CALL DATO
MOVF CENTENAS,W
CALL DATO


MOVF DECENAS,W
CALL DATO

MOVF UNIDADES,W
CALL DATO

;****************************************
MOVLW ' '
CALL DATO

MOVLW 0XDF ;° (grados)
CALL DATO

MOVLW 'C'
CALL DATO


GOTO OPERA ;REGRESO AL INICIO DEL PROGRAMA PRINCIPAL

;**************************SUBRUTINA DE LOS MENSAJES **************************

D16X2

MOVLW "P"
CALL DATO
MOVLW "R"
CALL DATO
MOVLW "O"
CALL DATO
MOVLW "Y"
CALL DATO
MOVLW "E"
CALL DATO
MOVLW "C"
CALL DATO
MOVLW "T"
CALL DATO
MOVLW "O"
CALL DATO

MOVLW RENGLON2
CALL CMD

MOVLW "T"
CALL DATO
MOVLW "E"
CALL DATO
MOVLW "M"
CALL DATO
MOVLW "P"
CALL DATO
MOVLW "E"
CALL DATO
MOVLW "R"
CALL DATO
MOVLW "A"
CALL DATO
MOVLW "T"
CALL DATO
MOVLW "U"
CALL DATO
MOVLW "R"
CALL DATO
MOVLW "A"
CALL DATO

MOVLW " "
CALL DATO
MOVLW "A"
CALL DATO
MOVLW "/"
CALL DATO
MOVLW "D"
CALL DATO

RETURN



;**********************SUBRUTINA DE ADQUISICION DEL ADC**********************

ADQUI:

CALL SAMPLETIME ;RETARTO DE ADQUISICION
BSF ADCON0,GO ;INICIA LA CONVERSION
BTFSC ADCON0,GO ;YA SE TERMINO LA CONVERSION?
GOTO $-1 ;NO? PREGUNTA DE NUEVO
BANKSEL ADRESH ;SI, CONTINUA
MOVF ADRESH,W ;LEE LA PARTE MAS SIGNIFICATIVA
MOVWF DATOH ;GUARDALO EN DATOH
BANKSEL ADRESL ;CAMBIO A BANCO1
MOVF ADRESL,W ;LEE LA PARTE MENOS SIGNIFICATIVA
MOVWF DATOL ;GUARDALO EN DATOL
BANKSEL PORTB ;CAMBIO A BANCO0

BCF STATUS,C ;BORRA EL BIT DE ACARREO
RRF DATOH,F ;ELIMINO EL BIT MENOS SIGNIFICATIVO
RRF DATOL,F ;PARA OCUPAR SOLO 9 BITS SI QUIERO 8 BITS COPIO Y PEGO ESTOS 3 RENGLONES Y ASI SUCESIVAMENTE
;SI QUIERO 7 LO COPIO OTRA DOS VECES.

RETURN

SAMPLETIME:


MOVLW .225
MOVWF SAMPLE

ESPERA_S:

NOP
NOP
DECFSZ SAMPLE,F
GOTO ESPERA_S
RETURN



BINBCD

CLRF MILLARES
CLRF UNIDADES
CLRF DECENAS
CLRF CENTENAS
CLRF POINTER

OTRA

BTFSS DATOH,7
GOTO ROTA

CALL TABLAU
ADDWF UNIDADES,F

CALL TABLAD
ADDWF DECENAS,F

CALL TABLAC
ADDWF CENTENAS,F
;****************************************
MOVF UNIDADES,W
SUBLW D'10'
BTFSS STATUS,C
GOTO MAYOR
GOTO MENOR
MAYOR
INCF DECENAS,F
MOVLW D'10'
SUBWF UNIDADES,F
GOTO DECE

MENOR
MOVLW D'10'
SUBWF UNIDADES,W
BTFSS STATUS,Z
GOTO DECE
GOTO MAYOR
;****************************************
DECE
MOVF DECENAS,W
SUBLW D'10'
BTFSS STATUS,C
GOTO MAYORD
GOTO MENORD
MAYORD
INCF CENTENAS,F
MOVLW D'10'
SUBWF DECENAS,F
GOTO CENTE
MENORD
MOVLW D'10'
SUBWF DECENAS,W
BTFSS STATUS,Z
GOTO CENTE
GOTO MAYORD
;****************************************
CENTE
MOVF CENTENAS,W
SUBLW D'10'
BTFSS STATUS,C
GOTO MAYORC
GOTO MENORC
MAYORC
INCF MILLARES,F
MOVLW D'10'
SUBWF CENTENAS,F
GOTO MILLA
MENORC
MOVLW D'10'
SUBWF CENTENAS,W
BTFSS STATUS,Z
GOTO MILLA
GOTO MAYORC
;****************************************
MILLA
MOVF MILLARES,W
SUBLW D'10'
BTFSS STATUS,C
GOTO MAYORM
GOTO MENORM
MAYORM
MOVLW D'10'
SUBWF MILLARES,F
GOTO ROTA
MENORM
MOVLW D'10'
SUBWF MILLARES,W
BTFSS STATUS,Z
GOTO ROTA
GOTO MAYORM

;****************************************
ROTA
RLF DATOL,F
RLF DATOH,F
INCF POINTER,F
MOVF POINTER,W
SUBLW D'10'
BTFSS STATUS,Z
GOTO OTRA


MOVLW 0X30
ADDWF UNIDADES,F

MOVLW 0X30
ADDWF DECENAS,F

MOVLW 0X30
ADDWF CENTENAS,F

MOVLW 0X30
ADDWF MILLARES,F

RETURN



;**********************SUBRUTINA DE CONFIGURACION DEL ADC **********************
INIT_ADQUI:

BSF STATUS,RP0
BSF TRISA,0
CLRF ADCON1
BCF STATUS,RP0
MOVLW B'11000001'
MOVWF ADCON0
RETURN


INITLCD
MOVLW B'00110000';1
CALL DATOX
MOVLW B'00110000';2
CALL DATOX
MOVLW B'00110000';3
CALL DATOX

;DL=1 ->8 BITS;DL=0 ->4 BITS
;N=1 ->2 LINEAS N=0 ->1 LINEA
;F=1 ->5X11 F=0 ->5X8

MOVLW B'00100000';4
CALL DATOX

MOVLW B'00100000';5 Function set 0 0 1 DL N F X X
CALL DATOX
MOVLW B'10000000'
CALL DATOX

;D=1 ->DISPLAY-ON
;C=1 ->CURSOR-ON
;B=1 ->PARPADEO-ON
; 0 0 0 0 1 D C B

MOVLW B'00000000';6 Display control
CALL DATOX
MOVLW B'10000000'
CALL DATOX

MOVLW B'00000000';7
CALL DATOX
MOVLW B'11000000'
CALL DATOX

;CONFIGURACION DE ESCRITURA DECREMENTAL-INCREMENTAL
;I/D=1 ->INCREMENTAL AUTOMATICO
;SH=1 ->PARPADEA PANTALLA COMPLETA
; 0 0 0 0 0 1 I/D SH

MOVLW B'00000000';8 Cursor and display shift 0x06
CALL DATOX
MOVLW B'01100000'
CALL DATOX

MOVLW HOME
CALL CMD

MOVLW LIMPIAR
CALL CMD

RETURN


DATOX

MOVWF PORTLCDT

MOVF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP

MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W


MOVWF PORTLCD


BCF RS
NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
RETURN

DATO
BSF RS
MOVWF PORTLCDT

MOVF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP

MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD

NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
SWAPF PORTLCDT,W

ANDLW B'11110000'
MOVWF PORTLCDTEMP

MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD
NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
RETURN

CMD
BCF RS
MOVWF PORTLCDT

MOVF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP

MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W

MOVWF PORTLCD

NOP
NOP
NOP
NOP

BSF EN
CALL RETARDO5MS
BCF EN

SWAPF PORTLCDT,W

ANDLW B'11110000'
MOVWF PORTLCDTEMP

MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD
NOP
NOP
NOP
NOP

BSF EN
CALL RETARDO5MS
BCF EN
RETURN


RETARDO5MS
MOVLW D'1'
MOVWF NUM3

OTRA25 MOVLW D'100'
MOVWF NUM2

OTRA15 MOVLW D'166'
MOVWF NUM1
OTRA5 DECFSZ NUM1,F
GOTO OTRA5

DECFSZ NUM2,F
GOTO OTRA15

DECFSZ NUM3,F
GOTO OTRA25
RETURN

RETARDO ;retardo de recorrimiento de proyecto...
MOVLW .1
MOVWF NUM3

OTRA1 MOVLW .200
MOVWF NUM2

OTRAR MOVLW .166
MOVWF NUM1
DECFSZ NUM1,F
GOTO $-1
DECFSZ NUM2
GOTO OTRAR

DECFSZ NUM3
GOTO OTRA1
RETURN





END
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder