hola compañeros me podrian pasar este proyecto lo necesito urgente se ve muy interesante por favor...... gracias....... soy nuevo en el foro..
Quizas esto te pueda ayudar Termostato (http://www.micropic.es/index.php?option=com_remository&Itemid=27&func=fileinfo&id=83)
Si no estas registrado no podras verlo.
Asi que dejo el codigo:Código: FreeBasic
'**************************************************************** '* Name : TERMO_ON/OFF.PBP * '* Author : Max Eduardo Reyes Vera Juarez * '* Notice : Copyright (c) 2006 Protegido Por leyes de Autor * '* : All Rights Reserved * '* Date : 04/10/2006 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** DEFINE LCD_DREG PORTD DEFINE LCD_DBIT 4 DEFINE LCD_EREG PORTC DEFINE LCD_EBIT 5 DEFINE LCD_RSREG PORTC DEFINE LCD_RSBIT 4 DEFINE ADC_CLOCK 3 DEFINE ADC_BITS 10 DEFINE ADC_SAMPLEUS 50 ADCON1 = 143 OPTION_REG.7 = 0 TRISA = 255 TRISB = 255 TRISC = 0 TRISD = 0 TERMO VAR PORTA.0 HTEMP VAR PORTB.0 LTEMP VAR PORTB.1 ENTER VAR PORTB.2 EXIT VAR PORTB.3 HEAT VAR PORTC.0 SENSOR VAR WORD MAXTEMP VAR WORD RANGO VAR WORD REF VAR WORD SL VAR WORD RL VAR BYTE TL VAR BYTE I VAR BYTE pause 500 high heat pause 500 low heat pause 1000 INICIO: MAXTEMP=0 RANGO=0 PORTC=0 LCDOUT$FE,1," INGRESE " LCDOUT$FE,$C0,"TEMPERATURA" GOSUB PAUSA GOTO INICIO PAUSA: FOR I=0 TO 20 IF HTEMP=0 OR LTEMP=0 THEN GOTO MAST ENDIF PAUSE 100 NEXT I RETURN MAST: IF EXIT=0 THEN BREAK IF LTEMP=0 THEN GOSUB MENOST ENDIF IF hTEMP=0 THEN PAUSE 130 IF HTEMP=0 THEN MAXTEMP=MAXTEMP+1 TL = MAXTEMP LCDOUT$FE,1,"TEMPERATURA DE:" LCDOUT$FE,$C0," ",DEC TL,"ßC" IF LTEMP=0 THEN MENOST ENDIF ENDIF IF MAXTEMP>=250 THEN MAXTEMp=0 ENDIF IF ENTER=0 THEN MAXTEMP=(MAXTEMP*2) GOSUB XRANGO ENDIF GOTO MAST MENOST: IF EXIT=0 THEN BREAK IF HTEMP=0THEN GOTO MAST ENDIF IF LTEMP=0 THEN PAUSE 130 IF LTEMP=0 THEN MAXTEMP = MAXTEMP - 1 TL = MAXTEMP LCDOUT$FE,1,"TEMPERATURA DE:" LCDOUT$FE,$C0," ",DEC TL,"ßC" IF HTEMP=0 THEN MAST ENDIF ENDIF IF MAXTEMP <=0 THEN MAXTEMP = 250 ENDIF IF ENTER=0 THEN MAXTEMP=(MAXTEMP*2) GOSUB XRANGO ENDIF GOTO MENOST XRANGO: LCDOUT$FE,1,"MARGEN DE ERROR?" GOSUB PAUS2 GOTO XRANGO RANGOTT: IF EXIT=0 THEN BREAK IF LTEMP=0 THEN GOTO RANGOTM ENDIF IF HTEMP=0 THEN PAUSE 130 IF HTEMP=0 THEN RANGO = RANGO+1 RL = RANGO LCDOUT$FE,1,"RANGO DE:" LCDOUT$FE,$C0,"+/- ",DEC RL,"ßC" IF LTEMP=0 THEN RANGOTM ENDIF ENDIF IF RANGO>255 THEN RANGO=0 ENDIF IF ENTER=0 THEN RANGO = (RANGO*2) GOTO CALIENTA ENDIF GOTO RANGOTT RANGOTM: IF EXIT=0 THEN BREAK IF HTEMP=0 THEN GOTO RANGOTT ENDIF IF LTEMP=0 THEN PAUSE 130 IF LTEMP=0 THEN RANGO = RANGO-1 RL = RANGO LCDOUT$FE,1,"RANGO DE:" LCDOUT$FE,$C0,"+/- ",DEC RL,"ßC" IF HTEMP=0 THEN RANGOTT ENDIF ENDIF IF RANGO<=0 THEN RANGO=255 ENDIF IF ENTER=0 THEN RANGO = (RANGO*2) GOTO CALIENTA ENDIF GOTO RANGOTM CALIENTA: HIGH HEAT GOSUB SENSA SL=(SENSOR/2) LCDOUT$FE,1,"CALENTANDO A:" LCDOUT$FE,$C0,DEC TL,"ßC ","+/- ",DEC RL,"ßC" PAUSE 1500 LCDOUT$FE,1,"TEMP DE: ", DEC SL, "ßC" pause 1500 IF SENSOR>(MAXTEMP+RANGO) THEN lcdout$fe,1 gOTO COOL ENDIF GOTO CALIENTA COOL: LOW HEAT GOSUB SENSA SL=(SENSOR/2) lcdout $fe,$c0, "...ENFRIANDO...." PAUSE 1500 LCDOUT$FE,1,"TEMP DE: ", DEC SL,"ßC" PAUSE 1500 IF SENSOR<=(MAXTEMP-RANGO) THEN GOTO CALIENTA ENDIF GOTO COOL SENSA: FOR i = 0 TO 50 ADCIN TERMO,SENSOR REF=REF+SENSOR IF EXIT=0 THEN BREAK PAUSE 10 NEXT I SENSOR =REF/50 REF=0 RETURN PAUS2: FOR I=0 TO 10 IF HTEMP=0 OR LTEMP=0 THEN GOTO RANGOTT ENDIF PAUSE 150 NEXT I RETURN BREAK: PORTC=0 MAXTEMP=0 RANGO=0 GOTO INICIO END
Si te sacas de onda con el simbolo de la Beta en el despliegue del LCD es porque asi consigo el simbolo de grados en mi lcd. Ese hace lo que quieres la conexion deberas sacarla conforme al programa. Espero te sirva.
Quizas esto te pueda ayudar Termostato (http://www.micropic.es/index.php?option=com_remository&Itemid=27&func=fileinfo&id=83)
Si no estas registrado no podras verlo.
Asi que dejo el codigo:Código: FreeBasic
'**************************************************************** '* Name : TERMO_ON/OFF.PBP * '* Author : Max Eduardo Reyes Vera Juarez * '* Notice : Copyright (c) 2006 Protegido Por leyes de Autor * '* : All Rights Reserved * '* Date : 04/10/2006 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** DEFINE LCD_DREG PORTD DEFINE LCD_DBIT 4 DEFINE LCD_EREG PORTC DEFINE LCD_EBIT 5 DEFINE LCD_RSREG PORTC DEFINE LCD_RSBIT 4 DEFINE ADC_CLOCK 3 DEFINE ADC_BITS 10 DEFINE ADC_SAMPLEUS 50 ADCON1 = 143 OPTION_REG.7 = 0 TRISA = 255 TRISB = 255 TRISC = 0 TRISD = 0 TERMO VAR PORTA.0 HTEMP VAR PORTB.0 LTEMP VAR PORTB.1 ENTER VAR PORTB.2 EXIT VAR PORTB.3 HEAT VAR PORTC.0 SENSOR VAR WORD MAXTEMP VAR WORD RANGO VAR WORD REF VAR WORD SL VAR WORD RL VAR BYTE TL VAR BYTE I VAR BYTE pause 500 high heat pause 500 low heat pause 1000 INICIO: MAXTEMP=0 RANGO=0 PORTC=0 LCDOUT$FE,1," INGRESE " LCDOUT$FE,$C0,"TEMPERATURA" GOSUB PAUSA GOTO INICIO PAUSA: FOR I=0 TO 20 IF HTEMP=0 OR LTEMP=0 THEN GOTO MAST ENDIF PAUSE 100 NEXT I RETURN MAST: IF EXIT=0 THEN BREAK IF LTEMP=0 THEN GOSUB MENOST ENDIF IF hTEMP=0 THEN PAUSE 130 IF HTEMP=0 THEN MAXTEMP=MAXTEMP+1 TL = MAXTEMP LCDOUT$FE,1,"TEMPERATURA DE:" LCDOUT$FE,$C0," ",DEC TL,"ßC" IF LTEMP=0 THEN MENOST ENDIF ENDIF IF MAXTEMP>=250 THEN MAXTEMp=0 ENDIF IF ENTER=0 THEN MAXTEMP=(MAXTEMP*2) GOSUB XRANGO ENDIF GOTO MAST MENOST: IF EXIT=0 THEN BREAK IF HTEMP=0THEN GOTO MAST ENDIF IF LTEMP=0 THEN PAUSE 130 IF LTEMP=0 THEN MAXTEMP = MAXTEMP - 1 TL = MAXTEMP LCDOUT$FE,1,"TEMPERATURA DE:" LCDOUT$FE,$C0," ",DEC TL,"ßC" IF HTEMP=0 THEN MAST ENDIF ENDIF IF MAXTEMP <=0 THEN MAXTEMP = 250 ENDIF IF ENTER=0 THEN MAXTEMP=(MAXTEMP*2) GOSUB XRANGO ENDIF GOTO MENOST XRANGO: LCDOUT$FE,1,"MARGEN DE ERROR?" GOSUB PAUS2 GOTO XRANGO RANGOTT: IF EXIT=0 THEN BREAK IF LTEMP=0 THEN GOTO RANGOTM ENDIF IF HTEMP=0 THEN PAUSE 130 IF HTEMP=0 THEN RANGO = RANGO+1 RL = RANGO LCDOUT$FE,1,"RANGO DE:" LCDOUT$FE,$C0,"+/- ",DEC RL,"ßC" IF LTEMP=0 THEN RANGOTM ENDIF ENDIF IF RANGO>255 THEN RANGO=0 ENDIF IF ENTER=0 THEN RANGO = (RANGO*2) GOTO CALIENTA ENDIF GOTO RANGOTT RANGOTM: IF EXIT=0 THEN BREAK IF HTEMP=0 THEN GOTO RANGOTT ENDIF IF LTEMP=0 THEN PAUSE 130 IF LTEMP=0 THEN RANGO = RANGO-1 RL = RANGO LCDOUT$FE,1,"RANGO DE:" LCDOUT$FE,$C0,"+/- ",DEC RL,"ßC" IF HTEMP=0 THEN RANGOTT ENDIF ENDIF IF RANGO<=0 THEN RANGO=255 ENDIF IF ENTER=0 THEN RANGO = (RANGO*2) GOTO CALIENTA ENDIF GOTO RANGOTM CALIENTA: HIGH HEAT GOSUB SENSA SL=(SENSOR/2) LCDOUT$FE,1,"CALENTANDO A:" LCDOUT$FE,$C0,DEC TL,"ßC ","+/- ",DEC RL,"ßC" PAUSE 1500 LCDOUT$FE,1,"TEMP DE: ", DEC SL, "ßC" pause 1500 IF SENSOR>(MAXTEMP+RANGO) THEN lcdout$fe,1 gOTO COOL ENDIF GOTO CALIENTA COOL: LOW HEAT GOSUB SENSA SL=(SENSOR/2) lcdout $fe,$c0, "...ENFRIANDO...." PAUSE 1500 LCDOUT$FE,1,"TEMP DE: ", DEC SL,"ßC" PAUSE 1500 IF SENSOR<=(MAXTEMP-RANGO) THEN GOTO CALIENTA ENDIF GOTO COOL SENSA: FOR i = 0 TO 50 ADCIN TERMO,SENSOR REF=REF+SENSOR IF EXIT=0 THEN BREAK PAUSE 10 NEXT I SENSOR =REF/50 REF=0 RETURN PAUS2: FOR I=0 TO 10 IF HTEMP=0 OR LTEMP=0 THEN GOTO RANGOTT ENDIF PAUSE 150 NEXT I RETURN BREAK: PORTC=0 MAXTEMP=0 RANGO=0 GOTO INICIO END
Si te sacas de onda con el simbolo de la Beta en el despliegue del LCD es porque asi consigo el simbolo de grados en mi lcd. Ese hace lo que quieres la conexion deberas sacarla conforme al programa. Espero te sirva.
hola amigo como te va? estuve analizando tu programa y bueno tiene un error si lo quere compilar en micocode, en donde colocas "EXIT", si lo cambias por "SALIR"se ejecuta bien, la otra cuestion es hacerte una consulta, utilizas algun amplificador comparador (por ej un LM358), para poder ingresar las variaciones de tensiones con el sensor de temperatura y una referencia (zener y resistencia) o como lo haces? que sensor de temperatura utilizas (LM35)? desde ya muchas gracias