typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量 */
#define uchar unsigned char
#define uint unsigned int
//----------------------------------------------//
//----------------IO口定义区--------------------//
//----------------------------------------------//
sbit dht21data = P2^2 ;
sbit beep=P2^3;
sbit lightTemp= P1^6;
sbit lightHumi= P1^7;
int x=23;
int y=50;
sbit b=P1^0;
sbit a=P1^1;
#define LIGHTON 0
#define LIGHTOFF 1
//----------------------------------------------//
//----------------定义区--------------------//
//----------------------------------------------//
U8 U8FLAG,k;
U8 U8count,U8temp;
U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp, U8checkdata_temp;
U8 U8comdata;
U8 str[9]={"RS232"};//初设没用
U16 U16temp1,U16temp2;
SendData(U8 *a,U8 n)
{
U8 i;
for(i=0;i<n;i++)
{
SBUF=a[i];
while(!TI);
TI = 0;
}
}
void Delaydht(U16 j)
{ U8 i;
for(;j>0;j--)
{
for(i=0;i<27;i++);
}
}
void Delaydht_10us(void)
{
U8 i;
i--;
i--;
i--;
i--;
i--;
i--;
}
void COM(void)
{
U8 i;
for(i=0;i<8;i++)
{
U8FLAG=2;
while((!dht21data)&&U8FLAG++);
Delaydht_10us();
Delaydht_10us();
Delaydht_10us();
U8temp=0;
if(dht21data)U8temp=1;
U8FLAG=2;
while((dht21data)&&U8FLAG++);
//超时则跳出for循环
if(U8FLAG==1)break;
//判断数据位是0还是1
// 如果高电平高过预定0高电平值则数据位为 1
U8comdata<<=1;
U8comdata|=U8temp; //0
}//rof
}
//--------------------------------
//-----湿度读取子程序 ------------
//--------------------------------
//----以下变量均为全局变量--------
//----温度高8位== U8T_data_H------
//----温度低8位== U8T_data_L------
//----湿度高8位== U8RH_data_H-----
//----湿度低8位== U8RH_data_L-----
//----校验 8位 == U8checkdata-----
//----调用相关子程序如下----------
//---- Delay();, Delay_10us();,COM();
//--------------------------------
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>