DHT22数字温湿度传感器AM2302温湿度模块带说明书.docx
- 文档编号:602557
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:13
- 大小:248.02KB
DHT22数字温湿度传感器AM2302温湿度模块带说明书.docx
《DHT22数字温湿度传感器AM2302温湿度模块带说明书.docx》由会员分享,可在线阅读,更多相关《DHT22数字温湿度传感器AM2302温湿度模块带说明书.docx(13页珍藏版)》请在冰豆网上搜索。
DHT22数字温湿度传感器AM2302温湿度模块带说明书
AM2302温湿度传感器C程序〔测试可以用〕
2017-8-13
说明:
DHT22与DHT11程序根本一样,DHT11起始信号拉低18ms,DHT22起始信号拉低是800us,用户主机〔MCU〕发送一次起始信号〔把数据总线SDA拉低至少800µs〕后,AM2302从休眠模式转换到高速模式。
待主机开始信号完毕后,AM2302发送响应信号,从数据总线SDA串行送出40Bit 的数据,先发送字节的高位;发送的数据依次为湿度高位、湿度低位、温度高位、温度低位、校验位,发送数据完毕触发一次信息采集,采集完毕传感器自动转入休眠模式,直到下一次通信降临。
须知事项:
与DHT11一样,一次采集8个位数据,循环4次采集完成所有数据,40位采集完成后,校验数据,如果数据正确,将高8位左移8位与低8位相或,再保存到一个16位变量中,就可以得到一个整数值。
默认采集的数据是实际值的10倍,例如当前实际温度是32.7度,采集到的数据是327,目的是为了编程时方便别离数据。
〔详细见后面说明书〕
0000001010001100000000010101111111101110
湿度数据温度数据校验和
湿度高8位+湿度低8位+温度高8位+温度低8位=的末8位=校验和
如果需要处理零下值,16位的最高位为1表示负数,温度最大量程:
-20~80度,分辨率:
0.1度。
如果用数据码管显示且有中断,采集数据开始需要关中断,采集完毕开中断,否如此在采集数据过程中,中断会打断DHT22时序,造成采集数据不正确。
每次采集间隔大于1秒,否如此采集数据不准确。
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
#include
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--;
i--;
i--;
i--;
i--;
i--;
}
void(void)
{
U8i;
for(i=0;i<8;i++)
{
U8FLAG=2;
while((!
P2_0)&&U8FLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
U8temp=0;
if(P2_0)U8temp=1;
U8FLAG=2;
while((P2_0)&&U8FLAG++);
//超时如此跳出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;
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
//主机设为输入判断从机响应信号
P2_0=1;
//判断从机是否有低电平响应信号如不响应如此跳出,响应如此向下运行
if(!
P2_0)//T!
{
U8FLAG=2;
//判断从机是否发出80us的低电平响应信号是否完毕
while((!
P2_0)&&U8FLAG++);
U8FLAG=2;
//判断从机是否发出80us的高电平,如发出如此进入数据接收状态
while((P2_0)&&U8FLAG++);
//数据接收状态
();
U8RH_data_H_temp=U8data;
();
U8RH_data_L_temp=U8data;
();
U8T_data_H_temp=U8data;
();
U8T_data_L_temp=U8data;
();
U8checkdata_temp=U8data;
P2_0=1;
//数据校验
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
重复性
±
%RH
精度
25℃
±2
%RH
-20-80℃
±2
%RH
互换性
可完
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DHT22 数字 温湿度 传感器 AM2302 模块 说明书
![提示](https://static.bdocx.com/images/bang_tan.gif)