1、说明

AM2320 数字温湿度传感器采用单总线、标准 I²C 两种通信方式。本文主要基于HT66F2390单片机,采用单总线通讯,实现AM2320传感器数据获取。关于AM2320传感器的使用,可参考AM2320产品手册。在文章最后,分享了AM2320的相关资料,里面有我写的STM32的例程,大家可以参考一下。

2、AM2320单总线通讯


3、代码

下面是基于HT66F2390的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      _pd3void 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文件主要是结构体类型的重定义,方便后面调用。

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

#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();  //检测AM2320的响应
} void AM2320_Rst(void)
{                 GPIO_AM2320=0;   //输出模式PIN_AM2320=0;    //拉低delay_ms(20);       //拉低至少800usPIN_AM2320=1;   //拉高 GCC_DELAY(120);        //拉高20~40us
}u8 AM2320_Check(void)     //检查
{   u8 retry=0;AM2320_IO_IN();      //输入模式 while (PIN_AM2320&&retry<100)   //AM2320会拉低80us{retry++;GCC_DELAY(4);};     if(retry>=100) //超时未响应/未收到开始信号,退出检测{return 1;   }else retry=0;while (!PIN_AM2320&&retry<100) //AM2320拉低后会再次拉高80us{retry++;GCC_DELAY(4);};if(retry>=100){return 1;   //超时,AM2320工作出错,退出检测}return 0;  //设备正常响应,可以正常工作
}
/* 读1位 */
u8 AM2320_Read_Bit()
{u8 retry=0;while(PIN_AM2320&&retry<100)//等待变成低电平,开始数据接收准备{retry++;GCC_DELAY(4);}retry=0;while(!PIN_AM2320&&retry<100)//等待变成高电平,数据开始传输{retry++;GCC_DELAY(4);}GCC_DELAY(160);         //等待40us//0信号为26-28us,1信号则为70us,所以说超过40us去读取引脚状态就可以知道传输的值了if(PIN_AM2320){return 1;}else{return 0;}
}
/* 读8位 */
u8 AM2320_Read_Byte(void)
{        u8 i,dat;dat=0;for (i=0;i<8;i++) {dat<<=1; dat|=AM2320_Read_Bit();} return dat;
}/* 读温湿度 */
u8 AM2320_Read_Data(float *temperature,float *humidity)
{        u8 buf[5];   u8 i;u8 sum;*humidity=0;*temperature=0;AM2320_Rst();if(AM2320_Check()==0) //设备响应正常{for(i=0;i<5;i++)//读取40位数据{buf[i]=AM2320_Read_Byte();}AM2320_IO_OUT();   //输出模式PIN_AM2320=1;    //拉高 sum = buf[0]+buf[1]+buf[2]+buf[3];if(sum == buf[4])   //校验数据接收是否正确{*humidity=(float)buf[0]*25.6+(float)0.1*buf[1];   //湿度高8位*temperature=(float)buf[2]*25.6+(float)0.1*buf[3];   //温度高八位和低八位}}else {return 1;    //设备未成功响应,返回1}return 0;    //读取数据成功返回0
}

建议直接使用官方的GCC_DELAY()函数,自定义的延时函数会造成延时不准从而无法获取传感器数据。

4、资源分享

链接:https://pan.baidu.com/s/17HEFl1VQY7macNFTNDbYig
提取码:2320
本链接是AM2320的资料包,其中有PDF的传感器说明书,还有STM32、Arduino和51的开发例程。因为某些原因,合泰的开发例程没有放进去。如果本文对你有用,点赞收藏支持一下呗,蟹蟹大家啦。

