Necesito usar urgentemente el microcontrolador stc12c5a60s2 para mostrar el programa del sensor de temperatura y humedad dht11. Los programas básicos de lectura y sincronización son suficientes.
sbit DHT11_1 = P2^4
void COM1()
{
U8 i; for(i=0;ilt;8;i)
{
U8FLAG=2
mientras((!DHT11_1)amp;amp;U8FLAG) ;
Retraso_10us();
Retraso_10us();
Retraso_10us()
U8temp=0; p> if(DHT11_1)U8temp=1;
U8FLAG=2;
mientras ((DHT11_1)amp; amp; U8FLAG
//Tiempo de espera Luego salga del bucle for
if(U8FLAG==1)break;
//Determine si el bit de datos es 0 o 1
// Si el nivel alto es alto Si excede el valor predeterminado de nivel alto 0, el bit de datos es 1
U8comdatalt;lt;=1;
U8comdata|=U8temp //0;
}/ /rof
}
//---------------------- ------------ -
//-----Subrutina de lectura de humedad------------
/ /--------- -----------------------
//----Las siguientes variables son todas las variables globales--------
//----Los 8 bits superiores de temperatura == U8T_data_H------
//-- --Los 8 bits más bajos de temperatura == U8T_data_L---- --
//----8 bits altos de humedad == U8RH_data_H-----
//----Baja 8 bits de humedad == U8RH_data_L--- --
//----Comprueba 8 dígitos == U8checkdata-----
//----Llama las subrutinas relevantes de la siguiente manera----- -----
//---- Delay();, Delay_10us();, COM(); /p>
//--------- -----------------------
void RH1( )
{
//El host baja durante 18 ms
DHT11_1=0;
Retraso(180); >
DHT11_1=1;
// El bus consta de La resistencia pull-up aumenta el retardo del host 20us
Delay_10us()
Delay_10us();
Delay_10us();
Delay_10us ();
//El host se configura como entrada para determinar la señal de respuesta del esclavo
DHT11_1=1;
// Juzga si el esclavo tiene una señal de respuesta de bajo nivel. Si no responde, saltará. Si responde, correrá hacia abajo.
if(!DHT11_1) / /T !
{
U8FLAG=2;
//Determina si el esclavo envía un 80us de baja frecuencia. señal de respuesta de nivel y si finaliza
while((!DHT11_1)amp;amp;U8FLAG);
U8FLAG=2;
//Determina si la el esclavo envía un nivel alto de 80us, si es así, ingrese el estado de recepción de datos
while((DHT11_1)amp; amp; U8FLAG);
//estado de recepción de datos
COM1();
U8RH_data_H_temp=U8comdata;
COM1();
U8RH_data_L_temp=U8comdata;
COM1() ;
U8T_data_H_temp=U8comdata;
COM1();
U8T_data_L_temp=U8comdata
COM1(); p> U8checkdata_temp=U8comdata
DHT11_1=1;
//Verificación de datos
U8temp=(U8T_data_H_temp U8T_data_L_temp U8RH_data_H_temp U8RH_data_L_temp);
if(U8temp==U8checkdata_temp)
{
U8RH_data_H=U8RH_data_H_temp;
U8RH_data_L=U8RH_data_L_temp;
U8T_data_H=U8T_data_H_temp;
U8T_data_L=U8T_data_L_temp;
U8checkdata=U8checkdata_temp;
}//fi
}//fi
}