DHT11对时钟要求特别高,以下两个程序
前者时钟是22.1184MHz;
后者是11.0592MHz,请注意区分...
//****************************************************************//
// DHT11使用范例
//单片机 : AT89S52 或 STC89C52RC
// 功能 :串口发送温湿度数据 晶振 22.1184M
//****************************************************************//
#include <reg52.h>
//----------------------------------------------//
//----------------IO口定义区--------------------//
//----------------------------------------------//
sbit P2_0 = P2^0 ;
//----------------------------------------------//
//----------------定义区--------------------//
//----------------------------------------------//
unsigned char U8FLAG=0,U8temp=0;
unsigned char U8T_data_H=0,U8T_data_L=0,U8RH_data_H=0,U8RH_data_L=0,U8checkdata=0;
unsigned char str[5];
void Delay2(unsigned int j)
{ unsigned int i;
for(;j>0;j--)
{
for(i=0;i<150;i++);
}
}
void Delay_10us(void)
{
unsigned i;
for(i=16;i>0;i--) ;
}
unsigned char COM(void)
{
unsigned char i,U8comdata ;
for(i=0;i<8;i++)
{
U8FLAG=2;
while((!P2_0)&&U8FLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
U8temp=0;