CW32饭盒派开发板温湿度采集

2023-05-27
关注

实验器材

  1. CW32饭盒派开发板
  2. DHT11温湿度传感器

接线

开发板 DHT11
VCC +
GND GND
PB1 OUT

程序

  1. dht11.c
#include "dht11.h"

	
//复位DHT11
void DHT11_Rst(void)	   
{                 
		PB01_DIR_OUTPUT(); 	//PB12配置成输出
		PB01_SETLOW(); 	    //拉低DQ
	  delay1ms(20);
		PB01_SETHIGH(); 	  //DQ=1 
	  delay10us(3);
}
//等待DHT11的回应
//返回1:未检测到DHT11的存在
//返回0:存在
uint8_t DHT11_Check(void) 	   
{   
	uint8_t retry=0;
  PB01_DIR_INPUT();  //PB12配置成输入
  while (PB01_GETVALUE()&&retry<10)//DHT11会拉低40~80us
	{
		retry++;
		delay10us(1);
	};	 
	
	if(retry>=10)return 1;
	else retry=0;
  while (!PB01_GETVALUE()&&retry<10)//DHT11拉低后会再次拉高40~80us
	{
		retry++;
		delay10us(1);
	};

	if(retry>=10)return 1;	    
	return 0;
}
//从DHT11读取一个位
//返回值:1/0
uint8_t DHT11_Read_Bit(void) 			 
{
 	uint8_t retry=0;
	while(PB01_GETVALUE()&&retry<10)//等待变为低电平
	{
		retry++;
		delay10us(1);
	}
	retry=0;
	while(!PB01_GETVALUE()&&retry<10)//等待变高电平
	{
		retry++;
		delay10us(1);
	}
	delay10us(4);//等待40us
	if(PB01_GETVALUE())return 1;
	else return 0;		   
}
//从DHT11读取一个字节
//返回值:读到的数据
uint8_t DHT11_Read_Byte(void)    
{        
    uint8_t i,dat;
    dat=0;
	for (i=0;i<8;i++) 
	{
   		dat<<=1; 
	    dat|=DHT11_Read_Bit();
    }						    
    return dat;
}
//从DHT11读取一次数据
//temp:温度值(范围:0~50°)
//humi:湿度值(范围:20%~90%)
//返回值:0,正常;1,读取失败
uint8_t DHT11_Read_Data(float *temp,uint8_t *humi)    
{        
// 	uint8_t buf[5];
	char buf[5];
	uint8_t i;
	DHT11_Rst();
	if(DHT11_Check()==0)
	{
		for(i=0;i<5;i++)//读取40位数据
		{
			buf[i]=DHT11_Read_Byte();
		}
		if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
		{
			*humi=buf[0];
			*temp=buf[2];
		}
	}else return 1;
	return 0;	    
}
//初始化DHT11的IO口 DQ 同时检测DHT11的存在
//返回1:不存在
//返回0:存在    	 

uint8_t DHT11_GPIO_Config ( void )
{		
	GPIO_InitTypeDef GPIO_InitStruct;
	
	__RCC_GPIOB_CLK_ENABLE();

  GPIO_InitStruct.IT = GPIO_IT_NONE; 
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pins = GPIO_PIN_1;
  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
  GPIO_Init(CW_GPIOB, &GPIO_InitStruct);
	
	DHT11_Rst();  //复位DHT11
	return DHT11_Check();//等待DHT11的回应
}

dht11.h

#ifndef __DHT11_H
#define __DHT11_H 
#include "main.h"
 

uint8_t DHT11_Init(void);//初始化DHT11
uint8_t DHT11_Read_Data(float *temp,uint8_t *humi);  
uint8_t DHT11_Read_Byte(void);//读出一个字节
uint8_t DHT11_Read_Bit(void);//读出一个位
uint8_t DHT11_Check(void);//检测是否存在DHT11
void DHT11_Rst(void);//复位DHT11   
uint8_t DHT11_GPIO_Config ( void );
#endif

