DHT11模块程序--51单片机

2023-05-16

不讲原理,只表达自己的建议以及提供源程序程序

目录

前言

一、建议

二、代码

1.c文件

2.h文件

实验展示


前言

第一次拿到DHT11这个模块,于是网上搜索了各种原理以及程序,最终都没找到一个合适自己的,于是便有了这篇文章。

一、建议

1、调用外部函数时,不要只在变量前加extern,如extern a;如果你声明了一个如unsigned char a。在外部文件调用时也必须完整的写下,如extern unsigned char a;不然变量结果会不尽相同。

2、局部变量使用结束后会释放,可直接在声明变量时赋初值,不用单独再写赋值代码,费时费力。

3、对于DHT11来说,如果单片机呼叫模块没有响应,那就是模块坏了。果断点换新的

4、写模块驱动时,最好是在每个环节都设置一个条件返回语句(if(...)return .....;)这样在通讯发生错误时,方便知道是那一步出了差错。

二、代码

1.c文件

代码如下(示例):调用前请先看下注释内容

/**********************************
12Mhz晶振,其他晶振需要修改延迟函数
 receive_DHT11()返回值含义:
 0:不响应  
 11:接收时超时错误  
 22:接收结果校验错误  
 88:接收成功
 
extern uchar recev[5];//DHT11数据 
receive_DHT11();//调用的函数

调用函数并执行完后,
数组recev的值即为DHT11的数据,其各个成员数据含义如下:
0:湿度整数;1:湿度小数;
2:温度高位;3:温度低位 4为校验位
***********************************/
#include<stc15f2k60s2.h> 
#include"DHT11.h"
sbit DATA = P4^4;
 
uchar recev[5]={1,1,1,1,1};

void Delayms(uchar a)		//@12.000MHz
{
	unsigned char i, j;
for(a;a>0;a--)
	{
	i = 12;
	j = 169;
	do
	{
		while (--j);
	} while (--i);
	}
}

uchar receive_DHT11(void)
{
	uchar i=0,T=0,a=0,AF=0;

/*呼叫模块*/
	DATA = 1;//拉高后等待回应
	DATA =0;
	Delayms(20);	
	DATA = 1;//拉高后等待回应

/*模块响应*/
	while(DATA == 1)
	{a++;if(a>=40)return 0;}
	while(DATA == 0)//响应后拉低80us,这里等待高电平到来
	{a++;if(a>80)return 1;}
	while(DATA==1);
	
/*数据传输处理*/
	for(a=0;a<5;a++)
	{
		for(i=0;i<8;i++)
		{ 
			T=0;
			while(DATA == 0);//等待80US的低电平过去
			while(DATA == 1)T++;//估算高电平时间	
			if(T<40)recev[a]=recev[a]<<1;//数据0
			  else {recev[a]=recev[a]<<1;recev[a]++;}//数据1
		}	
		if(a<4)
		AF=AF+recev[a];//获取前4位和
	}
	
/*数据校验*/
	if(AF == recev[4])
		return 88;//传输无错误
	else return 22;

}

2.h文件

代码如下(示例):

#ifndef __DHT11_H__
#define __DHT11_H__
#define uchar unsigned char
#define uint unsigned int

uchar receive_DHT11(void);

#endif

该处使用的url网络请求的数据。


实验展示

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

