DHT11获取数据传输到PC端

1.DHT11的时序数据

a : dht = 1

b :dht = 0延时30ms

c: dht = 1

卡d点;while(dht1); 卡e点 while(!dht) 卡f点:while(dht) 卡g点:while(!dht) 有效数据都是高电平,持续时间不一样,50us读,低电平0 高电平

知识点:

在计算机中,数字和字符之间的转换通常是通过 ASCII 码或 Unicode 码来完成的。在 ASCII 码中,数字 4 的表示为 52,而字符 '4' 的表示也是 52。因此,将数字 4 和十六进制数 0x30(在 ASCII 码中表示数字 '0')相加得到的结果是字符 '4'。

思路:

        main函数进来,先关灯,初始化串口,延迟两秒整个模块稳定,while()函数进去(一直)读取数据,延迟一秒稳定DHT11,开始从DHT11读取数据存入char datas[5];  然后sendString() 发温度 ,分别发送以下图片数据

BUG:

        在卡g点的时候给60us给的太多了,对于传0数据会跳到下一个节点去,给40us最合适

DH11传输0的时序分析

DH11传输1的时序分析

#include "reg52.h"
#include "intrins.h"sbit ledOne = P3^7;
sbit dht    = P3^3;char datas[5];sfr	AUXR  = 0x8E;void UartInit(void)
{AUXR = 0x01;SCON = 0x40;TMOD &= 0xF0;TMOD |= 0x20;TH1 =0xFD;TL1 =0xFD;TR1 = 1;
}void sendByte(char data_msg)
{SBUF = data_msg;while(!TI);       //(TI==0)   TI = 0;}void sendString(char *str)
{while(*str != '\0'){sendByte(*str);str++;}
}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 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 DHT11_Start()
{//一开始是高电平VCC,dht = 1;//拉低dht = 0;//图片说18ms,我们延迟30ms,Delay30ms();//后,拉高dht = 1;//在60us后读开始读数据,D点,如果D点是低电平,模块被拉低,说明模块存在//卡D点; while (dht); 卡e点while(!dht)里面是低电平;  卡g点:while(!dht)//有效数据都是高电平,持续时间不一样而已,50us读,低电平0 高电平1while(dht);while(!dht);while(dht);}void Read_Data_From_DHT()
{int i; //轮int j; // 每轮读多少次char tmp;char flag;for(i = 0;i<5;i++){//gfor(j = 0;j<8;j++){while(!dht); // 卡g点:while(!dht)  有效数据是高电平,持续时间不一样,50us读,低电平0,高电平1Delay40us(); //BUGif(dht==1){flag = 1;while(dht); // 维持高电平}else{flag = 0;}tmp = tmp << 1;tmp |= flag;  // 或上flag 获取温湿度数据}datas[i] = tmp;}
}void main()
{ledOne = 1;UartInit();    Delay1000ms();Delay1000ms();while(1){Delay1000ms();Read_Data_From_DHT();//0123分别代表0123个字节sendString("HU:");//温度//整数sendByte(datas[0]/10 + 0x30); // 比如:把40拿出来变成字符'4';0变成字符'0'sendByte(datas[0]%10 + 0x30);sendByte('.');//小数sendByte(datas[1]/10 + 0x30); // 比如:把40拿出来变成字符'4';0变成字符'0'sendByte(datas[1]%10 + 0x30);sendString("\r\n");sendString("TM:");//湿度//整数sendByte(datas[2]/10 + 0x30); // 比如:把40拿出来变成字符'4';0变成字符'0'sendByte(datas[2]%10 + 0x30);sendByte('.');//小数sendByte(datas[3]/10 + 0x30); // 比如:把40拿出来变成字符'4';0变成字符'0'sendByte(datas[3]%10 + 0x30);sendString("\r\n");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go语言实现人脸检测(Go的OpenCV绑定库)

文章目录 OpenCVGithub官网安装环境变量 Go的OpenCV绑定库Github文档安装搜索视频设备ID显示视频检测人脸 OpenCV Github https://github.com/opencv/opencv/ 官网 https://opencv.org/ 安装 brew install opencv brew upgrade opencv安装目录 cd /usr/local/opt/opencv…

子比主题ACG美化插件[全开源]

WordPress插件是一种可以扩展和增强WordPress网站功能的应用程序。子比主题ACG美化插件听起来像是一个专门为ACG&#xff08;动画、漫画、游戏&#xff09;爱好者设计的美化插件&#xff0c;它可能包含多种功能来改善网站的外观和用户体验。 内置功能开关100意味着这个插件提供…

基于CNN卷积神经网络的金融数据预测matlab仿真,对比BP,RBF,LSTM

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 反向传播网络&#xff08;BP&#xff0c;多层感知器MLP&#xff09; 4.2 径向基函数网络&#xff08;RBF&#xff09; 4.3 卷积神经网络&#xff08;CNN&#xff09; 4.4 长短期记忆网…

六(1)、RTKLIB源码解析 — rnx2rtkp.c

目录 一、前言 二、main中的参数说明 三、main中的代码解读 3.1 总体逻辑框架

计算机网络套接字知识(非常详细)从零基础入门到精通

本节重点 认识IP地址, 端口号, 网络字节序等网络编程中的基本概念; 学习socket api的基本用法; 一、预备知识 1.理解源IP地址和目的IP地址 ⭐在IP数据包头部中&#xff0c;有两个IP地址&#xff0c;分别叫做源IP地址和目的IP地址。 思考: 我们光有IP地址就可以完成通信了…

Kotlin Flow应用举例,launchIn 和collect用法及区别

launchIn 和 collect 都可以用于处理 MutableStateFlow<Message> 消息流&#xff0c;但它们有不同的用途和使用场景。 collect 用于在协程中收集消息流的最新值。它会一直监听消息流&#xff0c;并在每次消息流的值发生变化时执行指定的代码块。 launchIn 用于在协程作…

【30天精通Prometheus:一站式监控实战指南】第7天:postgres_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们&#x1f44b;   欢迎加入【30天精通Prometheus】专栏&#xff01;&#x1f4da; 在这里&#xff0c;我们将探索Prometheus的强大功能&#xff0c;并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。&#x1f680;   Prometheus是云原生和DevOps的…

Java基础之异常(简单易懂)

异常 1.JAVA异常体系 &#xff08;1&#xff09;Throwable类(表示可抛)是所有异常和错误的超类&#xff0c;两个直接子类为Error和Exception,分别表示错误和异常;其中异常类Exception又分为运行时异常和非运行时异常&#xff0c;这两个异常有很大区别&#xff0c;运行时异常也…

代码随想录算法训练营第三十一天| 贪心算法理论基础、LeetCode455.分发饼干、LeetCode376. 摆动序列 、LeetCode53. 最大子序和

贪心算法理论基础&#xff1a; 贪心算法没有类似递归、回溯的套路。主要的思想可以理解为&#xff1a;用局部最优找全局最优。 #LeetCode 455. Assign Cookies #LeetCode 455. 视频讲解&#xff1a;贪心算法&#xff0c;你想先喂哪个小孩&#xff1f;| LeetCode&#xff1a;4…

鲁教版六年级数学下册-笔记

文章目录 第五章 基本平面图形1 线段、射线、直线2 比较线段的长短3 角4 角的比较5 多边形和圆的初步认识第六章 整式的乘除1 同底数幂的乘法2 幂的乘方与积的乘方3 同底数幂的除法4 零指数幂与负整数指数幂5 整式的乘法6 平方差公式7 完全平方公式8 整式的除法 第七章 相交线与…

全域运营是割韭菜吗?常见套路有哪些?

随着全域运营赛道的全面开启&#xff0c;全域运营服务商和全域运营系统的数量迅速增加&#xff0c;持续激发赛道活力的同时&#xff0c;也让一些试图用全域运营割韭菜的人有了可趁之机。 值得庆幸的是&#xff0c;由于当前全域运营赛道刚兴起不久&#xff0c;因此&#xff0c;割…

Python | Leetcode Python题解之第110题平衡二叉树

题目&#xff1a; 题解&#xff1a; class Solution:def isBalanced(self, root: TreeNode) -> bool:def height(root: TreeNode) -> int:if not root:return 0leftHeight height(root.left)rightHeight height(root.right)if leftHeight -1 or rightHeight -1 or a…

C++青少年简明教程:If选择语句

C青少年简明教程&#xff1a;If选择语句 C中选择语句的语法是&#xff1a; if (条件) { 条件成立时需要执行的语句... } [else { 条件不成立时需要执行的语句... }] 说明&#xff1a; if后面使用一个括号&#xff0c;括号里是条件——关系表达式。 所谓的关系表达式就是判…

5.24学习记录

[FSCTF 2023]ez_php2 比较简单的pop链 <?php highlight_file(__file__); Class Rd{public $ending;public $cl;public $poc;public function __destruct(){echo "All matters have concluded";die($this->ending);}public function __call($name, $arg){for…

E1载波:一种2.048Mbps速率的PCM载波

E1载波的基本帧由32个子信道组成 帧长为256个bit,分为32个相等时隙&#xff0c;一个时隙为8个bit。256/328 时隙的编号为CH0~CH31 全帧包含256位,且每一帧用 125us时间传送 E1载波支持的数据传输效率为2.048Mbps&#xff0c;用PCM编码&#xff08;即 256bit/125us2.048Mbps…

Android 一个activity对应多个window

Android 一个activity对应多个window Android Activity 对应多个Window&#xff0c;Activity是应用程序的重要组成部分&#xff0c;在程序中的一个屏幕界面&#xff0c;用户可以进行交互操作。在Android应用程序中&#xff0c;Activity对应着一个Window&#xff0c;一个Activi…

微信小程序源码-基于Java后端的小区租拼车管理信息系统毕业设计(附源码+演示录像+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设…

洗完咖啡杯的最早时间

题目描述&#xff1a;给定一个数组arr&#xff0c;arr[i]代表第i号咖啡机泡一杯咖啡的时间&#xff0c;给定一个正数N&#xff0c;表示N个人在等着咖啡机&#xff0c;每台咖啡机只能一个一个的泡咖啡&#xff0c;其次&#xff0c;只有一台咖啡机可以洗杯子&#xff0c;一次只能…

1.OLED

1.基础知识

kotlin重复类编译报错解决

Duplicate class org.jetbrains.annotations.TestOnly found in modules annotations-12.0 (com.intellij:annotations:12.0) and annotations-13.0 (org.jetbrains:annotations:13.0) Go to the documentation to learn how to <a href"d.android.com/r/tools 参考链…