51单片机驱动AHT10温湿度传感器
51单片机驱动AHT10温湿度传感器
- AHT10温湿度传感器
- AHT10参数
- 工作原理
- 数据转换
- 驱动
- 接线
- 驱动代码
- 实验结果
AHT10温湿度传感器
AHT10是新一代温湿度传感器,传感器输出经过标定的数字信号,通过IIC通讯方式输出。其配有一个全新设计的 ASIC专用芯片、一个经过改进的MEMS半导体电容式湿度传感元件和一个标准的片上温度传感元件,大大提升了传感器的可靠性,在恶劣环境下稳定工作。
AHT10参数
名称 | 参数值 |
---|---|
供电 | 1.8-3.6V |
相对湿度分辨率 | 0.024%RH |
相对湿度精度 | ±2%RH |
相对湿度测量范围 | 0-100%RH |
温度分辨率 | 0.01℃ |
温度精度 | ±0.3℃ |
湿度测量范围 | -40-85℃ |
通讯方式 | IIC |
工作原理
由于AHT10为IIC通讯,在开发使用时需要查看并了解它的寄存器和通讯时序。
时序说明:
启动时序图:
停止时序图:
功能命令:
数据转换
相对湿度:
温度:
驱动
接线
STC89C52RC | AHT10 |
---|---|
VCC | VCC |
GND | GND |
P1^0 | SCL |
P1^1 | SDA |
驱动代码
AHT10驱动函数声明:
/*AHT10初始化函数*/
bit AHT10_int(void);
/*读取状态字函数*/
uchar Read_Status(void);
/*判断状态字bit3是否使能函数*/
bit Judge(void);
/*AHT10软件复位函数*/
bit AHT10_RST(void);
/*AHT10初始化并且校准使能位*/
void AHT10_INIT(void);
/*AHT10触发测量函数*/
bit AHT10_Start(void);
/*数据读取处理函数*/
bit AHT10_Read_TH(uint *Temp,uint *Hum);
数据处理:
bit AHT10_Read_TH(uint *Temp,uint *Hum)
{uchar i;uchar Data[6] = {0};unsigned long retudata = 0;AHT10_Start();delay_ms(80);while((Read_Status()&0x80)==0x80);Start_I2c(); //起动总线函数SendByte(IIC_Add_R); //字节数据发送函数if(ack == 0) return 0;for(i = 0;i<6;i++){Data[i] = RcvByte(); //无子地址读字节数据函数 if(i<5){Ack_I2c(0); //应答子函数 a = 0 应答 a = 1不应答}elseAck_I2c(1); //应答子函数 a = 0 应答 a = 1不应答}Stop_I2c(); //结束总线函数retudata = retudata+Data[1];retudata = (retudata<<8)+Data[2];retudata = ((retudata<<8)+Data[3])>>4;*Hum = (retudata*1000/1024/1024);retudata = 0;retudata = ((Data[3] & 0x0f)<<8)|Data[4];retudata = (retudata<<8)|Data[5];*Temp = (retudata*2000/1024/1024 - 500); //数据精确到一位小数return 1;
}
主函数:
void main()
{ unsigned int TEMP = 0,Hum = 0;UART_INIT();AHT10_INIT();printf("初始化成功");while(1){while(Judge()==0)//等到校准输出使能位为1,才读取。{AHT10_INIT();//如果为0再使能一次delay_ms(30);}AHT10_Read_TH(&TEMP,&Hum);printf("温度:%d%d.%d℃ 湿度:%d%d.%d%\r\n",TEMP/100,TEMP%100/10,TEMP%100%10,Hum/100,Hum%100/10,Hum%100%10);delay_ms(1000);}
}
实验结果
室温:
手指按压在传感器上:
51单片机驱动AHT10温湿度传感器相关推荐
- 51单片机控制DHT11温湿度传感器,并使用OLED屏幕显示
目录 前言 一.MCU主控选型 二.DHT11温湿度传感器 1.模块介绍 2.软件实现 DHT11.c DHT11.h 三.OLED显示屏 1.模块介绍 2.软件实现 OLED.c OLED.h OL ...
- 基于STC单片机和AHT10温湿度传感器的温湿度计的设计
大家好,我是『芯知识学堂』的SingleYork,今天笔者要跟大家分享一款"温湿度计"的制作,这是笔者曾经发表过的原文地址:https://www.icxbk.com/articl ...
- 使用51单片机 驱动DHT22温湿度模块 串口显示温湿度
使用51 驱动DHT22温湿度 串口显示 一.基本参数 二.接线 三.部分代码 引脚定义 通信协议 时序对用代码 四.实验现象 五.注意事项 一.基本参数 二.接线 DHT22温湿度模块 STC89C ...
- 利用ESP8266-12F实现与51单片机通信及温湿度传感器数据交互
文章目录 前言 一.ESP8266是什么? 二.使用步骤 1.将keil5生成的hex文件,下载到stc89c52单片机中 2.打开stc-isp内部自带的串口助手 3.利用AT指令集进行配网 4.手 ...
- sht11的linux程序,使用51单片机实现SHT11温湿度传感器检测的程序和电路图
下面是原理图: 下面是与MCU连接的典型电路: 下面是源代码: #include <reg52.h> #include <intrins.h> /*************** ...
- STM32单片机硬件I2C读取AHT10温湿度传感器数据
STM32使用硬件IIC读取AHT10温湿度传感器的数据并显示在0.96寸OLED屏上. 我用的单片机是STM32F103C8T6,程序用的是ST标准库写的. STM32使用硬件I2C读取SHTC3温 ...
- 51单片机驱动TCS3200颜色识别传感器
51单片机驱动TCS3200颜色识别传感器 TCS3200 简介 输出频率与滤光器选择说明 实验说明 接线 驱动 驱动说明 主要代码 主函数 实验现象 验证: 实验注意事项: TCS3200 简介 T ...
- 课设-51单片机+PM2.5+温湿度(程序+原理图+Protel仿真)
51单片机PM2.5+温湿度(程序+原理图+Protel仿真) 一.功能 二.模块 三.代码程序 四.PCB原理图 一.功能 本系统以STC89C52单片机为核心,主要包括传感器温湿度采集,传感器PM ...
- 基于51单片机驱动ADXL346 (LCD1602显示)
基于51单片机驱动ADXL346 (LCD1602显示) 一.ADXL346传感器介绍 1.实物图 2.产品说明 3.电气参数 4.通信协议 二.驱动代码 1.引脚定义 2.初始化函数 3.主函数 三 ...
最新文章
- MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen
- bootstrapTable语言包设置
- [原]巧用RenderTexture
- 主页被挟持 火狐浏览器_看过来!关于IE、360浏览器访问学校部分网站的设置说明在这里...
- 模式识别机器学习术语
- DOS获取局域网内所有正在使用的ip地址
- 2010.07.13_19:30
- 【Java基础篇】try catch finally语句包含return语句时的执行过程
- Lua学习小记——语言
- 使用Socket使用域名连接服务器
- sql vb xml 换行_vb怎么写换行代码 vb文本框怎么换行输出
- 3D Max 2016安装教程
- PreScan笔记(1)——入坑之简单介绍和Demo
- java毕业设计房屋租赁管理系统Mybatis+系统+数据库+调试部署
- python 状态空间模型_基于状态空间的建模过程
- pyqt4的一些相关资料整理
- 在【守望先锋】学习C++的类与对象
- css2D、3D详解
- notability录音定位_请问如何在iPad上科学地使用good notes和notability?
- 使用beautiful soup解析xml