跌跌撞撞我也进入了STM32的大门


今天开始我开始写我的CSDN博客了,之前学C++的时候也零零散散写过几篇,但都是玩儿,太随意了,这次我要坚持下去,或许一年后或几年后我还会回来看看,希望到那时我会发现“嗨我真的进步了不少哈!”

博客我的想法是前期一星期至少一篇,内容是对本星期学习和工作的总结。

DHT11的使用和与STM32的通信:

       1、DHT11传感器手册的研究成果

1)DHT11传感器是测量温湿度的

2)数字信号输出

3)传输距离可达20米

4)数据格式 8bit湿度整数+8bit湿度小数+8bit温度整数+8bit温度小数++8bit校验和(小数部分用于以后扩展目前来说没有用处)

5)通信方式是单线双向通信

数据线的默认状态是高电平--------->发送一个低电平起始信号(延时大于18MS再拉高结束起始信号)---------->GPIO引脚转换为输入模式(等待20-40us)---->读取DHT11响应信号-------->开始读取5个字节的数据


6)数据0和1的表示方法

高电平26-28us表示0  


高电平70us表示1


u8 DHT11_connect(u8 *data)
{
	u8 _data[5]={0};
	u8 i,j;
	uint64_t start_time;
	dht11_GPIO_config(0);                        //输出模式
	//Dht1_Gpio_Config(0);
	PB6H;
	
	PB6L;
	delay_ms(18);   	
	PB6H;
	
	delay_us(30);
	dht11_GPIO_config(1);                        //输入模式
	//Dht1_Gpio_Config(1);
	start_time = getsystickTime();
	while(PB6IBIT)    //等待拉低
	{
		if(getsystickTime()-start_time>=50)       //超时检测大于500ms就会终止与DHT11的通信
		{
			return 0;
		}
	}
	start_time = getsystickTime();
	while(!PB6IBIT)   //等待拉高   DHT响应信号结束
	{
		if(getsystickTime()-start_time>=50)       //超时检测大于500ms就会终止与DHT11的通信
		{
			return 0;
		}
	}
	for(i=0;i<5;i++)
	{
		for(j=0;j<8;j++)
		{
			_data[i]<<=1;
			start_time = getsystickTime();
			while(PB6IBIT)   //等待拉低
			{
				if(getsystickTime()-start_time>=50)       //超时检测大于500ms就会终止与DHT11的通信
				{
					return 0;
				}
			}
			start_time = getsystickTime();
			while(!PB6IBIT)   //等待拉高   数据信号到来
			{
				if(getsystickTime()-start_time>=50)       //超时检测大于500ms就会终止与DHT11的通信
				{
					return 0;
				}
			}
			delay_us(30);
			if(PB6IBIT)
			{
				_data[i]+=1;
			}
		}
	}
	if(((_data[0]+_data[1]+_data[2]+_data[3])&0xff)==_data[4])
	{
		data[0] = _data[0];
		data[1] = _data[1];
		data[2] = _data[2];
		data[3] = _data[3];
		data[4] = _data[4];
		return 1;
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值