DHT11模块程序--51单片机 的相关文章

  • harmonyOS hdc配置以及自动签名

    hdc是sdk tools中自带的命令 xff0c 你没有配置系统环境变量指定它所在的目录 xff0c 肯定不能直接到处任意调用啊 xff0c 你需要进入到hdc exe所在路径的当前路径下才能去调用它 xff0c 或者你把它的路径加入到系
  • Vue脚手架(Vue-cli)安装

    脚手架是Vue官方提供的标准化开发工具 开发平台 官方文档开始 vue cli cli c command l line 行 interface 命令行接口工具 第一步 仅第一次执行 全局安装 64 vue cli npm install
  • 使用vscode开发配置uni-app(小程序)

    这个文件是用VsCode写uniapp小程序的步骤笔记 安装Vue脚手架 vue cli npm install g 64 vue cli 通过脚手架创建uni app项目 vue create p dcloudio uni preset
  • uniapp image组件的基本使用

    image组件的基本使用 就是用来显示图片的 src 来设置我们图像的路径 属性名类型默认值说明平台差异说明srcString图片资源地址 lt template gt lt div gt lt view gt lt image src 6
  • 将本机做成虚拟镜像文件(使用VMware vCenter Converter收取镜像)

    下载地址 xff08 需要账号 xff09 xff1a https customerconnect vmware com downloads info slug infrastructure operations management vm
  • uniapp 网络请求 get请求

    网络请求 在uni中可以调用uni request方法进行请求网络请求 需要注意的是 xff1a 在小程序中网络相关的API在使用需要配置域名白名单 官方文档 如果发起请求就调用我们这个uni request OBJECT 发送get请求
  • electron之旅(二)react使用

    首先使用react模板 我们这里使用的是vite和yarn span class token function yarn span create vite span class token comment 创建vite的react js模板
  • flutter学习之旅(二)

    如果不知道怎么安装编写可以查看这篇 创建项目 另一个创建方法 flutter create 项目名 热部署 vscode 热部署 vscode很简单 xff1a 可以通过Debug进行调试 使用flutter查看设备 flutter dev
  • Flutter学习之旅 - Scaffold属性Drawer侧边栏

    span class token class name Scaffold span span class token punctuation span appBar span class token punctuation span spa
  • Flutter学习之旅 - AppBar、TabBar、TabBarView实现头部顶部滑动导航

    文章目录 AppBar自定义顶部按钮图标 颜色取消debug图标TabBar TabBarView来实现顶部导航PreferredSize组件改变TabBar导航样式自定义KeepAliveWrapper缓存页面如何获取tab下的索引值销毁
  • Flutter学习之旅 - 路由

    文章目录 Flutter路由介绍普通路由普通路由传值 命名路由将 96 routes 96 的配置提到外面 使用的是Map 命名路由传值 路由跳转返回上一级路由替换路由返回到根路由返回Tabs后到指定页面 Flutter路由介绍 flutt
  • Ubuntu 和 Debian 的关系

    转自 xff1a http people ubuntu com happyaron udc cn lucid html ch11s09 html Debian 于 1993年8月16日 由一名美国普渡大学学生 Ian Murdock 首次发
  • Makefile学习笔记

    主要参考文档 xff1a 跟我一起写makefile xff0c 这里 有一篇 谈谈职业规划 CSDN对陈皓的采访 xff0c 被采访的大牛就是这个文档的作者 xff0c 他的CSDN专栏 本文的示例工程及Makefile 在这里 一 关于
  • 运行的docker增加端口映射

    1 运行了一个centos7的容器 xff0c 22端口映射给宿主机5002端口 xff1a docker span class token function ps span span class token operator span s
  • 23.易混淆命令(apt-get、wget、git clone、pip与pip3区别、apt-get和pip区别)

    摘要 xff1a 本文详细介绍了Ubuntu系统下apt get wget git clone pip与pip3 apt get和pip几组概念的区别 1 apt get 参考文献 xff1a apt get 是AdvancedPackag
  • ssh实现免密登录(文中附上脚本)

    1 为什么要互信 很多时候 xff0c 我们经常需要登录同一个服务器或者客户端 xff0c 但是输入密码很繁琐 xff0c 此时我们就需要能免密登录某些服务器或客户端 下面我们就来看怎么简单实现免密登录 有时候我们在shell脚本中会不断去
  • MapReduce概述及工作流程

    内容 mapreduce原语 xff08 独创 xff09 mapreduce工作流程 xff08 重点 xff09 MR作业提交流程 xff08 重点 xff09 YARN RM HA搭建 xff08 熟练 xff09 运行自带的word
  • IIC总线

    1 概念 IIC总线是PHLIPS公司在八十年代初推出的一种串行的半双工同步总线 xff0c 主要用于连接整体电路 同一块板子两个芯片之间的通信是通过IIC总线进行的 xff08 stm32mp157a lt IIC gt SI7006 I
  • 函数拟合3

    所谓函数拟合 xff0c 就是给定一些输入点 xff0c 输出一个函数曲线 选择的基函数会直接影响线性组合函数的表达能力 当采样点较多 xff0c 而系数较少时 xff0c 会出现欠拟合 xff0c 表达能力不够 当采样点较少 xff0c
  • LDM命令

    http blog 163 com oy mcu blog static 16864297220120193458892 LDM STM指令主要用于现场保护 xff0c 数据复制 xff0c 参数传送等 STMFD指令 STMFD Rn r

