![]() |
發布時間: 2018-12-24 23:53
正文摘要:#include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char uchar code seg[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38}; sbit date=P3^7; sbit lcd_ ... |
HC6800-ES-V2.0 發表于 2018-12-25 08:28 能幫我看下我的是哪里出問題嗎 |
賣蘋果的喬布斯 發表于 2018-12-24 23:56 好像程序有問題,沒細看,給一個我一直用到的程序你試試。 單片機STC89C52RC ,晶振12M,P2.0口為通訊口連接DHT11 //----溫度高8位== U8T_data_H------ //----溫度低8位== U8T_data_L------ //----濕度高8位== U8RH_data_H----- //----濕度低8位== U8RH_data_L----- //----校驗 8位 == U8checkdata----- unsigned char U8FLAG; unsigned char U8temp; unsigned char U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata; unsigned char U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp; unsigned char U8comdata; void Delay(unsigned int j)//延時888.1725us { unsigned char i; for(;j>0;j--) { for(i=0;i<27;i++); } } void delay(void)//延時35.5us { unsigned char i=10; while(i--); } void Delay_10us(void) { unsigned char i; i--; i--; i--; i--; i--; i--; } void COM (void)//讀數據 { unsigned char i; for(i=0;i<8;i++) { U8FLAG=2; while((!P2_0)&&U8FLAG++); Delay_10us(); Delay_10us(); Delay_10us(); U8temp=0; if(P2_0)U8temp=1; U8FLAG=2; while((P2_0)&&U8FLAG++); if(U8FLAG==1)break; U8comdata<<=1; U8comdata|=U8temp; //0 }//rof } void RH (void) { P2_0=0; Delay(180); P2_0=1; Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); P2_0=1; if(!P2_0) //T ! { U8FLAG=2; while((!P2_0)&&U8FLAG++); U8FLAG=2; while((P2_0)&&U8FLAG++); COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; P2_0=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; U8checkdata=U8checkdata_temp; }//fi }//fi } |
不用的代碼已經被我注釋掉了 |