关于51单片机的,求大神指导
已答辩完毕
温湿度测量与报警系统没有写过,不过红外遥控的程序倒是写过。
应该不是很难做,总体分成两部分吧,接收和发送。
给你个温湿度传感器的程序,其它的有很多教程的: DHT11驱动程序
/********************DHT11初始化及读取函数******************/
void COM(void)
{
U8 i;
for(i=0;i<8;i++)
{
U8FLAG=2;
while((!P2_6)&&U8FLAG++);
delay_10us();
delay_10us();
U8temp=0;
if(P2_6)U8temp=1;
U8FLAG=2;
while((P2_6)&&U8FLAG++);
if(U8FLAG==1)break;
U8comdata<<=1;
U8comdata|=U8temp;
}
}
void dht_recieve()
{
P2_6=0;
delay(180);
P2_6=1;
delay_10us();
delay_10us();//总线由上拉电阻拉高 主机延时20us
delay_10us();
delay_10us();
P2_6=1;//主机设为输入 判断从机响应信号
if(!P2_6) //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行
{
U8FLAG=2;
while((!P2_6)&&U8FLAG++);//判断从机是否发出 80us 的低电平响应信号是否结束
U8FLAG=2;
while((P2_6)&&U8FLAG++); //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
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_6=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;
}
}