随机推荐

  • LE Audio进入商用阶段

    LE Audio进入商用阶段 xff0c TWS耳机要变天了 36氪 蓝牙协议十年来的最大更新 xff0c LE Audio进入商用测试阶段 全球最畅销的IoT设备是什么 xff1f 我很轻松就能告诉你答案 xff1a AirPods 作为
  • CAN XL :CAN协议家族新成员

    十年之前 xff0c 你不认识我 xff0c 我也不认识CAN FD 如今 xff0c CAN FD已经陆续进入乘用车领域 xff0c 几乎所有汽车制造商都将在未来几年内逐步推出搭载CAN FD的乘用车 那十年之后 xff0c 车载网络又会
  • 【整理】嵌入式系统的各种常见外设

    原文地址 xff1a http www crifan com summary embedded system various peripherals 最后更新 xff1a 2013 11 14 TODO xff1a 1 添加更多的常见的外设
  • DDR controller driver

    在SOC中 xff0c DDR是很重要的 xff0c 需要在uboot中进行初始化 xff01 但是DDR异常的复杂 DDR controller也异常的复杂 xff0c 以candence DDR controller为例 xff0c 这
  • 一文看懂IC芯片生产流程:从设计到制造与封装

    origin http forum esm cn com FORUM POST 1000163993 1201257744 0 HTM ga 61 1 101949507 338942905 1436813394 芯片制造的过程就如同用乐高
  • 2015中国国内元器件分销商10亿俱乐部20强榜单

    origin http www v4 cc News 916429 html 元器件分销市场 xff0c 从欧美安富利 xff0c 艾睿 xff0c 富昌等巨头跨度到台湾大联大 xff0c 文晔等新势力 xff0c 花了30年时间 随着电子
  • openvswitch 通过ofproto/trace trace跟踪数据包匹配的流表

    目录 1 解决的问题需求 当vm互访不通时 xff0c 不知道是哪天流表出问题 xff0c 可以通过 ovs提供的工具模拟虚拟机实例发出的数据包来跟踪数据包经过的流表路径 2 使用方法 xff08 一 xff09 解决的问题需求 我们在使用
  • 关于ethercat开发的一些感想

    origin http blog csdn net embededvc article details 50364977 从去年到现在 xff0c 整整一年经历了从ethercat主站到伺服从站的实现过程 xff0c 包括全程负责从站的et
  • modem manager与network manager

    modem manager ModemManager is a DBus system bus activated service meaning it 39 s started automatically when a request a
  • 调试px4串口升级固件

    最近在调试px4的bootloader 实现uart 串口升级 硬件版本为pixhawk bootloader地址为https github com PX4 Bootloader git px4代码地址为https github com P
  • 文章风格: 一级标题使用蓝色字体,二级和三级使用黑色,重点部分使用红色或黄色标记,正文采用浅灰色

    我今天给自己立个规矩 xff0c 以后我自己写的技术类文章 xff0c 一级标题使用蓝色字体 xff0c 二级和三级使用黑色 xff0c 重点部分使用红色或黄色标记 xff0c 正文采用浅灰色 2012 05 03
  • Xlib Programming Manual

    最近看了王垠 写的那篇清华退学的文章 xff0c 看到了他研究linux的过程 xff0c 文中提到了x Windows 我也总想搞一搞这个东西 xff0c 但是不知从何入手 它推荐这本书Xlib Programming Manual xf
  • 第二章 PX4-Pixhawk-RCS启动文件解析

    origin http blog csdn net qq 18112493 article category 6851622 第二章 PX4 RCS 启动文件解析 RCS 的启动类似于 Linux 的 shell 文件 xff0c 如果不知
  • PX4源码开发人员文档(四)——创建后台程序(应用)

    origin http blog csdn net lkk05 article details 48659059 在 Unix 和其他多任务计算机操作系统中 xff0c 后台程序是指 xff0c 作为后台进程运行的计算机 xff0c 而不是
  • 为何选择nuttx

    裸机程序 xff0c 不能处理太复杂的逻辑 xff0c 系统越复杂 xff0c 越需要上os freertos 不支持posix api rtems是gpl版权 nuttx bsd版权 xff0c px4和apm开源飞控都使用nuttx 经
  • https://tieba.baidu.com/p/4311040961?red_tag=2683564864

    dddddd
  • 彻底理解Linux的各种终端类型以及概念

    origin http blog csdn net dog250 article details 78766716 这篇文章的动机有两个 xff0c 上周同事问我关于Linux终端的问题 xff0c 我简要解答后发现有些概念确实自己也说不清
  • 恢复ubuntu14.04默认的经典登录界面

    之前不小心安装了Xubuntu desktop xff0c 卸载后 xff0c 登录界面还是Xubuntu desktop的界面 xff0c 如图所示 xff1a 搞了很久都没能恢复到默认登录界面 xff0c 最后在国外网站找到了解决方法
  • 理工科专业精品书系列

    原文地址 xff1a https bbs et8 net bbs showthread php t 61 938724 本人本科专业飞机设计 不过后来越搞越杂 xff0c 飞机 xff0c 汽车 xff0c 船舶 xff0c 坦克 xff0
  • DHT11模块程序--51单片机

    不讲原理 xff0c 只表达自己的建议以及提供源程序程序 目录 前言 一 建议 二 代码 1 c文件 2 h文件 实验展示 前言 第一次拿到DHT11这个模块 xff0c 于是网上搜索了各种原理以及程序 xff0c 最终都没找到一个合适自己