# define VENTILADOR PORTC.RC0 # define DESCARGA PORTC.RC1 # define CARGA PORTC.RC2 int y; sbit LCD_RS at RD0_bit; sbit LCD_EN at RD1_bit; sbit LCD_D4 at RD4_bit; sbit LCD_D5 at RD5_bit; sbit LCD_D6 at RD6_bit; sbit LCD_D7 at RD7_bit; sbit LCD_RS_Direction at TRISD0_bit; sbit LCD_EN_Direction at TRISD1_bit; sbit LCD_D4_Direction at TRISD4_bit; sbit LCD_D5_Direction at TRISD5_bit; sbit LCD_D6_Direction at TRISD6_bit; sbit LCD_D7_Direction at TRISD7_bit; ///////////////////////////////////////// char keypadPort at PORTB; char kp; int b=0; int tecla , tecla1 ; //////////////////////////////////////// //DHT11 DEFINITONS sbit DHT11_Pin at RA0_bit; sbit DHT11_DIR at TRISA0_bit; extern unsigned int DHT11_TMP; extern unsigned int DHT11_HUM; extern char DHT11_CHKSM; /////////////////////////// sbit DHT12_Pin at RA1_bit; sbit DHT12_DIR at TRISA1_bit; extern unsigned int DHT12_TMP2; extern unsigned int DHT12_HUM2; extern char DHT12_CHKSM2; ////////////////////////////// //END OF DHT11 DEFINITONS char txt[7]; char tyt[7]; int teclado () { kp = 0; // Reset key code variable // Wait for key to be pressed and released do { kp = Keypad_Key_Click(); // Store key code in kp variable }while (!kp); switch (kp) { case 1: kp = '1'; break; // 1 // Uncomment this block for keypad4x4 case 2: kp = '2'; break; // 2 case 3: kp = '3'; break; // 3 case 4: kp = 'A'; break; // A case 5: kp = '4'; break; // 4 case 6: kp = '5'; break; // 5 case 7: kp = '6'; break; // 6 case 8: kp = 'B'; break; // B case 9: kp = '7'; break; // 7 case 10: kp = '8'; break; // 8 case 11: kp = '9'; break; // 9 case 12: kp = 'C'; break; // C case 13: kp = '*'; break; // * case 14: kp = '0'; break; // 0 case 15: kp = 35; break; // # case 16: kp = 68; break; // D } return kp; } void menu_p (){ Lcd_cmd(1); Lcd_out(1,3,"MENU PRINCIPAL"); Lcd_out(2,1,"1.Interior 4.Carga " ); Lcd_out(3,1,"2.Exterior 5.Auto"); Lcd_out(4,1,"3.Descarga "); } void automovil (){ Lcd_cmd(1); Lcd_out(1,1,"MODO AUTOMATICO"); Lcd_out(2,1,"Iniciar proceso"); Lcd_out(3,1,"*.Regresar"); tecla= teclado() ; } void dht11(int x){ tecla1= teclado(); ///if(tecla1!='*'){ while( tecla1=='1'){ Dht11_Start(); DHT11_Read(); Dht12_Start(); DHT12_Read(); if(x==1){ if(DHT11_CHKSM==((DHT11_TMP>>8)+(DHT11_HUM>>8)+(DHT11_TMP&0xff)+(DHT11_HUM&0xff))) { inttostr(DHT11_TMP>>8,txt); lcd_out(1,14,txt ); inttostr(DHT11_HUM>>8,txt); lcd_out(2,13,txt ); y=txt; } } else{ if(DHT12_CHKSM2==((DHT12_TMP2>>8)+(DHT12_HUM2>>8)+(DHT12_TMP2&0xff)+(DHT12_HUM2&0xff))) { inttostr(DHT12_TMP2>>8,tyt); lcd_out(1,14,tyt ); inttostr(DHT12_HUM2>>8,tyt); lcd_out(2,13,tyt ); } } tecla1= teclado (); } } /* else{ menu_p (); tecla= teclado (); } } */ void interior (){ Lcd_cmd(1); Lcd_out(1,1,"Temp interior:"); Lcd_out(2,1,"Hum interior:RH") ; Lcd_out(1,20,"C"); Lcd_out(2,20,"%") ; Lcd_out(3,1,"*.Regresar") ; tecla= teclado() ; } void exterior () { Lcd_cmd(1) ; Lcd_out(1,1,"Temp exterior:"); Lcd_out(2,1,"Hum exterior:") ; Lcd_out(1,20,"C"); Lcd_out(2,20,"%"); Lcd_out(3,1, "*.Regresar" ); tecla= teclado() ; } void descarga(){ Lcd_cmd(1) ; Lcd_out(1,3,"MENU DESCARGA") ; Lcd_out(2,1, "1.Iniciar proceso"); Lcd_out(3,1, "2.Terminar proceso"); Lcd_out(4,1, "*.Regresar") ; tecla= teclado() ; } void carga(){ Lcd_cmd(1) ; Lcd_out(1,3,"MENU CARGA"); Lcd_out(2,1, "1.Iniciar proceso"); Lcd_out(3,1, "2.Terminar proceso"); Lcd_out(4,1, "*.Regresar") ; tecla= teclado() ; } void main() { ADCON1= 0X0F; TRISC= 0X00; DHT11_init(); DHT12_init(); Lcd_init(); Lcd_cmd(12); keypad_init() ; ////////////////////////////////////////////// //////////////////////////////////////////////// while(1){ menu_p () ; tecla= teclado (); switch(teclado()){ case '1': interior (); do{ tecla1 = teclado (); dht11 (1); }while(tecla1!= '*'); menu_p (); break; case '2': exterior(); do{ tecla1 = teclado (); dht11(2); }while(tecla1!= '*'); menu_p (); break; case '3': descarga(); do{ tecla1 = teclado (); switch(tecla1){ case '1' : CARGA =1; break; case '2' : CARGA =0 ; break ; } }while(tecla1!= '*'); menu_p (); break; case '4': carga (); do{ tecla1 = teclado (); switch(tecla1){ case '1' : DESCARGA=1; break; case '2' : DESCARGA=0; break; } }while(tecla1!= '*'); menu_p (); break; case'5': automovil (); do{ tecla1 = teclado (); switch(tecla1){ case '1' : for(b=0 ; b=2 ; b++){ VENTILADOR=1; delay_ms(2000); VENTILADOR=0; CARGA=0; if(VENTILADOR==0 && DESCARGA==0){ DESCARGA=1; delay_ms(2000); DESCARGA=0; } if(VENTILADOR==0 && DESCARGA==0){ CARGA=1; delay_ms(2000); CARGA=0; } break; } break; } }while(tecla1!= '*'); menu_p (); break; } } }