AHT20采集温湿度



一、硬件llC与软件llC


硬件llC
硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C;一般也较为稳定,但是程序较为繁琐。
软件llC
一般是使用GPIO管脚,用软件控制SCL,SDA线输出高低电平,模拟i2c协议的时序。
两者的区别
根据代码量判断,模拟的代码量肯定比固件的要大。

  1. 硬件IIC用法比较复杂,模拟IIC的流程更清楚一些。
  2. 硬件IIC速度比模拟快,并且可以用DMA
  3. 模拟IIC可以在任何管脚上,而硬件只能在固定管脚上。
    软件i2c是程序员使用程序控制SCL,SDA线输出高低电平,模拟i2c协议的时序。一般较硬件i2c稳定,但是程序较为繁琐,但不难。
    硬件i2c程序员只要调用i2c的控制函数即可,不用直接的去控制SCL,SDA高低电平的输出。但是有些单片机的硬件i2c不太稳定,调试问题较多。

详细可以看:硬件I2C与模拟I2C
硬件II2C和软件I2C有什么区别


二、使用AHT20采集温湿度

1.相关代码写入

工程我是用了野火资源里的裸机工程
在这里插入图片描述
打开工程如图:
在这里插入图片描述
我们需要进行修改添加等
这里我们去AHT32采集温湿度下载相关代码
在这里插入图片描述
添加相关的文件
在这里插入图片描述
添加路径
在这里插入图片描述
修改main.c文件如下:

#include "delay.h"
#include "temhum.h"
#include "sys.h"
#include "usart.h"

 int main(void)
 {
    
    	 	
    u32 CT_data[2]={
    
    0};
    volatile float  hum=0,tem=0;     
     
    delay_init();	    	 	  
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 
    uart_init(115200);	   

    temphum_init();                        
	while(1)
	{
    
    
        AHT20_Read_CTdata(CT_data);       

        hum = CT_data[0]*100*10/1024/1024;  
        tem = CT_data[1]*200*10/1024/1024-500;

        printf("湿度:%.1f%%\r\n",(hum/10));
        printf("温度:%.1f度\r\n",(tem/10));
        printf("\r\n");
        delay_ms(1000);   
        delay_ms(1000);
	 }
}

2.采集温湿度

运行生成HEX文件
在这里插入图片描述
烧录
在这里插入图片描述
进行调试(进行哈气看温湿度是否跟着进行改变):
在这里插入图片描述
可以看见温湿度跟着变化


猜你喜欢

转载自blog.csdn.net/aiwr_/article/details/111479815