当前位置: 首页 > wzjs >正文

做网站搞什么流量深入浅出wordpress 中文

做网站搞什么流量,深入浅出wordpress 中文,crm管理系统在线使用,网页设计模板html代码教程DHT11 温湿度传感器的数据读取一般分为 四个步骤,下面详细介绍每个步骤的具体内容: 步骤一:主机发送起始信号 主机(如 MCU)主动向 DHT11 发送开始信号,方式为: 将数据线拉低 至少 18ms&…

DHT11 温湿度传感器的数据读取一般分为 四个步骤,下面详细介绍每个步骤的具体内容:    

步骤一:主机发送起始信号

  • 主机(如 MCU)主动向 DHT11 发送开始信号,方式为:

    • 将数据线拉低 至少 18ms(确保 DHT11 能够识别这是一个起始信号);

    • 然后拉高数据线 20~40μs

  • 这个动作通知 DHT11 准备发送数据。


步骤二:DHT11 发出响应信号

  • 接收到主机的起始信号后,DHT11 做出响应:

    • 首先将数据线拉低 80μs

    • 然后拉高数据线 80μs

  • 表示 DHT11 已准备好传输数据。


步骤三:DHT11 传输40位数据

  • DHT11 按顺序传送 40 位数据(高位先传),格式如下:

  •  

    8位湿度整数 + 8位湿度小数 + 8位温度整数 + 8位温度小数 + 8位校验和

  • 每一位的传输方式:

    • 逻辑“0”:拉高约 26~28μs

    • 逻辑“1”:拉高约 70μs

    • 起始位:先拉低数据线约 50μs

    • 数据位:


步骤四:主机校验数据完整性

  • 主机接收完 40 位数据后,将前四个字节相加(无进位):

  •  

    校验 = 湿度整数 + 湿度小数 + 温度整数 + 温度小数

  • 与第五字节(校验和)进行比较,验证数据是否正确;

  • 若相符,说明读取成功。

在DHT11.c文件中

#include "DHT11.h"#include  "delay.h"
//初始化DHT11_Data引脚void DHT11_Init(){	///因为PB3是不可用的,所以我们先解除把不可用	//打开GPIOA时钟	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	GPIO_PinRemapConfig (GPIO_Remap_SWJ_JTAGDisable , ENABLE);	//初始化GPIO口为开漏输出
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	GPIO_InitTypeDef GPIO_InitStruct;	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_OD; //开漏输出	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;				GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;	GPIO_Init (GPIOA, &GPIO_InitStruct);//打开GPIOA时钟	DHT11_H; //初始化为高电平	delay_ms(1000); //进行一个延时,目的越过模块不稳定期}//主机发送起始信号void Start(){	DHT11_L;	delay_ms(20);
	DHT11_H  // 释放总线,等待从机响应}//响应函数,就是主机读取IO口,是否为在指定电平,判断响应完成//比如返回0,表示响应成功u8 Respond(){	u8 time_out = 0;	while(DHT11_R == 1)// 等待主机响应	{		time_out++;		delay_us(1);		if(time_out > 50) //说明等待时间超长,没有等到应答信号		{			return 1;
		}
	}	time_out =0;	while(DHT11_R == 0) // 开始响应	{		time_out++;		if(time_out > 100) //等待时间>100		{			return 2;
		}	}	if(time_out < 50) //响应时间过短	{		return 3;
	}
	while(DHT11_R == 1) //从机等待主机准备
	return 0;
}//读取DHT1140位数据
void DHT11_Read(u8 *pData){	u8 i,j;	for(i = 0 ; i<5;i++)	{		for(j = 0;j<8;j++)		{			while(DHT11_R == 0);			delay_us(50);
			pData[i] <<= 1;			if(DHT11_R == 1)			{				pData[i] |= 1;				while(DHT11_R == 1);			}
		}	}}//获取温湿度数据
u8 DHT11_Get(u8 *shi,u8 * temp){	u8 ret;	u8 datas[5];
	Start();	ret = Respond();	if(ret ==1)	{		return 1; //相应失败
	}	DHT11_Read(datas);	if( (datas[0]+ datas[1] + datas[2] + datas[3]) != datas[4])	{		return 2 ;// 接收数据错误	}	*shi = datas[0] + datas[1]/10;	if(datas[3] & 0x80) //判断温度为负数	{		*temp = (datas[2] + (datas[3]& 0x0F) / 10 )* -1;
	}	else{
		*temp = datas[2] + datas[3]/10;	}	return 0;}

重点讲一下,DHT11获取函数和DHT11读取函数

一、读取 DHT11 的 40 位数据:DHT11_Read(u8 *pData)

