• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-07-01
  • 语言: 其他
  • 标签: AHT10  

资源简介

AHT10温湿度驱动程序。STM32正点原子模拟IIC驱动,可以参考逻辑使用,头文件未上传,,,,,

资源截图

代码片段和文件信息

#include “aht10.h“
#include “myiic.h“
#include “timer.h“
#include “delay.h“
#include “usart.h“
u8 READstatus;
static u16 AHT10DelayCount;
float TempOldfRH;
u8 AHTstatus;
u32 RHdata;
u32 TEMPdata;
uint64_t REVdata;
u16 TIMcount;
/*************************
函数名:AHT10Init()
函数说明:AHT10传感器初始化程序
输入:无
输出:
其他:
*************************/
void AHT10Init()
{
u8 Initcount;
Initcount=0x0;
IIC_Init();
delay_ms(200);
IIC_Start();
IIC_Send_Byte(0x70); //写
IIC_Wait_Ack();
IIC_Send_Byte(0xe1); //写系统配置寄存器,初始化命令:0xe1
IIC_Wait_Ack();
IIC_Send_Byte(0x08);
IIC_Wait_Ack();
IIC_Send_Byte(0x00);
IIC_Wait_Ack();
IIC_Stop();
delay_ms(500);
while( (ReadAHT10_Statue()&0x68)!=0x08 ) // 设备闲,NOR模式,已校准,跳出循环
{
AHT10SofeReset();
delay_ms(500);

IIC_Start();
IIC_Send_Byte(0x70); //写
IIC_Wait_Ack();
IIC_Send_Byte(0xe1); //写系统配置寄存器,初始化命令:0xe1
IIC_Wait_Ack();
IIC_Send_Byte(0x08);
IIC_Wait_Ack();
IIC_Send_Byte(0x00);
IIC_Wait_Ack();
IIC_Stop();
delay_ms(500);
Initcount++;
if(Initcount>5) break;
}

AHTstatus=0x0;
REVdata=0x0;
}
/*************************
函数名:u8 ReadAHT10_Statue()
函数说明:AHT10传感器状态寄存器读取
输入:无
输出:AHT10状态寄存器
其他:
*************************/
u8 ReadAHT10_Statue()
{
u8 AHT10Status;
IIC_Start();
IIC_Send_Byte((0x38<<1)+1);  //读
IIC_Wait_Ack();
AHT10Status=IIC_Read_Byte(0); 
IIC_Stop();
return AHT10Status;
}

/*************************
函数名:AHT10_Star_measure()
函数说明:AHT10传感器启动测量命令
输入:无
输出:
其他:
*************************/
u8 AHT10_Star_measure()
{
IIC_Start();
IIC_Send_Byte(0x70); //写
IIC_Wait_Ack();
// if(IIC_Wait_Ack()==0x01) {IIC_Stop(); return 0; }
IIC_Send_Byte(0xac); //发触发指令
IIC_Wait_Ack();
// if(IIC_Wait_Ack()==0x01) {IIC_Stop(); return 0; }
IIC_Send_Byte(0x33);  //以下是发送触发测量的固定指令0x33
IIC_Wait_Ack();
// if(IIC_Wait_Ack()==0x01) {IIC_Stop(); return 0; } //发送完0X33后,传感器无应答?????
IIC_Send_Byte(0x00);
IIC_Wait_Ack();
IIC_Stop();
return 1;

}
/*************************
函数名:Temp_RH_Read()
函数说明:接收AHT10传感器温湿度数据
输入:
输出:传感器数据
其他:
*************************/
void Temp_RH_Read()
{
IIC_Start();
IIC_Send_Byte(0x71); //0x70地址+1读
if(IIC_Wait_Ack()==0x01) {IIC_Stop(); return ; }
AHTstatus=IIC_Read_Byte(1); //读状态寄存器
//---------receive 5byte data
REVdata=0x0;
REVdata|=IIC_Read_Byte(1);  //1
REVdata<<=8;
REVdata|=IIC_Read_Byte(1); //2
REVdata<<=8;
REVdata|=IIC_Read_Byte(1); //3
REVdata<<=8;
REVdata|=IIC_Read_Byte(1); //4
REVdata<<=8;
REVdata|=IIC_Read_Byte(0); //5
IIC_Stop();
RHdata=REVdata>>20;
TEMPdata=REVdata&0xfffff; //Bit0~Bit20是温度数据
}

/*************************
函数名:ADT10_Calulate()
函数说明:计算AHT10传感器数据,得到温度与湿度
输入:
返回:温度值,单位摄氏度
其他:
*************************/
float ADT10_Calulate()
{
u8 u8cnt;
float ftemp;
u16 Now_TIMcount;

if(READstatus==0x0) 
{
while((ReadAHT10_Statue()&0x80)==0x80) 
{
AHT10Init(); //出现错误,重启AHT

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4839  2019-09-23 13:26  aht10.c

     文件        450  2019-09-18 16:37  aht10.h

----------- ---------  ---------- -----  ----

                 5289                    2


评论

共有 条评论