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