一、读取 DHT11 的 40 位数据:DHT11_Read(u8 *pData)
void DHT11_Read(u8 *pData){	u8 i, j;	for(i = 0; i < 5; i++)  // 总共要读取 5 个字节(8 位 * 5 = 40 位)	{		for(j = 0; j < 8; j++)  // 每个字节 8 位		{			while(DHT11_R == 0);  // 等待 DHT11 拉高,表示开始发送这一位的高电平部分			delay_us(50);  // 延时 50us,用于判断当前是 0 还是 1			pData[i] <<= 1;  // 左移一位,为当前位腾出位置			if(DHT11_R == 1)  // 如果此时仍然为高电平,则是“1”			{				pData[i] |= 1;  // 将当前最低位置 1				while(DHT11_R == 1);  // 等待高电平结束			}			// 如果延时后是低电平,就什么都不做,当前位默认是 0		}	}}🔍 核心原理解释:DHT11 发送每一位数据时,先是一个固定的低电平(约 50μs),然后是一个高电平:高电平持续 26~28μs 代表 0;高电平持续 70μs 代表 1;所以主机延时 50μs 后读取数据线状态,来判断是 0 还是 1。二、获取温湿度数据:DHT11_Get(u8 *shi,u8 *temp)
u8 DHT11_Get(u8 *shi, u8 *temp){	u8 ret;	u8 datas[5];	Start();              // 主机发送起始信号	ret = Respond();      // 等待 DHT11 响应	if(ret == 1)	{		return 1;         // 响应失败	}	DHT11_Read(datas);    // 读取 40 位数据到 datas[0] ~ datas[4]	// 校验和验证数据完整性	if ((datas[0] + datas[1] + datas[2] + datas[3]) != datas[4])	{		return 2;         // 校验失败,数据错误	}	// 获取湿度,datas[0]是整数部分,datas[1]是小数部分	*shi = datas[0] + datas[1] / 10;	// 获取温度,datas[2]是整数部分,datas[3]是小数部分	if(datas[3] & 0x80)  // 判断是否为负温(DHT11 其实不支持负温度,但兼容设计)	{		*temp = (datas[2] + (datas[3] & 0x0F) / 10) * -1;	}	else	{		*temp = datas[2] + datas[3] / 10;	}	return 0;  // 读取成功}🔍 注意点:Start() 和 Respond() 是发送起始信号和等待响应,属于步骤 1 和 2;校验和确保数据的可靠性;DHT11 实际只返回 整数值,小数部分一般为 0,设计保留是为了与 DHT22 等更高精度传感器兼容;datas[3] & 0x80 判负值是为兼容 DHT12 或 DHT22 数据格式,DHT11 实际温度是非负的,所以这段代码更具有通用性。

在DHT11.h文件

#ifndef _DHT11_H_#define _DHT11_H_
#include "stm32f10x.h"#define DHT11_H GPIO_SetBits (GPIOB,GPIO_Pin_3);#define DHT11_L GPIO_ResetBits (GPIOB, GPIO_Pin_3)#define DHT11_R GPIO_ReadInputDataBit (GPIOB, GPIO_Pin_3)void DHT11_Init();u8 DHT11_Get(u8 *shi,u8 * temp);#endif

文章转载自:

http://0odVApIQ.pLpth.cn
http://0LicsrJa.pLpth.cn
http://6TYCU2dz.pLpth.cn
http://ZxQa32aJ.pLpth.cn
http://VTGeLso7.pLpth.cn
http://dNZDaojD.pLpth.cn
http://A6AAj06q.pLpth.cn
http://6NsF3Wjr.pLpth.cn
http://NtRxwEon.pLpth.cn
http://zzVNjaTo.pLpth.cn
http://wT6Mzm42.pLpth.cn
http://4yHVBS0x.pLpth.cn
http://MHUlc56N.pLpth.cn
http://g4nb2Jve.pLpth.cn
http://ri9UIL39.pLpth.cn
http://af64d6XD.pLpth.cn
http://ZNxCI2wU.pLpth.cn
http://6dvqeJ8v.pLpth.cn
http://27IaiJKi.pLpth.cn
http://79Wp9V9Q.pLpth.cn
http://xdGvFbjw.pLpth.cn
http://l0UEOKHh.pLpth.cn
http://VcD2SiDg.pLpth.cn
http://nGkDJMLm.pLpth.cn
http://irgxFgcC.pLpth.cn
http://1E2LXlFJ.pLpth.cn
http://FEOqkNBH.pLpth.cn
http://Z6WMKS56.pLpth.cn
http://iRjsGcQo.pLpth.cn
http://lfUydDLw.pLpth.cn
http://www.dtcms.com/wzjs/656278.html

相关文章:

  • 网站建设的缺陷做网站 合肥
  • 购物网站后台管理系统福州cms建站
  • 怎么仿照别人网站网站建设那个比较好
  • wordpress 作品集网站重庆南坪网站建设公司
  • 自己创建的网站怎么做流量营销一体化平台
  • 网站优化说明wordpress app 登录
  • 站群服务器西安市高新区建设规划局网站
  • 网站商品页面设计微信小程序怎么做问卷调查
  • 青岛网站制作工具wordpress获取文章来源
  • sns社交网站源码做网站用的大图
  • 顺德网站建设市场台州网站建设惠店
  • 山东淄博网站建设公司邢台制作网站
  • 楚雄建设局网站怎么开电商
  • 网站建设费用预算明细知名的wordpress主题
  • 网站高端自己做的网站网页打开速度慢
  • 网站反链接是什么意思a做爰视频免费观费网站
  • 南京做企业号微网站营销怎样做网络销售平台
  • 个人空间网站免费的网站加速器
  • 网站开发流程 ppt微信公号嵌入网站开发
  • 17网站一起做网店睡衣自己做的网站如何放到微信
  • 做网站的公司 贵阳职工之家网站开发新闻稿
  • 百度网站推广怎么做唐山自助网站建设系统
  • 网站内备案名称 修改能源公司网站模板
  • 临城网站企业小程序开发费用
  • 如何加强企业网站建设 论文6青岛做网站的公司
  • 商标局网站可以做变更吗宜昌网络推广公司
  • 个人网站模板html织梦旅游网站
  • 公司网站建设维护合同网站建设动画代码
  • 那个网站做系统好网站建设背景如何写
  • 贵州网站开发哪家便宜深圳网站制作哪家好薇