sbit DQ1= P3^7 ; //车å
æ¢å¤´
sbit DQ2= P1^1 ; //车å¤æ¢å¤´
sbit AC_CTRL = P2^2; //AC空è°æ§å¶ç«¯ã1为å¼å¯
/*------------------------------------------------
å®ä¹åº
------------------------------------------------*/
xdata signed int Memory_buf2[5]={0,0,0,0,0};//xdata å2åéè®°å¿å¼ï¼è½¦å¤æ¹¿åº¦ï¼è½¦å¤æ¸©åº¦ï¼è½¦å
湿度ï¼è½¦å
温度ï¼çµå
xdata signed int Memory_buf1[5]={0,0,0,0,0};//xdata å1åéè®°å¿å¼ï¼è½¦å¤æ¹¿åº¦ï¼è½¦å¤æ¸©åº¦ï¼è½¦å
湿度ï¼è½¦å
温度ï¼çµå
unsigned int U16RH_data1,U16T_data1, U16RH_data2,U16T_data2,Voltage;
bit Minus_Flag1,Minus_Flag2,TIMEshow; //å®ä¹æ¸©åº¦ç¬¦å·ä½ æ¶é´éªççï¼
/***************************************************************************
串è¡æ»çº¿ æ¶åä¿¡å·æ£æµï¼æ°æ®è¯»å 车å
æ¢å¤´
***************************************************************************/
unsigned char COM1(void)
{unsigned char i,U8temp,U8comdata,U8FLAG;
for(i=0;i<8;i++)
{
U8FLAG=2;
while((!DQ1)&&U8FLAG++);
delay40us();
U8temp=0;
if(DQ1)U8temp=1; //延æ¶40uså å¦æä»ä¸ºé«çµå¹³åæ°æ®ä¸º1 å¦å为0
U8FLAG=2;
while((DQ1)&&U8FLAG++);
if(U8FLAG==1)break;
U8comdata<<=1; U8comdata|=U8temp; //æ´åæ°æ®
}
return(U8comdata);
}
/*------------------------------------------------
读å温ã湿度 车å
æ¢å¤´
------------------------------------------------*/
void RH1(void)
{
unsigned char U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8temp,U8FLAG;
unsigned char U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
DQ1=0; delay100us(5); //主æºæä½æ»çº¿ è³å°500us
DQ1=1; delay40us(); //æ»çº¿ç±ä¸æçµé»æé« ä¸»æºå»¶æ¶20us-40us
if(!DQ1) //å¤æä»æºæ¯å¦æä½çµå¹³ååºä¿¡å· å¦ä¸ååºåè·³åºï¼ååºååä¸è¿è¡
{
U8FLAG=2;
while((!DQ1)&&U8FLAG++); //å¤æä»æºæ¯å¦ååº 80us çä½çµå¹³ååºä¿¡å·æ¯å¦ç»æ
U8FLAG=2;
while((DQ1)&&U8FLAG++); //å¤æä»æºæ¯å¦ååº 80us çé«çµå¹³ï¼å¦ååºåè¿å
¥æ°æ®æ¥æ¶ç¶æ
//æ°æ®æ¥æ¶ç¶æ
U8RH_data_H_temp=COM1(); //读湿度é«8ä½
U8RH_data_L_temp=COM1(); //读湿度ä½8ä½
U8T_data_H_temp =COM1(); //读温度é«8ä½
U8T_data_L_temp =COM1(); //读温度ä½8ä½
U8checkdata_temp=COM1(); //è¯»æ ¡éªæ°æ®
DQ1=1; //éæ¾æ»çº¿
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;
if(U8T_data_H&0x80) //å¦æ温度é«8ä½é¦ä½ä¸º1 å为è´æ¸©åº¦
{Minus_Flag1=1;U8T_data_H = U8T_data_H-0x80;}
else
{Minus_Flag1=0;U8T_data_H = U8T_data_H;}
U16RH_data1=(U8RH_data_H*256)|U8RH_data_L;
U16T_data1 = (U8T_data_H*256)|U8T_data_L;
}
}
}
}
è¿æ¯ææ£å¨ç¨çç¨åºçä¸é¨åï¼ç¨çæ¯1Tçåçæºï¼ç»ä½ åèä¸ä¸å§ãæ¶ä½æ¯12Mçï¼å«çå°æ¹ä½ åºæ¬å¯ä»¥ä¸æ¹ï¼ä¸»è¦æ³¨æ好延æ¶çæ¶é´ä¸å®è¦åç
§å¤æ³¨
追é®æè½è¯´ä¸æä¹ æ¯ç«ææåå¼å§å¦åçæº
追çå¯ä»¥ æä¹æ¯è¿æ¶åè¿æ¥çï¼ä½ çè¿DHT11ç说æææ¡£åï¼ç¼ç¨çä¾æ®æ¯ä»ï¼å¿
é¡»éµä»ãç»ä½ 2个ææ¡£åç
§å¦ä¹ ä¸ä¸ è¦ä»ç»ç