DHT11温湿度显示问题
时间:10-02
整理:3721RD
点击:
DHT11在12864上显示温湿度 求助大神下面这个驱动和显示程序的问题 一直显示不出来 只能显示00 刚开始学程序 真心求教,万分感谢
void RH(void)
{
uchar i,temp;
//主机拉低18ms
DHT=0;
Delay_t(180);
DHT=1;
//总线由上拉电阻拉高 主机延时20us
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
//主机设为输入 判断从机响应信号
DHT=1;
//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行
if(!DHT) //T !
{
FLAG=2;
//判断从机是否发出 80us 的低电平响应信号是否结束
while((!DHT)&&FLAG++);
FLAG=2;
//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
while((DHT)&&FLAG++); //数据接收状态
for(i=0;i<5;i++)
{
DATARHT[i]=COM();
}
DHT=1;
//数据校验
temp=(DATARHT[0]+DATARHT[1]+DATARHT[2]+DATARHT[3]);
if(temp==DATARHT[4])
{
RTflag=1;
}
if(RTflag==1)
{
RTflag=0;
tm[0]=DATARHT[0]/10;
tm[1]=DATARHT[0]%10;
tm[2]=DATARHT[1]/10; //湿度
tm[3]=DATARHT[2]/10;
tm[4]=DATARHT[2]%10;
tm[5]=DATARHT[3]/10; //温度
}
}
lcm_w_test(0,0x88);
lcm_w_test(1,0x30+tm[0]);
lcm_w_test(1,0x30+tm[1]);
}
void RH(void)
{
uchar i,temp;
//主机拉低18ms
DHT=0;
Delay_t(180);
DHT=1;
//总线由上拉电阻拉高 主机延时20us
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
//主机设为输入 判断从机响应信号
DHT=1;
//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行
if(!DHT) //T !
{
FLAG=2;
//判断从机是否发出 80us 的低电平响应信号是否结束
while((!DHT)&&FLAG++);
FLAG=2;
//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
while((DHT)&&FLAG++); //数据接收状态
for(i=0;i<5;i++)
{
DATARHT[i]=COM();
}
DHT=1;
//数据校验
temp=(DATARHT[0]+DATARHT[1]+DATARHT[2]+DATARHT[3]);
if(temp==DATARHT[4])
{
RTflag=1;
}
if(RTflag==1)
{
RTflag=0;
tm[0]=DATARHT[0]/10;
tm[1]=DATARHT[0]%10;
tm[2]=DATARHT[1]/10; //湿度
tm[3]=DATARHT[2]/10;
tm[4]=DATARHT[2]%10;
tm[5]=DATARHT[3]/10; //温度
}
}
lcm_w_test(0,0x88);
lcm_w_test(1,0x30+tm[0]);
lcm_w_test(1,0x30+tm[1]);
}
LZ 得把 单片机型号贴出来, 还有 晶振。 还有Delay_t() 、Delay_10us() 函数
这个应该是 时序的问题。