DHT22数字温湿度传感器AM2302温湿度模块带说明书Word下载.docx
《DHT22数字温湿度传感器AM2302温湿度模块带说明书Word下载.docx》由会员分享,可在线阅读,更多相关《DHT22数字温湿度传感器AM2302温湿度模块带说明书Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
C程序:
为了方便程序阅读,其它器件的初始化与定义都删除掉了,以下代码纯DHT22代码,使用时直接调用RH函数即可。
由于程序屡次修改,可能有多余的变量,大家自己清理下。
RH函数调用后,以下四个变量会得相应的数据:
R_H湿度高8位
R_L湿度低8位〔包含小数〕
T_H温度高8位
T_L湿度低8位〔包含小数〕
如果采集的数据是:
00000010100011000000000101011111
由上面四个变量是16位,采集数据是8位,分四次采完,8位放在16位里面应该是这样:
R_H=0000000000000010
R_L=0000000010001100
所以R_H左移8个位或上R_L才是我们要的数据。
R_H=R_H&
R_L
以上采集数据湿度为652,湿度为351,再除以10就是实际温湿度值。
#include<
reg52.h>
intrins.h>
typedefunsignedcharU8;
/*definedforunsigned8-bitsintegervariable无符号8位整型变量*/
typedefsignedcharS8;
/*definedforsigned8-bitsintegervariable有符号8位整型变量*/
typedefunsignedintU16;
/*definedforunsigned16-bitsintegervariable无符号16位整型变量*/
typedefsignedintS16;
/*definedforsigned16-bitsintegervariable有符号16位整型变量*/
typedefunsignedlongU32;
/*definedforunsigned32-bitsintegervariable无符号32位整型变量*/
typedefsignedlongS32;
/*definedforsigned32-bitsintegervariable有符号32位整型变量*/
typedeffloatF32;
/*singleprecisionfloatingpointvariable(32bits)单精度浮点数〔32位长度〕*/
typedefdoubleF64;
/*doubleprecisionfloatingpointvariable(64bits)双精度浮点数〔64位长度〕*/
//
#defineucharunsignedchar
#defineuintunsignedint
#defineData_0_time4
//----------------------------------------------//
//----------------IO口定义区--------------------//
sbitP2_0=P3^2;
//----------------定义区--------------------//
U8U8FLAG,k;
U8U8count,U8temp;
U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
U8U8data;
U8outdata[5];
//定义发送的字节数
U8indata[5];
U8count,count_r=0;
U8str[5]={"
RS232"
};
U16U16temp1,U16temp2;
U16R_H,R_L,T_H,T_L;
voidDelay(U16j)
{U8i;
for(;
j>
0;
j--)
{
for(i=0;
i<
27;
i++);
}
}
voidDelay_10us(void)
{
U8i;
i--;
void(void)
for(i=0;
8;
i++)
U8FLAG=2;
while((!
P2_0)&
&
U8FLAG++);
Delay_10us();
Delay_10us();
U8temp=0;
if(P2_0)U8temp=1;
while((P2_0)&
//超时如此跳出for循环
if(U8FLAG==1)break;
//判断数据位是0还是1
//如果高电平高过预定0高电平值如此数据位为1
U8data<
<
=1;
U8data|=U8temp;
//0
}//rof
//--------------------------------
//-----湿度读取子程序------------
//----以下变量均为全局变量--------
//----温度高8位==U8T_data_H------
//----温度低8位==U8T_data_L------
//----湿度高8位==U8RH_data_H-----
//----湿度低8位==U8RH_data_L-----
//----校验8位==U8checkdata-----
//----调用相关子程序如下----------
//----Delay();
Delay_10us();
();
voidRH(void)
{
//主机拉低18ms
P2_0=0;
Delay(18);
P2_0=1;
//总线由上拉电阻拉高主机延时20us
EA=0;
//主机设为输入判断从机响应信号
//判断从机是否有低电平响应信号如不响应如此跳出,响应如此向下运行
if(!
P2_0)//T!
//判断从机是否发出80us的低电平响应信号是否完毕
while((!
//判断从机是否发出80us的高电平,如发出如此进入数据接收状态
//数据接收状态
();
U8RH_data_H_temp=U8data;
U8RH_data_L_temp=U8data;
U8T_data_H_temp=U8data;
U8T_data_L_temp=U8data;
U8checkdata_temp=U8data;
//数据校验
U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
if(U8temp==U8checkdata_temp)
R_H=U8RH_data_H_temp;
R_L=U8RH_data_L_temp;
T_H=U8T_data_H_temp;
T_L=U8T_data_L_temp;
U8checkdata=U8checkdata_temp;
EA=1;
说明书:
数字温湿度传感器
AM2302
小体积AM2302
►相对湿度和温度测量
►全部校准,数字输出
►卓越的长期稳定性
►无需额外部件
►超长的信号传输距离
►超低能耗
►4引脚安装
►完全互换
AM2302产品概述
AM2302数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电容式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个AM2302传感器都在极为准确的湿度校验室中进展校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最优选如此。
产品为4针单排引脚封装。
连接方便,特殊封装形式可根据用户需求而提供。
应用领域
►暖通空调►测试与检测设备
►汽车►数据记录器
►消费品►自动控制
►气象站►家电
►湿度调节器►医疗
1、传感器性能说明
参数
条件
Min
Typ
Max
单位
湿度
分辨率
%RH
16
Bit
重复性
±
精度
25℃
2
-20-80℃
互换性
可完