HT66F2390/STM32——AM2320温湿度传感器相关推荐

  1. stm32+HTU21D温湿度传感器通过usart1发送温湿度数据在串口助手显示

    stm32+HTU21D温湿度传感器 这里就不拍实物图了,我用的是下面这款HTU21D ic是stm32f103vet6 工程代码是io口模拟i2c和传感器通讯 PB6-SCL,PB7-SDA usa ...

  2. STM32使用温湿度传感器

    前言 MDK5(Keil5)软件:uVision5 IDE 集成开发环境,是目前针对 ARM 处理器,尤其是 Cortex M 内核处理器的最佳开发工具. 本项目采用ARM结构中最为代表的Cortex ...

  3. 基于I2C协议利用STM32进行温湿度传感器的数据采集

    目录 一.I2C总线通信协议的介绍 1.I2C简介 2.I2C总线时序图 3.五种速率 4.四种信号 5.I2C的优缺点 6.软件IIC和硬件IIC 二.创建工程 1.实验目的 2.工具的选择 3.相 ...

  4. STM32 驱动温湿度传感器 HTU21D

    前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. github:my github 注:博客所涉及的关于 stm32 的代码 ...

  5. STM32驱动温湿度传感器HTU21D

    https://blog.csdn.net/wwt18811707971/article/details/80034047 1.简介 法国Humirel公司新一代HTU21D温度和湿度传感器在尺寸与智 ...

  6. STM32——DHT11温湿度传感器

    一.DHT11介绍 1.DHT11技术性能特征 工作电压范围:3.3V~5.5V 工作电流:平均0.5mA 输出:单总线数字信号 测量范围:湿度20~90%RH,温度0~50°C 精度:湿度±5%,温 ...

  7. 嵌入式 STM32 SHT31温湿度传感器

    目录 简介 1.原理图 2.时序说明 数据传输 起始信号 结束信号 3.SHT31读写数据 SHT31指令集 读数据 温湿度转换 4.温湿度转换应用 sht3x初始化 读取温湿度 简介 什么是SHT3 ...

  8. STM32读取SHT3x系列温湿度传感器,标准库和HAL库

    STM32读取SHT3x系列(SHT30.SHT31.SHT35)温湿度传感器的数据并显示在0.96寸OLED屏上. 我下面提供两份代码,一份是标准库使用硬件I2C的,另一份是HAL库使用软件模拟II ...

  9. STM32驱动 HTU21D温湿度传感器

    STM32驱动 HTU21D温湿度传感器 温湿度传感器模块HTU21D产品简介 基于法国Humirel公司高性能的湿度感应元件制成,新一代HTU21D温度和湿度传感器在尺寸与智能方面建立了新的标准:它 ...

最新文章

  1. IIS 的身份验证简要说明 - 摘录
  2. apache一个ip多个端口虚拟主机
  3. 渗透知识-SQL注入
  4. CSS3的background-size:可以设置高宽 百分比 最大大小 最小大小
  5. [机器学习] Boosting算法2 --- GBDT
  6. 华为nova4是不是鸿蒙系统,华为nova 4手机什么时候可以升级鸿蒙系统?鸿蒙系统nova4升级时间介绍...
  7. Sql Server 2016数据库生成带数据的脚本
  8. 初学者学习python2还是python3?
  9. BN和L2 NORM的区别
  10. 网络协议从入门到底层原理(3)网络互联模型、物理层、数据链路层(CSMA/CD协议、Ethernet V2帧、PPP协议)
  11. bzoj 1059: [ZJOI2007]矩阵游戏(二分匹配)
  12. likeshop单商户SAAS商城系统无限多开
  13. Xshell6复制粘贴快捷设置
  14. 计算机虚拟化技术论文,虚拟化技术在计算机技术中的运用
  15. 2015新款 MacBook 用心的测评与试用. 最轻薄的Mac上市
  16. SuperMap GIS BIM类型数据优化 QA
  17. html中label如何居中,怎么让label标签中的文字居中显示
  18. 1T和12T单片机的区别
  19. 部门年度工作与汇报总结ppt模板免费下载
  20. 计算机中有符号的机器数,机器数

热门文章

  1. Mini CFA 考试练习题 Economics of International Trade
  2. x86架构学习笔记实模式
  3. 完美解决丨 - [SyntaxError: invalid syntax](#SyntaxError-invalid-syntax)
  4. 某游戏公司测试工程师面试题
  5. 北漂IT男返乡创业,草根逆袭回忆录(下)
  6. 各大公司数据结构与算法面试题解答(一)
  7. 微信小程序开发——上课摇号系统的开发
  8. 【字体】写代码编程字体展示推荐
  9. 从西工大图书馆校外下载论文方法
  10. 【GHM (AAAI‘2019)】