当前位置: 首页 > article >正文

【STM32】AHT20温湿度模块

AHT20温度模块采用的是I2C硬件通信协议。本篇文章会根据时序图实现AHT20模块初始化,以及读取温湿度
AHT20温度模块对应电路图
在这里插入图片描述

得到设备地址,读地址的话设备地址为0x71,写的话为0x70
在这里插入图片描述

1.根据手册写aht20初始化代码

在这里插入图片描述

void aht20_init()
{    uint8_t readdata;
     uint8_t writedata[3]={0XBE,0X08,0X00};
	 HAL_Delay(40);

	 HAL_I2C_Master_Receive(&hi2c1,ReadAddress,&readdata,1,HAL_MAX_DELAY);
	 if((readdata&0X08)==0X00)
	 {
	   HAL_I2C_Master_Transmit(&hi2c1,WriteAddress,writedata,3,HAL_MAX_DELAY);


	 }

}

在这里插入图片描述

2.根据手册写读取温湿度函数

在这里插入图片描述

void aht20_read(float*tmp,float*hum)
{
	uint8_t data[3]={0XAC,0X33,0X00};
	uint8_t readdata[6];
	 HAL_I2C_Master_Transmit(&hi2c1,WriteAddress,data,3,HAL_MAX_DELAY);
	 HAL_Delay(75);
	 HAL_I2C_Master_Receive(&hi2c1,ReadAddress,readdata,6,HAL_MAX_DELAY);
     if((readdata[0]&0X80)==0X00)
     {
    	 uint32_t data;
    	 data=((uint32_t)readdata[3]>>4)+((uint32_t)readdata[2]<<4)+((uint32_t)readdata[1]<<12);
    	 *hum=data*100.0f/(1<<20);
    	 data=(((uint32_t)readdata[3]&0X0F)<<16)+((uint32_t)readdata[4]<<8)+(uint32_t)readdata[5];
    	 *tmp=(data*200.0f/(1<<20))-50;




     }







}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


main.c

  OLED_Init();
  aht20_init();
  char message[50]="";
  float tmp=0;
  float hum=0;

  while (1)
  {


	  OLED_NewFrame();
	  aht20_read(&tmp,&hum);
	  sprintf(message,"tmp:%.2f",tmp);
	  OLED_PrintString(10, 10, message,&font16x16, OLED_COLOR_NORMAL);
	  sprintf(message,"hum:%.2f",hum);
	  OLED_PrintString(10, 30, message,&font16x16, OLED_COLOR_NORMAL);

	  OLED_ShowFrame();
	  HAL_Delay(500);

  }

http://www.kler.cn/a/538559.html

相关文章:

  • 用Kibana实现Elasticsearch索引的增删改查:实战指南
  • Academy Sports + Outdoors EDI:体育零售巨头的供应链“中枢神经”
  • Oracle数据连接 Dblink
  • Ollama实现deepseek本地部署
  • 通过Demo案例的形式弄懂Java中的设计模式
  • 苍穹外卖-新增菜品(阿里云OSS文件上传mybatis主键返回批量保存口味表数据)
  • Ubuntu 多版本 gcc 配置常用命令备忘
  • 【Rust自学】20.4. 结语:Rust学习一阶段完成+附录
  • 调用 useState 之后发生了啥(⊙_⊙)?
  • windows蓝牙驱动开发-蓝牙无线电重置和恢复
  • cpp之模板
  • 安装和使用 Ollama(实验环境windows)
  • 2月7日QT
  • c/c++蓝桥杯经典编程题100道(16)链表反转
  • 面试经典150题——字典树
  • Deepseek本地部署指南:在linux服务器部署,在mac远程web-ui访问
  • 基于开源AI智能名片2+1链动模式S2B2C商城小程序的个人IP活动运营策略与影响力提升研究
  • LangChain + DeepSeek-R1:构建高效的语言模型服务
  • Qt+海康虚拟相机的调试
  • 调用Jenkins接口api的几个例子
  • 【R语言】数据重塑
  • 什么是ZooKeeper?
  • 前端开发中遇到的小问题以及解决方案记录3
  • 使用GD32F470的硬件SPI读写W25Q64
  • mysql 库建表数量有限制吗?
  • C语言时间相关宏定义