STM32F407入门开发:使用DS18B20温度传感器的应用

111 篇文章 ¥59.90 ¥99.00
本文介绍了在STM32F407微控制器上使用DS18B20温度传感器进行环境温度测量的方法。通过1-Wire协议,仅需一个GPIO引脚即可实现通信。内容包括硬件连接和GPIO引脚初始化的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嵌入式系统的开发常常涉及与各种传感器的交互,而温度传感器是其中一类常用的传感器之一。本文将介绍如何在STM32F407微控制器上使用DS18B20温度传感器,以获取环境温度数据。我们将提供详细的代码示例,帮助你快速入门。

DS18B20温度传感器是一款数字温度传感器,它能够以数字方式输出温度数值。该传感器基于1-Wire总线协议,这意味着我们只需要使用一个GPIO引脚即可与传感器进行通信。

以下是使用STM32F407与DS18B20温度传感器进行通信的步骤:

  1. 硬件连接:
    首先,将DS18B20温度传感器的引脚连接到STM32F407微控制器上。将DS18B20的VCC引脚连接到STM32F407的3.3V电源引脚,将GND引脚连接到GND引脚,将DQ(数据引脚)连接到STM32F407的GPIO引脚。

  2. 初始化GPIO引脚:
    在代码脚:
    在代码中,我们首先需要初始化用于与DS18脚:
    在代码中,我们首先需要初始化用于与DS18B20通信的GPIO引脚。下脚:
    在代码中,我们首先需要初始化用于与DS18B20通信的GPIO引脚。下面是一个示例代码片段,展示脚:
    在代码中,我们首先需要初始化用于与DS18B20通信的GPIO引脚。下面是一个示例代码片段,展示了如何初始化GPIO引脚:

脚:
在代码中,我们首先需要初始化用于与DS18B20通信的GPIO引脚。下面是一个示例代码片段,展示了如何初始化GPIO引脚:

STM32F407单片机读写 DS18B20温度传感器 并串口屏显示DEMO软件例程源码,可以做为你的学习设计参考。 int main(void) { uint8_t DS18B20ID[8]; float temperature; /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); HMI_USARTx_Init(); while(DS18B20_Init()) { printf("DS18B20温度传感器不存在\n"); HAL_Delay(1000); } printf("检测到DS18B20温度传感器,并初始化成功\n"); DS18B20_ReadId(DS18B20ID); /* 无限循环 */ while (1) { temperature=DS18B20_GetTemp_MatchRom(DS18B20ID); /* 打印通过 DS18B20 序列号获取的温度值 */ printf("获取该序列号器件的温度:%.1f\n",temperature); HMI_value_setting("page1.gross.val",temperature*10); HAL_Delay(1000); } } /** * 函数功能: 向串口屏发送数据 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */ void HMI_value_setting(const char *val_str,uint32_t value) { uint8_t tmp_str[30]={0}; uint8_t i; sprintf((char *)tmp_str,"%s=%d",val_str,value); for(i=0;iDR=tmp_str[i]; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } /** * 函数功能: 向串口屏发送浮点数据 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */ void HMI_string_setting(const char *val_str,int32_t value) { uint8_t tmp_str[50]={0}; uint8_t i; float temp=(float)value; sprintf((char *)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值