am2301为国产的温湿度传感器,价格便宜,适合对精度要求不是很高的场合。
一、am2301数据手册
二、头文件
/***********************************************************************************************
文件:am2301.h
作者:wxxujian
用途:温湿度传感器AM2301(又名:DHT21)的驱动程序
MCU: AVR Mega16 晶振:8MHz
编译器:WinAVR2010
版本:1.0(创建日期:2010-7-27) 能正常显示湿度,仅能显示正温度
1.1(修改日期:2010-7-28) 能正常显示湿度和温度(正、负温度均可)
日期:2010-7-27
***********************************************************************************************/
#include <avr/io.h>
#ifndef AM2301_H
#define AM2301_H
////////////////////////////// 宏定义(须根据实际情况而修改) ///////////////////////////////
//功能:定义与AM2301的数据位相连的单片机的端口及数据位
//注意:这些宏须随着实际的硬件电路情况而修改
#define AM2301_DATA_DDR DDRD
#define AM2301_DATA_PORT PORTD
#define AM2301_DATA_PIN PIND
#define AM2301_DATA_BIT PD2
////////////////////////////// 宏定义(结束) ///////////////////////////////
////////////////////////////// 函数声明 //////////////////////////////////////////////////
//说明:共3个函数,分别是:
// AM2301_CollectIntData(int *pvHumidity,int *pvTemperature)
// AM2301_CollectCharData(int *pvHumidity,int *pvTemperature)
// AM2301_CollectFloatData(float *pvHumidity,float *pvTemperature)
//详细内容如下:
/********************************************************************************
函数名: AM2301_CollectIntData(int *pvHumidity,int *pvTemperature)
功 能: 获得数据(湿度、温度),获得的数据保存于形参所提供的指针所指向的变量中
返回值:
0:数据校验正确;
1:数据校验错误
2:获取数据错误
3: 等待响应信号错误
参 数:
pvHumidity: 湿度变量的指针,用于保存采集到的湿度,数据类型为:int,此数据未经任何处理
pvTemperature:温度变量的指针,用于保存采集到的温度,数据类型为:int,此数据未经任何处理
说 明: 建议执行此函数的间隔为2秒,绝不能小1秒。若间隔时间很长,建议采集2次,以2次为准
当发生错误,即返回值为1、2或3时,应间隔2秒后重新读取数据
注 意: 因为:WinAVR默认将char 视为unsigned char
所以:参数必须定义为signed char,-128<signed char<127,足以保存所得到的数据
原 理:详见AM2301的数据手册
*********************************************************************************/
unsigned char AM2301_CollectIntData(int *pvHumidity,int *pvTemperature)
/********************************************************************************
函数名:AM2301_CollectCharData(int *pvHumidity,int *pvTemperature)
功 能:获得数据(湿度、温度),获得的数据保存于形参所提供的指针所指向的变量中
返回值:
0:数据校验正确;
1:数据校验错误
2:获取数据错误
3: 等待响应信号错误
参 数:
pvHumidity: 湿度变量的指针,用于保存采集到的湿度,数据类型为:signed char,得到的数据仅为湿度的整数部分,小数部分自动舍弃
pvTemperature:温度变量的指针,用于保存采集到的温度,数据类型为:signed char,得到的数据仅为温度的整数部分,小数部分自动舍弃
说 明: 建议执行此函数的间隔为2秒,绝不能小1秒。若间隔时间很长,建议采集2次,以2次为准
当发生错误,即返回值为1、2或3时,应间隔2秒后重新读取数据
注 意: 因为:WinAVR默认将char 视为unsigned char
所以:参数必须定义为signed char,-128<signed char<127,足以保存所得到的数据
原 理:详见AM2301的数据手册
*********************************************************************************/
unsigned char AM2301_CollectCharData(signed char *pvHumidity,signed char *pvTemperature);
/********************************************************************************
函数名: AM2301_CollectFloatData(float *pvHumidity,float *pvTemperature)
功 能: 获得数据(湿度、温度),获得的数据保存于形参所提供的指针所指向的变量中
返回值:
0:数据校验正确;
1:数据校验错误
2:获取数据错误
3: 等待响应信号错误
参 数:
pvHumidity: 湿度变量的指针,用于保存采集到的湿度,数据类型为:float,得到的数据为完整的数据,但不要用此float数据去比较
pvTemperature:温度变量的指针,用于保存采集到的温度,数据类型为:float,得到的数据为完整的数据,但不要用此float数据去比较
说 明: 建议执行此函数的间隔为2秒,绝不能小1秒。若间隔时间很长,建议采集2次,以2次为准
当发生错误,即返回值为1、2或3时,应间隔2秒后重新读取数据
原 理:详见AM2301的数据手册
*********************************************************************************/
unsigned char AM2301_CollectFloatData(float *pvHumidity,float *pvTemperature);
////////////////////////////// 函数声明(结束) //////////////////////////////////////////////////
#endif