51单片机(DHT11温湿度传感器)

2023-05-16

一、产品介绍

1、运用场景(温湿度检测系统)

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通 空调;汽车;消费品;气象站;湿度调节器;除湿器;家电;医疗;自动控制

2、特点及接线

相对湿度和温度测量

全部校准,数字输出

长期稳定性 超长的信号传输距离:20米

超低能耗:休眠

4 引脚安装:可以买封装好的

完全互换 : 直接出结果,不用转化

二、模块数据逻辑 

数据传送逻辑

        模块一次完整的数据传输为40bit,高位在前

数据格式

        8bit湿度整数数据+8bit 湿度小数数据 +8bi 温度整数数据 +8bit 温度小数数据 +8bit 校验和

通讯过程时序图

整体逻辑分析

a : dht = 1

b :dht = 0

延时30ms

c: dht = 1

卡d点;while(dht1);

卡e点 while(!dht)

卡f点:while(dht)

卡g点:while(!dht)

有效数据都是高电 平,持续时间不一样,50us读,低电平0 高电平

 三、检测模块是否存在

根据如下时序图,做通信初始化,并检测模块是否存在,功能是否正常

 时序逻辑分析

a : dht = 1

b :dht = 0 延时30ms

c: dht = 1

在60us后读

d点,如果d点是低电平(被模块拉低),说明模块存在!

//检测模块是否接在设备上
#include "reg52.h"
#include "intrins.h"
sbit ledOne = P3^7;
sbit dht = P3^3;//模块的data插在p3.3
void Delay30ms() //@11.0592MHz
{
    unsigned char i, j;
    i = 54;
    j = 199;
    do
    {
    while (--j);
    } while (--i);
}
void Delay60us() //@11.0592MHz
{
    unsigned char i;
    i = 25;
    while (--i);
}
void Delay1000ms() //@11.0592MHz
{
    unsigned char i, j, k;
    _nop_();
    i = 8;
    j = 1;
    k = 243;
    do
    {
    do
    {
        while (--k);
    } while (--j);
    }while (--i);
}
void check_DHT()
{
    //a : dht = 1
    dht = 1;
    //b :dht = 0
    dht = 0;
    //c: dht = 1
    dht = 1;
    //在60us后读d点,如果d点是低电平(被模块拉低),说明模块存在!
    Delay60us();
    if(dht == 0){
    ledOne = 0;//亮灯,说明模块存在
    }
}
void main()
{
    ledOne = 1;
    Delay1000ms();
    Delay1000ms();

    check_DHT();
    while(1);
}

四、读取温湿度数据

时序逻辑分析

卡g点:while(!dht)

有效数据都是高电 平,持续时间不一样,50us读,低电平0 高电平

DHT11传输0的时序分析

DHT11传输1的时序分析

char datas[5];
 
void Read_Data_From_DHT()
{
	int i;//轮
	int j;//每一轮读多少次
	char tmp;
	char flag;
	
	DHT11_Start();
	for(i=0;i<5;i++){      
		for(j=0;j<8;j++){
			while(!dht);//等待卡g点
			Delay40us();//有效数据都是高电平,持续时间不一样,40us读,低电平0 高电平1
			if(dht == 1){
				flag = 1;
				while(dht);
			}else{
				flag = 0;
			} 
			tmp = tmp << 1;
			tmp |= flag;
		}
		datas[i] = tmp;
	}
}

五、串口打印温湿度

#include "reg52.h"
#include "intrins.h"
 
sbit ledOne = P3^7;
sbit dht = P3^3;//模块的data插在p3.3
 
char datas[5];
 
sfr AUXR = 0x8E;
 
