老男人成功应用国产温湿度数字探头DHT11成功晒下程序!感谢各位老大的教导!
功能:用Mega16读出温湿度数据显示到电脑上。电路图:略(因为和18B20的连接图完全一样也是单总线,呵呵)
程序:传上来了!
感想:略
全部工程文件, IAR5.4
DHT11.rar(文件大小:29K)
小女子成功应用国产温湿度数字探头DHT11成功秀下板子晒下程序!感谢各位老大的教导!
//DHT11.c
#include "CPU_Config.h"
#include "DHT11.h"
ucharDHT11T_Data_H, DHT11T_Data_L, DHT11RH_Data_H, DHT11RH_Data_L;
ucharDHT11_ReadChar(void)
{
uchar dat=0;
uint count; //计数防止死等
for(uchar i=0;i<8;i++)
{
count=2;
while((!READ_DHT11)&&count++) //等待50us低电平结束
;
delay_us(40); //40us
dat <<= 1; //50us低电平+28us高电平表示'0'
if(READ_DHT11) //50us低电平+70us高电平表示'1'
dat |= 1;
count=2;
while((READ_DHT11)&&count++)
;
if(count==1) //超时则跳出for循环
break;
}
return dat;
}
bool DHT11_GetRH(void)
{
uchar TData_H_temp,TData_L_temp,RHData_H_temp,RHData_L_temp,CheckData_temp;
uchar checktemp;
uint count;
SET_DDR_DHT11;
CLR_OP_DHT11;
delay_ms(18); //主机拉低18ms
SET_OP_DHT11;
CLR_DDR_DHT11;
delay_us(40); //总线由上拉电阻拉高 主机延时20us
//主机设为输入 判断从机响应信号
//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行
if(!READ_DHT11)
{
count=2;
//判断从机是否发出 80us 的低电平响应信号是否结束
while((!READ_DHT11)&&count++)
;
count=2;
//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
while((READ_DHT11)&&count++)
;
RHData_H_temp = DHT11_ReadChar();
RHData_L_temp = DHT11_ReadChar();
TData_H_temp = DHT11_ReadChar();
TData_L_temp = DHT11_ReadChar();
CheckData_temp = DHT11_ReadChar();
SET_DDR_DHT11;
SET_OP_DHT11;
checktemp = (RHData_H_temp + RHData_L_temp + TData_H_temp + TData_L_temp);
if (checktemp == CheckData_temp)
{
DHT11RH_Data_H = RHData_H_temp;
DHT11RH_Data_L = RHData_L_temp;
DHT11T_Data_H = TData_H_temp;
DHT11T_Data_L = TData_L_temp;
return true;
}
}
return false;
} 额,我失意了..倒塌 DHT11在哈口气后,湿度值会不会变成零值?我最近用了一下,发现了上述问题。 DHT11在哈口气后,湿度值会超出量程。我最近用了一下,发现了上述问题。比较郁闷!只能弃之不用!SHT11没有发现该情况。不知道你试过没有?我给奥松电子的技术支持打了电话,他支吾了半天说不出所以然,不过不错的是,他们寄给我两个样品,我明天再试试。 啊, 一样的情况, DHT21也是这情况. 除了这个,还有没有廉价的湿度测量解决方案?
好像湿敏器件是需要用交流来驱动的? mark 问个问题 我最近也用玩DHT11传感器,只是我觉得DHT11的输出应该是BCD码,那要它显示的话应该先把读出来的数据变成十进制才对啊,
可是为那样做完之后,发现原本23度的温度,显示只为17~18度了,,,请问只是为什么呢??难道DHT11的输出数据已经是十进制的了?? 回复【8楼】skay_mcu
-----------------------------------------------------------------------
就是十进制的!! 回复【9楼】danielmi
-----------------------------------------------------------------------
应该是16进制吧,可以直接用,因为我们接收数据的时候都是要判断0101的啊,十进制的话应该就不用判断了吧。。? 标记 我看到的资料是湿敏传感器是需要交流驱动 的 但是我用万用表 电阻挡测量时 哈气 阻值明显变化我怀疑 可以用测电阻的方法测量!!!正当 我准备试试的时候 那玩意 无意间 离奇的坏了 断成2节悲剧中 为啥我这边湿度一直在10 /21 之间跳动呢? mark 马克 太好了我喜欢 学习一下....
页:
[1]