接好线后,把程序下载到开发板,然后重启效果如下:

您觉得本篇内容如何
评分

相关产品

Soway 信为科技 T118温湿度传感器 温湿度传感器

T118 湿敏电容数字温湿度模块是一款含有己校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个高精度测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。

ASAIR 奥松电子 AHTT2820高精密温湿度传感器 温湿度传感器

奥松电子 AHTT2820高精密温湿度传感器

埃森塔 ASHT20系列温湿度传感器 温湿度传感器

一、产品概述 ASHT25新一代温湿度传感器在尺寸与智能方面建立了新的标准: 它采用LCC05B型无引线片式载体框架,外加陶瓷盖板结构封装,氧化铝材质。传感器输出经过标定的数字信号,标准I2C 格式。ASHT25配有一个全新设计的ASIC专用芯片、一个经过改进的MEMS半导体电容式湿度传感元件和一个标准的片上温度传感元件,其性能已经大大提升甚至超出了前一代传感器的可靠性水平, 新一代温湿度传感器,经过改进使其在恶劣环境下的性能更稳定每一个传感器都经过校准和测试, 在产品表面印有产品批号。由于对传感器做了改良和微型化改进,因此它的性价比更高,并且最终所有设备都将得益于尖端的节能运行模式。

昆仑海岸 JWST-20 温湿度传感器

智能型温湿度变送器的传感器采用高端进口传感器,探测范围宽,可对温湿度进行精确测量,使用温度补偿电路,产品工作稳定可靠。 应用于办公室,机房,仓库,医院,档案馆,博物馆,智能楼宇等室内环境的温湿度测量。

星仪传感器 CWS28 温湿度变送器

星仪CWS28户外型温湿度与大气压力一体式变送器是集成了温湿度与大气压力传感器为一体的综合性变送器,其质量卓越,适合各种户外温湿度与大气压力的监测,具备供电范围宽、耐候性强等优点。

河北隆运通 叶面温湿度传感器 温湿度传感器

叶面温湿度传感器是一款复合型传感器,可以同时准确地测量叶面温度和叶面湿度。

PCE Instruments PCE-TH 5 温湿度传感器

热湿度计来测量温度和湿度\ / \ / \ nAdditional内部传感器:测定露点和湿球温度\ / \ / \ nMin数据保持功能,最大和平均函数\ /电池储蓄函数作为一个普遍的温湿度计,PCE-TH5热湿度计使测量环境温度,湿度,露点和湿球温度。热湿度计通过内部传感器测量温度和湿度,允许计算露点和湿球温度。由于具有数据保存功能,您可以在显示器中存储测量值。易于阅读的显示器还显示最小,最大和平均测量。该pc - th 5温湿度表是由一个长寿命锂电池供电的自动切断后,15分钟的不活动。

MultiIR 麦乐克 无线温湿度传感器 智能传感器

用于检测温温度度变化的传感器,把当前检测到温湿度显示出来,传感器还可以向网关发送报环境温湿度信号,并通过网关传送至你手机上,适用于家居、银行、酒店、办公等场所。

安传物联 LoRa无线温湿度传感器 温湿度传感器

AC103无线温湿度传感器,采用高性能低功耗单片机STM8L。兼顾传感数据采集和无线数据传输.可以设置温度湿度在一定范围内,如果超出这个范围,传感设备就报警上报,方便客户实时检测温湿度数据 AC103无线温湿度传感器具备本地存储功能,每条上传的数据都会在设备中保存此产品内置低功耗高精度数字温湿度传感芯片,测量和精度范围为:温度在-10℃到85℃范围内,精度为±0.5℃(最大),在-40℃到+125℃范围内;湿度在0%RH到90%RH范围内,精度为±5%RH(最大以上是AC103无线温湿度传感器的主要特点

评论

您需要登录才可以回复|注册

提交评论

广告
提取码
复制提取码
点击跳转至百度网盘