void UartInit(void)		//9600bps@11.0592MHz
{
	AUXR = 0x01;
	SCON = 0x40; //配置串口工作方式1,REN不使能接收
	TMOD &= 0xF0;
	TMOD |= 0x20;//定时器1工作方式位8位自动重装
	
	TH1 = 0xFD;
	TL1 = 0xFD;//9600波特率的初值
	TR1 = 1;//启动定时器
}
void sendByte(char data_msg)
{
	SBUF = data_msg;
	while(!TI);
	TI = 0;
}
 
void sendString(char* str)
{
	while( *str != '\0'){
		sendByte(*str);
		str++;
	}
}
 
void Delay30ms()		//@11.0592MHz
{
	unsigned char i, j;
 
	i = 54;
	j = 199;
	do
	{
		while (--j);
	} while (--i);
}
 
void Delay40us()		//@11.0592MHz
{
	unsigned char i;
 
	_nop_();
	i = 15;
	while (--i);
}
 
void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;
 
	_nop_();
	i = 8;
	j = 1;
	k = 243;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
 
void DHT11_Start()
{
	dht = 1;
	dht = 0;
	//延时30ms
	Delay30ms();
	dht = 1;
	//卡d点:while(dht1);卡e点:while(!dht);卡f点:while(dht)
	while(dht);
	while(!dht);
	while(dht);
}
 
void Read_Data_From_DHT()
{
	int i;//轮
	int j;//每一轮读多少次
	char tmp;
	char flag;
	
	DHT11_Start();
	for(i= 0;i < 5;i++){
		for(j=0;j<8;j++){
			while(!dht);//等待卡g点
			Delay40us();//有效数据都是高电平,持续时间不一样,40us读,低电平0 高电平1
			if(dht == 1){
				flag = 1;
				while(dht);
			}else{
				flag = 0;
			} 
			tmp = tmp << 1;
			tmp |= flag;
		}
		datas[i] = tmp;
	}
}
 
void main()
{
	ledOne = 1;
	UartInit();
	Delay1000ms();
	Delay1000ms();
	while(1){
		Delay1000ms();
		Read_Data_From_DHT();	
		sendString("H:");             //湿度
		sendByte(datas[0]/10 + 0x30);
		sendByte(datas[0]%10 + 0x30);
		sendByte('.');
		sendByte(datas[1]/10 + 0x30);
		sendByte(datas[1]%10 + 0x30);	
		sendString("\r\n");	
		sendString("T:");             //温度
		sendByte(datas[2]/10 + 0x30);
		sendByte(datas[2]%10 + 0x30);	
		sendByte('.');
		sendByte(datas[3]/10 + 0x30);
		sendByte(datas[3]%10 + 0x30);			
		sendString("\r\n");	
        //湿度小数部分为0;温度小数部分只能显示十进制1位,需修改代码
	}
}

