Documente Academic
Documente Profesional
Documente Cultură
//variables necesarias
unsigned char T_U_1=0,T_D_1=0,H_U_1=0,H_D_1=0;
unsigned char REVISION_1;
unsigned char BYTE_T2_1,BYTE_T1_1,BYTE_H2_1,BYTE_H1_1,CHECK_1;
unsigned sum_1;
}
}
return i_1;
}
////////////////////////////////////////////////////////////////////////////////
//Funcion de inicio del DHT11_2
void PEDIDO_MCU_2()
{
DHT11_CONFIG_2=0; //Configuro como salida el pin RC0
DHT11_DATO_2=0; //Mando un cero al DTH11
delay_ms(18); //Esperamos 18 ms para el cambio
DHT11_DATO_2=1; //Cambiamos a estado logico alto
delay_us(30); //Esperamos 30 us en respuesta al DHT11
DHT11_CONFIG_2=1; //Configuro como entrada el pin RC0
}
void RESPUESTA_DHT11_2()
{
REVISION_2=0;
delay_us(40);
if(DHT11_DATO_2==0)
{
delay_us(80);
if(DHT11_DATO_2==1)
{
REVISION_2=1;
}
delay_us(40);
}
}
char lectura_DHT11_2()
{
char i_2,j_2;
for (j_2=0;j_2<8;j_2++)
{
while(!DHT11_DATO_2);
delay_us(30);
if(DHT11_DATO_2==0)
{
i_2&=~(1<<(7-j_2));
}
else
{
i_2|=(1<<(7-j_2));
while(DHT11_DATO_2);
}
}
return i_2;
}
void main()
{ //INICIALIZANDO DHT11_UART_VETILADORES
TRISC.B0=0;
PORTC.B0=0;
TRISC.B1=0;
PORTC.B1=0;
TRISC.B2=0;
PORTC.B2=0;
Lcd_Init(); //Inicio del LCD.
Lcd_Cmd(_LCD_CLEAR); //Limpia el LCD.
Lcd_Cmd(_LCD_CURSOR_OFF); //Se apaga el cursor.
Lcd_out(1,1,"T1=");
Lcd_out(1,6,"oC");
Lcd_out(2,1,"H1=");
Lcd_out(2,6,"%");
Lcd_out(1,10,"T2=");
Lcd_out(1,15,"oC");
Lcd_out(2,11,"H2=");
Lcd_out(2,16,"%");
UART1_Init(9600); //Inicio del m�dulo USART.
UART1_Write_Text("Bienvenido al simulador:");
UART1_Write(13);
UART1_Write(10);
while(1) //Bucle infinito.
{
PEDIDO_MCU_1();
RESPUESTA_DHT11_1();
if(REVISION_1==1)
{
BYTE_H2_1=lectura_DHT11_1();
BYTE_H1_1=lectura_DHT11_1();
BYTE_T2_1=lectura_DHT11_1();
BYTE_T1_1=lectura_DHT11_1();
CHECK_1=lectura_DHT11_1();
delay_us(50);
sum_1=BYTE_T2_1+BYTE_T1_1+BYTE_H2_1+BYTE_H1_1;
if(CHECK_1==(sum_1&0xFF))
{
T_D_1=BYTE_T2_1/10;
T_U_1=BYTE_T2_1%10;
H_D_1=BYTE_H2_1/10;
H_U_1=BYTE_H2_1%10;
T_D_1=T_D_1+0x30;
T_U_1=T_U_1+0x30;
H_D_1=H_D_1+0x30;
H_U_1=H_U_1+0x30;
Lcd_Chr(1,4, T_D_1);
Lcd_Chr(1,5, T_U_1);
Lcd_Chr(2,4, H_D_1);
Lcd_Chr(2,5, H_U_1);
if(UART1_Tx_Idle()==1)
{
UART1_Write_Text("Temp1=");
UART1_Write(T_D_1);
UART1_Write(T_U_1);
UART1_Write(248); //�
UART1_Write_Text("C");
UART1_Write(32); //ESPACIO
UART1_Write_Text("Hume1=");
UART1_Write(H_D_1);
UART1_Write(H_U_1);
UART1_Write(37); //%
UART1_Write(32); //ESPACIO
UART1_Write(32); //ESPACIO
}
}
}
PEDIDO_MCU_2();
RESPUESTA_DHT11_2();
if(REVISION_2==1)
{
BYTE_H2_2=lectura_DHT11_2();
BYTE_H1_2=lectura_DHT11_2();
BYTE_T2_2=lectura_DHT11_2();
BYTE_T1_2=lectura_DHT11_2();
CHECK_2=lectura_DHT11_2();
delay_us(50);
sum_2=BYTE_T2_2+BYTE_T1_2+BYTE_H2_2+BYTE_H1_2;
if(CHECK_2==(sum_2&0xFF))
{
T_D_2=BYTE_T2_2/10;
T_U_2=BYTE_T2_2%10;
H_D_2=BYTE_H2_2/10;
H_U_2=BYTE_H2_2%10;
T_D_2=T_D_2+0x30;
T_U_2=T_U_2+0x30;
H_D_2=H_D_2+0x30;
H_U_2=H_U_2+0x30;
Lcd_Chr(1,13, T_D_2);
Lcd_Chr(1,14, T_U_2);
Lcd_Chr(2,14, H_D_2);
Lcd_Chr(2,15, H_U_2);
if(UART1_Tx_Idle()==1)
{
UART1_Write_Text("Temp2=");
UART1_Write(T_D_2);
UART1_Write(T_U_2);
UART1_Write(248); //�
UART1_Write_Text("C");
UART1_Write(32); //ESPACIO
UART1_Write_Text("Hume2=");
UART1_Write(H_D_2);
UART1_Write(H_U_2);
UART1_Write(37); //%
UART1_Write(13); //INICIO
UART1_Write(10); //NUEVA LINEA
}
}
}
dif=BYTE_T2_2-BYTE_T2_1;
dif_1=BYTE_H2_1-BYTE_H2_2;
if(dif<=2) //PREGUNTA SI LA TEMPERATURA ESTABLE
{
PORTC.B0=0; //APAGA VENTILADOR 1
PORTC.B1=0; //APAGA VENTILADOR 2
if(dif_1<=10) //PREGUNTA SI LA HUMEDAD ES ESTABLE
{
if(BYTE_H2_1<=26) //PREGUNTA SI LA HUMEDAD ES ESTABLE
{
PORTC.B2=1; //ENCIENDE LED DE AVISO
}
}
else
PORTC.B2=0; //APAGA LED DE AVISO
}
else
{
PORTC.B0=1;
PORTC.B1=1;
if(dif_1<=10) //PREGUNTA SI LA HUMEDAD ES ESTABLE
{
if(BYTE_H2_1<22) //PREGUNTA SI LA HUMEDAD ES MENOR QUE 22%
{
PORTC.B2=1;
PORTC.B0=0;
PORTC.B1=0;
}
}
else
PORTC.B2=0;
}
}
}