既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
作者:GWD 时间:2019.06.26
DHT11温湿度传感器(单总线类)
一、 学习要点:
1、(重要)单总线类传感器检测高电平while(DHT11 == 1) temp |=0x01;出错,因为要提前拉高引脚或者加下拉电阻很麻烦,不如改成while(DHT11 == 0) temp<<=1;后程序正确,即检测低电平比检测高电平靠谱;
2、printf与LCD1602等显示字符的函数、屏幕外设要显示数字时怎么把数字转换成自负呢?答:数字后加’0’, shi_1 = val[0] / 10 + ‘0’;
二、手册分析:
(一)、参数、特性
1、传感器概述:DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有枀高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接;
2、引脚说明:
1)、 VDD 供电 3.3-5.5V DC;
2)、 DATA 串行数据,单总线;
3)、 NC 空脚;
4)、 GND 接地,电源负极、
3、典型电路;
4、建议连接线长度短于 20 米时用 5.1K 上拉电阻, 大于 20 米时根据实际情况降低上拉电阻的阻值;
5、使用 3.3V 电压供电时连接线长度不得大于 100cm。否则线路压降会导致传感器供电不足,造成测量偏差;
6、每次读出的温湿度数值是上一次测量的结果,欲获取实时数据,需连续读取两次,但不建议连续多次读取传感器,每次读取传感器间隔大于 5 秒即可获得准确的数据(有点弱);
7、微处理器与 DHT11 的连接典型应用电路如上图所示, DATA 上拉后与微处理器的 I/O 端口相连。
(二)、通信协议 串行通信-单线双向:
1、DHT11 器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由单总线完成,当总线闲置时,其状态为高电平;
2、DATA 用于微处理器与 DHT11 之间的通讯和同步,采用单总线数据格式,一次传送 40 位数据,高位先出(先接收到的是高位);
3、数据格式:
1)、8bit 湿度整数数据 + 8bit 湿度小数数据+8bit 温度整数数据 + 8bit 温度小数数据+8bit 校验位。
注:其中温湿度小数部分为 0。
2)、校验位数据定义:“8bit 湿度整数数据 + 8bit 湿度小数数据+8bit 温度整数数据 + 8bit 温度小数数据” 8bit 校验位等于所得结果的末 8 位
4、接收数据解读:湿度: 0011 0101=35H=53%RH 温度: 0001 1000=18H=24℃
5、数据时序图:用户主机(MCU)发送一次开始信号后, DHT11 从低功耗模式转换到高速模式, 待主机开始信号结束后, DHT11 发送响应信号,送出 40bit 的数据,并触发一次信采集。信号发送如所示;
6、通信步骤:
步骤一:DHT11 上电后要等待 1S 以越过不稳定状态在此期间不能发送任何指令;
步骤二:开始信号(图2-3)微处理器的 I/O 设置为输出同时输出低电平,且低电平保持时间不能小于 18ms,然后微处理器的 I/O设置为输入状态,释放总线等待 DHT11 作出回答信号;
步骤三:DHT11 的 DATA 引脚检测到外部信号有低电平时,等待外部信号低电平结束,完成后 DHT11 的 DATA引脚处于输出状态,输出 80 微秒的低电平作为应答信号,紧接着输出 80 微秒的高电平通知外设准备接收数据,微处理器的 I/O 此时处于输入状态,检测到 I/O 有低电平(DHT11 回应信号)后,等待 80 微秒的高电平后的数据接收,发送信号如所示:
步骤四:由 DHT11 的 DATA 引脚输出 40 位数据,微处理器根据 I/O 电平的变化接收 40 位数据,位数据“0”的格式为(图2-6): 50 微秒的低电平和 26-28 微秒的高电平,位数据“1”的格式为: 50 微秒的低电平加 70微秒的高电平。位数据“0”、“1”格式信号如图所示:
步骤五:结束信号:DHT11 的 DATA 引脚输出 40 位数据后,继续输出低电平 50 微秒后转为输入状态,由于上拉电阻随之变为高电平。但 DHT11 内部重测环境温湿度数据,并记录数据,等待外部信号的到来。
三:编程
1、程序功能:检测温湿度在LCD1602显示或者串口输出检测结果,DHT11检测函数需要返回多个参数所以用了指针传址的操作,模板简单利用;
2、 程序效果:
3、 DHT11.c文件
#include “DHT11.h”
#include “delay.h”
#include “reg52.h”
void Dht11_Start(void)
{
DHT11 = 0;
Delay10ms();
Delay10ms();
Delay10ms();
DHT11 = 1;
Delay10us();
while(DHT11 == 0);
Delay10us();
收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!