参考博文:(2条消息) 【51单片机STC89C52】DHT11温湿度传感器的使用_89c52dht11温湿度传感器_大头1213的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机(DHT11温湿度传感器) 的相关文章

  • Java面试基础篇

    Java面试基础篇 基础总结 博客链接导航 Java语言基础常识 https blog csdn net article details 88531257 J2EE基础知识 https blog csdn net article detai
  • 关于Mysql1251解决办法

    问题 xff1a 相信有些小伙伴在用Navicat连接Mysql时 xff0c 都遇到了这样的情况 xff0c 这其实是8 0以后的加密规则问题 解决办法 xff1a 1 我们打开以管理员身份打开cmd管理器 2 输入cdC Program
  • vue-router4路由报“[Vue Router warn] No match found for location with path“

    这里出现该问题的原因 xff1a 在路由配置了参数路径 但是 xff0c 跳转的路径没有参数 xff1a 因此控制台出现了 xff1a
  • Chrome(谷歌浏览器)安装Vue插件vue-devtools(图文详细教程)

    使用Vue开发项目时 xff0c 常会用到一款谷歌浏览器插件 xff0c vue devtools 安装成功后 xff0c 运行本地Vue项目 xff0c 打开浏览器控制台就如下 xff1a 其中可以便捷的查看vueX的数据以及组件结构等
  • 你不能错过的单片机课程-1.1.第1季第1部分-朱有鹏-专题视频课程

    你不能错过的单片机课程 1 1 第1季第1部分 3111人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第1个课程 xff0c 旨在对整个课程体系 学习方法和思路 配套开发板等进行介绍 xff0c 学习完本课程将对整个
  • redis如何设置密码

    密码设置 这里简单介绍一下redis如何设置密码 redis密码设置有两种方式 xff0c 一种需要重启redis服务 xff0c 一种不需要重启redis服务 首先 xff0c 介绍一下需要重启redis服务的设置方式 即找到redis的
  • linux 查看IP地址

    参考资料整理 一 在 linux 下可以通过两个命令来查看本机的 IP 地址 xff1a 1 支持包括 Linux 在内的所有 Unix 系统 sbin ifconfig 2 对于Linux 而言 xff0c 也可以使用 ip 命令查看 x
  • Docker 查看镜像信息

    本文中 xff0c 我们将需要学习 Docker 如何查看镜像信息 xff1f 一 images 命令列出镜像 通过使用如下两个命令 xff0c 列出本机已有的镜像 xff1a docker images 或 xff1a docker im
  • Google Chrome(谷歌浏览器)安装使用

    谷歌浏览器官网https www google cn chrome Chrome是由Google开发的一款简单便捷的网页浏览工具 谷歌浏览器 Google Chrome 可以提帮助你快速 安全的搜索到自己需要的内容 xff0c 功能强大 x
  • IDEA创建一个JavaWeb项目详细步骤

    刚好最近在写数据库大作业任务书 xff0c 留了一份 xff0c 发在博客上 提前说明 使用IDEA 43 Html5 43 CSS 43 JavaWeb 43 MySql开发 并使用Tomcat部署在本地服务器上 其中JDK版本为1 8
  • Nacos集群配置以及在springboot中使用

    1 下载nacos 官方地址为https github com alibaba nacos 2 将nacos解压 最好不要有中文路径 将cluster conf example文件改名为cluster conf 添加如下配置127 0 0
  • Windows下安装Nginx

    一 引言 Nginx 是一个很强大的高性能Web和反向代理服务 也是一种轻量级的Web服务器 可以作为独立的服务器部署网站 应用非常广泛 特别是现在前后端分离的情况下 而在开发过程中 我们常常需要在window系统下使用Nginx作为Web
  • Linux安装curl完整步骤

    文章目录 1 安装步骤 1 安装步骤 下载curl安装包 xff1a wget http curl haxx se download curl 7 38 0 tar gz 解压 xff1a tar xzvf curl 7 38 0 tar
  • 前端案例:简易计算器的实现(dom操作、target、eval函数、try catch、switch-case)

    目录 一 案例效果 二 涉及要点 三 完整代码 43 详细注释 一 案例效果 二 涉及要点 1 文本域标签 的 readonly 属性用于设置文本域文字为只读 xff1b 2 DOM 获取元素 xff0c getElementById 获取
  • 单片机到底是个什么东西-1.2.第1季第2部分-朱有鹏-专题视频课程

    单片机到底是个什么东西 1 2 第1季第2部分 2575人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第2个课程 xff0c 用通俗易懂的语言讲了很多和单片机有关的技术概念 xff0c 如CPU ROM RAM 外设
  • Requirement already satisfied解决办法

    遇到的问题 xff1a 当使用电脑中安装的Python 3 7的IDLE去运行某一个python文件时 xff0c 会出现ModuleNotFoundError No module named 39 numpy 39 的报错 xff0c 需
  • 高校学籍管理系统(SQL Server数据库课程设计)

    目录 1 概述 1 1数据库设计选题背景1 2功能要求1 3系统功能解决的问题 2 需求分析3 概念结构设计 3 1抽象出系统的实体3 2设计实体属性图3 3全局E R图 4 逻辑结构设计5 数据库物理设计与实施 5 1数据库关系图5 2表
  • JVM原理之完整的一次GC流程

    JVM 的 GC 是指垃圾回收 xff0c 主要是对堆内存的回收 本文将介绍 JVM 中一次完整的 GC 流程是怎样的 xff0c 首先抛出第一个问题 xff0c 什么样的对象会是 JVM 回收的目标 xff1f 一 可达性分析算法 xff
  • Linux进入root权限的两种方法

    进入root权限的两种方法 第一种方法 xff1a sudo xff08 暂时的 xff09 xff1a 使用root权限而不是直接进入 xff0c sudo 43 lt 指令 gt 第二种方法 xff1a root xff08 非暂时的
  • java.lang.reflect.InvocationTargetException null,依赖版本,配置文件的地址都对了。但还是出现这个错误。

    一 问题描述 在启动微服务时总是报java lang reflect InvocationTargetException null 错误 经检查 xff0c 发现是nacos 配置管理的 spring cloud starter aliba

