HT66F2390单片机与AM2320温湿度传感器单总线通讯
AM2320 数字温湿度传感器是一款含有己校准数字信号输出的温湿度复合型传感器,采取单总线、尺度 I²C 两种通讯方式。
本文基于HT66F2390单片机,采取单总线通讯,实现AM2320传感器数据获取,关于AM2320传感器的利用,可参考AM2320产品手册。
AM2320资料链接:https://pan.baidu.com/s/1B5c9MSYykXByCMxZVks2vg
提取码:2320
下面是AM2320传感器相应开发代码:
AM2320.h
- #ifndef __AM2320_H
- #define __AM2320_H
- #include "HT66F2390.h"
- //#include "sys.h"
- #include "Type.h"
- #define GPIO_AM2320 _pdc3
- #define PIN_AM2320 _pd3
- void AM2320_IO_OUT(void);
- void AM2320_IO_IN(void);
- void AM2320_DQ_OUT(u8 i);
- u8 AM2320_DQ_IN(void);
- u8 AM2320_Init(void);
- void AM2320_Rst(void);
- u8 AM2320_Check(void);
- u8 AM2320_Read_Bit(void);
- u8 AM2320_Read_Byte(void);
- u8 AM2320_Read_Data(float *temperature,float *humidity);
- #endif
复制代码
sys.h文件为系统时钟设置头文件,没用到可以不调用。
Type.h
- typedef unsigned char u8;
- typedef char s8;
- typedef unsigned short u16;
- typedef short s16;
- typedef unsigned long u32;
- typedef long s32;
复制代码
AM2320.c
[code]#include"AM2320.h"/* 输出模式 */void AM2320_IO_OUT(void) { GPIO_AM2320=0;}/* 输入模式 */void AM2320_IO_IN(void) { GPIO_AM2320=1; _pgpu1=1; //上拉使能}/* AM2320初始化 */u8 AM2320_Init(void) { GPIO_AM2320=0; //输入模式 PIN_AM2320=1; //输出 AM2320_Rst(); return AM2320_Check();} void AM2320_Rst(void) { GPIO_AM2320=0; //输出模式 PIN_AM2320=0; //拉低 delay_ms(20); //拉低至少18ms PIN_AM2320=1; //拉高 GCC_DELAY(120); //Pull up 20~40us}u8 AM2320_Check(void) //检查{ u8 retry=0; AM2320_IO_IN(); //输入模式 while (PIN_AM2320&&retry=100) { return 1; } else retry=0; while (!PIN_AM2320&&retry=100) { return 1; //chack error } return 0;}/* 读1位 */u8 AM2320_Read_Bit() { u8 retry=0; while(PIN_AM2320&&retry |