am2301驱动程序
AM2301 是国产的温湿度传感器,想较瑞士的 SHT1X ,价格低廉,但性能有所降低,在对 性能 要求不是很高的情况下,可以考虑用该款温湿度传感器。 单片机对 AM2301 的操作非常简单,通过 AM2301 的数据手册,便可写出访问它的程 序,例程如下,期望能达到抛砖引玉的目的,以 AVR 系列的 Mega16 为例 一、头文件 /****************************************************************************** ***************** 文件am2301.h 作者wxxujian 用途温湿度传感器 AM2301(又名DHT21)的驱动程序 MCU AVR Mega16 晶振8MHz 编译器WinAVR2010 版本1.0(创建日期2010-7-27) 能正常显示湿度,仅能显示正温度 1.1(修改日期2010-7-28) 能正常显示湿度和温度(正、负温度均可) 日期2010-7-27 ******************************************************************************* ****************/ include 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 ////////////////////////////// 宏定义(结束) /////////////////////////////// ////////////////////////////// 函数声明 ////////////////////////////////////////////////// //说明共 2 个函数,分别是 // AM2301_CollectCharDataint *pvHumidity,int *pvTemperature // AM2301_CollectFloatDatafloat *pvHumidity,float *pvTemperature //详细内容如下 /******************************************************************************** 函数名AM2301_CollectCharDataint *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 include “common.h“ include “display.h“ ////////////////////////////// 宏定义(函数样式) /////////////////////////////////////////// //功能操作与 am2301 的数据位相连的单片机端口与相应位,包括输入、输出、置 1 和 清 0 //注意这些宏只供此文件使用 define SetDataBitOutput SetBitAM2301_DATA_DDR,AM2301_DATA_BIT define SetDataBit ClearBitAM2301_DATA_DDR,AM2301_DATA_BIT define SetDataBit SetBitAM2301_DATA_PORT,AM2301_DATA_BIT define ClearDataBit ClearBitAM2301_DATA_PORT,AM2301_DATA_BIT define TestDataBit TestBitAM2301_DATA_PIN,AM2301_DATA_BIT ////////////////////////////// 宏定义(结束) /////////////////////////////////////////// ////////////////////////////// 函数实现 //////////////////////////////////////////////////