随机推荐

  • nginx 配置域名映射到本地IP

    需求背景 项目需求需要在不同的域名下 xff0c 判断展示不同的内容 xff0c 为了模拟线上的正式域名 xff0c 有以下几种方案 xff1a 方案一 xff1a 配置host 1 找到host的文件地址 xff08 不会的百度 xff0
  • zookeeper应用实战之分布式锁

    1 什么是分布式锁 我们先来看这样一个场景 如下图所示 两个用户同时去抢购秒杀商品 当秒杀服务同时收到秒杀请求时 都去进行库存扣减 此时在没有做任何处理的情况下 就会导致库存数量变成负数从而导致超卖现象 这种情况下如果是单体项目 我们一般会
  • nvm管理node版本 nodenpm不是内部或外部命令,也不是可运行的程序

    最近 xff0c 有新老项目一起开发 xff0c node版本太高 xff0c 老项目起不来 xff1b node版本太低 xff0c 新项目还搭不起来 所以 xff0c 一个nvm就显得很有必要了 这几个坑掉的 xff0c 摔的我差点起不
  • hdfs分布式文件系统 默认数据存放路径、及相关配置属性详细解析

    hdfs默认数据存放路径 1 默认存放路径 xff1a hadoop tmp dir 61 tmp hadoop user name 即 xff1a gt tmp hadoop hyxy xff0c 注意 xff1a tmp是临时存放文件的
  • 关于Linux系统之VM安装配置(每一个步骤都超级详细的哦!)

    目录 Linux简介 VM虚拟机的介绍及安装 VM简介 VM安装 xff08 详细步骤 xff0c 根据图片一步一步进行安装 xff09 查看IP配置IP 换源 1 xff09 备份Linux自带的EPEL源 2 xff09 生成阿里源 3
  • 单片机有很多种-1.3.第1季第3部分-朱有鹏-专题视频课程

    单片机有很多种 1 3 第1季第3部分 1864人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第3个课程 xff0c 主要讲了单片机的发展史 xff0c 各种主流单片机的各自特点 xff0c STC51单片机的各系列
  • 如果还不会这几个工具,那你白混了

    大家好 xff0c 我是加摩斯 xff0c 觉得文章有帮助的小伙伴 xff0c 记得一键三连哟 xff5e 申明 xff1a 原创 xff0c 转载前请与我沟通 如何高效的描述问题 xff1f 我们现在这个时代 xff0c 不缺乏有能力的人
  • 软考——软件工程——软件生存周期

    目录 1 xff0c 软件生存周期 2 xff0c 软件过程 3 xff0c 瀑布模型 4 xff0c 增量模型 5 xff0c 演化模型 6 xff0c 螺旋模型 7 xff0c 喷泉模型 8 xff0c 统一过程 9 xff0c 敏捷过
  • Java基础面试题(史上最全、持续更新、吐血推荐)

    Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码 xff0c 并最终得到结果的过程 为了使计算机能够理解人的意图 xff0c 人类就必须要将需解决的问题的思路 方法 和手段通过计算机能够理解的形式告诉
  • 基于stm32单片机甲醛烟雾温湿度检测仪设计

    目录 第1章 绪论 1 1 引言 1 1 1甲醛的特性及危害 1 1 2甲醛的来源 1 2甲醛检测仪的种类 第 xff12 章 概述 2 1系统总概述 2 2总体方案设计 2 3硬件设计 2 4软件设计 第3章 硬件设计 3 1 硬件设计主
  • 二叉树的前中后序遍历

    作者 xff1a 渴望力量的土狗 博客主页 xff1a 渴望力量的土狗的博客主页 专栏 xff1a 手把手带你刷牛客 工欲善其事必先利其器 xff0c 给大家介绍一款超牛的斩获大厂offer利器 牛客网 点击免费注册和我一起刷题吧 目录 二
  • 国内云桌面架构有哪些?为什么VDI能成为主流

    中国 云电脑 基础架构可划分为VDI架构 IDV架构 VOI架构 xff0c 不同的服务厂商通常会在各自架构中进行一定程度上的定制化 VDI架构 xff08 virtual desktop infrastruscture 虚拟桌面基础架构
  • 【STM32 基础实验蜂鸣器发声】

    文章目录 一 认识蜂鸣器 xff08 1 xff09 蜂鸣器 xff08 2 xff09 蜂鸣器分类 二 基于stm32f10c8t6 基础实验蜂鸣器发声 xff08 1 xff09 本实验蜂鸣器型号说明 xff08 2 xff09 蜂鸣器
  • docker安装

    一 安装前准备 根据不同系统准备安装docker的安装包 xff0c 准备符合docker安装需求的Centos Ubuntu系统 二 Centos系统 安装前准备 1 系统要求 要在 CentOS 上安装 Docker xff0c 最低的
  • Python3入门教程||Python3 正则表达式||Python3 CGI 编程

    Python3 正则表达式 在 Python3 中正则表达式是一个特殊的字符序列 xff0c 它能帮助你方便的检查一个字符串是否与某种模式匹配 Python 自1 5版本起增加了re 模块 xff0c 它提供 Perl 风格的正则表达式模式
  • 树莓派安装qq最新版本 kali安装qq最新版本

    前几天我一个linux老用户看到摆烂摆了4年多的qq for linux竟然更新了 xff0c 必须给我树莓派炫一个 不多说 xff0c 开搞 首先 xff0c 要安装的就是依赖 xff1a sudo apt install libgtk2
  • 玩转你的开发板-1.4.第1季第4部分-朱有鹏-专题视频课程

    玩转你的开发板 1 4 第1季第4部分 1586人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第4个课程 xff0c 主要内容是带领大家玩转课程配套开发板 xff0c 包括 xff1a 开发板的整体配件认识 检测 程
  • Invalid <param> tag: Cannot load command parameter [robot_description]: command [[‘/opt/ros/noetic/l

    Ubuntu20 04 运行LIO SAM遇到这个错误 xff0c 一直解决不掉 xff0c 好像是xacro文件的问题 xff0c 有大佬帮忙看一下吗 xff1f 求求了
  • MDK5 Debug调试方法总结

    常见的Debug方法 连接好硬件DAP之后 xff0c 需要进行一些设置 Debug调试按钮分别对应的功能 按钮1 gt reset复位按钮 按钮2 gt run按钮 xff0c 程序运行按钮 按钮3 gt stop按钮 xff0c 程序停
  • 51单片机(DHT11温湿度传感器)

    一 产品介绍 1 运用场景 xff08 温湿度检测系统 xff09 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器 xff0c 应用领域 xff1a 暖通 空调 xff1b 汽车 xff1b 消费品 xff1b 气