完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
例程下载:
资料包括程序、相关说明资料以及软件使用截图 百度云链接:http://pan.baidu.com/s/1i574oPv 密码:r3s3 (硬石YS-F1Pro开发板HAL库例程持续更新2. 软件设计之高级裸机例程(HAL库版本)YSF1_HAL-105. OneWire_DHT11温湿度传感器) /** ****************************************************************************** * 硬石YS-F1Pro开发板例程功能说明 * * 例程名称: YSF1_HAL-105. OneWire_DHT11温湿度传感器 * ****************************************************************************** * 说明: * 本例程配套硬石STM32开发板YS-F1Pro使用。 * * 淘宝: * 论坛:硬石电子社区 * 版权归硬石嵌入式开发团队所有,请勿商用。 ****************************************************************************** */ 【1】例程简介 DHT11温湿度传感器 【2】跳线帽情况 ******* 为保证例程正常运行,必须插入以下跳线帽 ********** 丝印编号 IO端口 目标功能引脚 出厂默认设置 JP1 PA10 TXD(CH340G) 已接入 JP2 PA9 RXD(CH340G) 已接入 JP6 PD3 AM2303/DS18B20 已接入 【3】操作及现象 将DHT11温湿度传感器插入到开发板上的U13接口上,使用开发板配套的MINI USB线连接到开 发板标示“调试串口”字样的MIMI USB接口(需要安装驱动),在电脑端打开串口调试助手工 具,设置参数为115200 8-N-1。下载完程序之后,在串口调试助手窗口可接收到信息。 评分
|
||
相关推荐
|
||
bsp_DHT11.h文件内容
#ifndef __ONEWIRE_DHT11_H__ #define __ONEWIRE_DHT11_H__ /* 包含头文件 ----------------------------------------------------------------*/ #include "stm32f1xx_hal.h" /* 类型定义 ------------------------------------------------------------------*/ /************************ DHT11 数据类型定义******************************/ typedef struct { uint8_t humi_high8bit; //原始数据:湿度高8位 uint8_t humi_low8bit; //原始数据:湿度低8位 uint8_t temp_high8bit; //原始数据:温度高8位 uint8_t temp_low8bit; //原始数据:温度高8位 uint8_t check_sum; //校验和 float humidity; //实际湿度 float temperature; //实际温度 } DHT11_Data_TypeDef; /* 宏定义 -------------------------------------------------------------------*/ /*********************** DHT11 连接引脚定义 **************************/ #define DHT11_Dout_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() #define DHT11_Dout_PORT GPIOD #define DHT11_Dout_PIN GPIO_PIN_3 /*********************** DHT11 函数宏定义 ****************************/ #define DHT11_Dout_LOW() HAL_GPIO_WritePin(DHT11_Dout_PORT,DHT11_Dout_PIN,GPIO_PIN_RESET) #define DHT11_Dout_HIGH() HAL_GPIO_WritePin(DHT11_Dout_PORT,DHT11_Dout_PIN,GPIO_PIN_SET) #define DHT11_Data_IN() HAL_GPIO_ReadPin(DHT11_Dout_PORT,DHT11_Dout_PIN) /* 扩展变量 ------------------------------------------------------------------*/ /* 函数声明 ------------------------------------------------------------------*/ void DHT11_Init( void ); uint8_t DHT11_Read_TempAndHumidity(DHT11_Data_TypeDef * DHT11_Data); #endif /* __ONEWIRE_DHT11_H__ */ /******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/ |
|
|
|
|
|
bsp_DHT11.c文件内容
/** ****************************************************************************** * 文件名程: bsp_DHT11.c * 作 者: 硬石嵌入式开发团队 * 版 本: V1.0 * 编写日期: 2015-10-04 * 功 能: DHT11温湿度传感器底层驱动程序 ****************************************************************************** * 说明: * 本例程配套硬石stm32开发板YS-F1Pro使用。 * * 淘宝: * 论坛:http://www.ing10bbs.com * 版权归硬石嵌入式开发团队所有,请勿商用。 ****************************************************************************** */ /* 包含头文件 ----------------------------------------------------------------*/ #include "DHT11/bsp_DHT11.h" /* 私有类型定义 --------------------------------------------------------------*/ /* 私有宏定义 ----------------------------------------------------------------*/ #define Delay_ms(x) HAL_Delay(x) /* 私有变量 ------------------------------------------------------------------*/ /* 扩展变量 ------------------------------------------------------------------*/ /* 私有函数原形 --------------------------------------------------------------*/ static void DHT11_Mode_IPU(void); static void DHT11_Mode_Out_PP(void); static uint8_t DHT11_ReadByte(void); /* 函数体 --------------------------------------------------------------------*/ /** * 函数功能: * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */ static void DHT11_Delay(uint16_t time) { uint8_t i; while(time) { for (i = 0; i < 10; i++) { } time--; } } /** * 函数功能: DHT11 初始化函数 * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */ void DHT11_Init ( void ) { DHT11_Dout_GPIO_CLK_ENABLE(); DHT11_Mode_Out_PP(); DHT11_Dout_HIGH(); // 拉高GPIO } /** * 函数功能: 使DHT11-DATA引脚变为上拉输入模式 * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */ static void DHT11_Mode_IPU(void) { GPIO_InitTypeDef GPIO_InitStruct; /* 串口外设功能GPIO配置 */ GPIO_InitStruct.Pin = DHT11_Dout_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(DHT11_Dout_PORT, &GPIO_InitStruct); } /** * 函数功能: 使DHT11-DATA引脚变为推挽输出模式 * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */ static void DHT11_Mode_Out_PP(void) { GPIO_InitTypeDef GPIO_InitStruct; /* 串口外设功能GPIO配置 */ GPIO_InitStruct.Pin = DHT11_Dout_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(DHT11_Dout_PORT, &GPIO_InitStruct); } /** * 函数功能: 从DHT11读取一个字节,MSB先行 * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */ static uint8_t DHT11_ReadByte ( void ) { uint8_t i, temp=0; for(i=0;i<8;i++) { /*每bit以50us低电平标置开始,轮询直到从机发出 的50us 低电平 结束*/ while(DHT11_Data_IN()==GPIO_PIN_RESET); /*DHT11 以26~28us的高电平表示“0”,以70us高电平表示“1”, *通过检测 x us后的电平即可区别这两个状 ,x 即下面的延时 */ DHT11_Delay(40); //延时x us 这个延时需要大于数据0持续的时间即可 if(DHT11_Data_IN()==GPIO_PIN_SET)/* x us后仍为高电平表示数据“1” */ { /* 等待数据1的高电平结束 */ while(DHT11_Data_IN()==GPIO_PIN_SET); temp|=(uint8_t)(0x01<<(7-i)); //把第7-i位置1,MSB先行 } else // x us后为低电平表示数据“0” { temp&=(uint8_t)~(0x01<<(7-i)); //把第7-i位置0,MSB先行 } } return temp; } /* * * */ /** * 函数功能: 一次完整的数据传输为40bit,高位先出 * 输入参数: DHT11_Data:DHT11数据类型 * 返 回 值: ERROR: 读取出错 * SUCCESS:读取成功 * 说 明:8bit 湿度整数 + 8bit 湿度小数 + 8bit 温度整数 + 8bit 温度小数 + 8bit 校验和 */ uint8_t DHT11_Read_TempAndHumidity(DHT11_Data_TypeDef *DHT11_Data) { uint8_t temp; uint16_t humi_temp; /*输出模式*/ DHT11_Mode_Out_PP(); /*主机拉低*/ DHT11_Dout_LOW(); /*延时18ms*/ Delay_ms(18); /*总线拉高 主机延时30us*/ DHT11_Dout_HIGH(); DHT11_Delay(30); //延时30us /*主机设为输入 判断从机响应信号*/ DHT11_Mode_IPU(); /*判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行*/ if(DHT11_Data_IN()==GPIO_PIN_RESET) { /*轮询直到从机发出 的80us 低电平 响应信号结束*/ while(DHT11_Data_IN()==GPIO_PIN_RESET); /*轮询直到从机发出的 80us 高电平 标置信号结束*/ while(DHT11_Data_IN()==GPIO_PIN_SET); /*开始接收数据*/ DHT11_Data->humi_high8bit= DHT11_ReadByte(); DHT11_Data->humi_low8bit = DHT11_ReadByte(); DHT11_Data->temp_high8bit= DHT11_ReadByte(); DHT11_Data->temp_low8bit = DHT11_ReadByte(); DHT11_Data->check_sum = DHT11_ReadByte(); /*读取结束,引脚改为输出模式*/ DHT11_Mode_Out_PP(); /*主机拉高*/ DHT11_Dout_HIGH(); /* 对数据进行处理 */ humi_temp=DHT11_Data->humi_high8bit*100+DHT11_Data->humi_low8bit; DHT11_Data->humidity =(float)humi_temp/100; humi_temp=DHT11_Data->temp_high8bit*100+DHT11_Data->temp_low8bit; DHT11_Data->temperature=(float)humi_temp/100; /*检查读取的数据是否正确*/ temp = DHT11_Data->humi_high8bit + DHT11_Data->humi_low8bit + DHT11_Data->temp_high8bit+ DHT11_Data->temp_low8bit; if(DHT11_Data->check_sum==temp) { return SUCCESS; } else return ERROR; } else return ERROR; } /******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/ |
|
|
|
|
|
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12012 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:52 , Processed in 0.633557 second(s), Total 53, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号