stm32F429HAL库使用DS18B20输出温度到电脑串口助手

本程序使用DS18B20数字温度传感器把温度值输出到电脑的窗口调试助手上,程序是更改原子哥的例程。

  • stm32f29HAL库
  • DS18B20数字温度传感器
  • 串口调试助手

由于移植的程序没有过多的更改,这里直接就贴程序了,删除了显示屏LCD和SRAM的相关函数,其他没改多少,主程序如下:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "ds18b20.h"
#include "pcf8574.h"

int main(void)
{
	u8 t=0;			    
	short temperature;  
	HAL_Init();                     //初始化HAL库   
    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
    delay_init(180);                //初始化延时函数
    uart_init(115200);              //初始化USART
    LED_Init();                     //初始化LED 
    
    PCF8574_Init();                 //初始化PCF8574
   		
    PCF8574_ReadBit(BEEP_IO);       //由于DS18B20和PCF8574的中断引脚共用一个IO,
                                    //所以在初始化DS18B20之前要先读取一次PCF8574的任意一个IO,
                                    //使其释放掉中断引脚所占用的IO(PB12引脚),否则初始化DS18B20会出问题
	while(DS18B20_Init());	        //DS18B20初始化	
	   
	
	while(1)
	{	    	    
		if(t%10==0)//每100ms读取一次
		{		
			PCF8574_ReadBit(BEEP_IO);   //读取一次PCF8574的任意一个IO,使其释放掉PB12引脚,否则读取DS18B20可能会出问题
		    temperature=DS18B20_Get_Temp();	
			if(temperature<0)
			{
				temperature=-temperature;					//转为正数
			}
            printf("the tempture is %.2f\r\n",temperature/10.0);//输出的温度为两位小数
		}				   
		delay_ms(100);
		t++;
		if(t==20)
		{
			t=0;
			LED0=!LED0;
		}
	}						    
}

这个是还没加%.2f输出的结果:
在这里插入图片描述

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: STM32HAL库可以用来驱动DS18B20温度传感器。DS18B20是一种数字温度传感器,可以通过一根数据线进行通信。以下是使用STM32HAL库驱动DS18B20的步骤: 1. 配置GPIO口为输出模式,并将数据线拉低一段时间(至少480us)。 2. 将数据线拉高,等待一段时间(至少60us)。 3. 配置GPIO口为输入模式,并等待DS18B20的响应信号(15-60us内拉低数据线)。 4. DS18B20发送数据,STM32HAL库读取数据并进行解析,得到温度值。 5. 关闭总线,将GPIO口配置为输出模式,将数据线拉高。 以上是使用STM32HAL库驱动DS18B20的基本步骤,具体实现可以参考STM32HAL库的相关文档和示例代码。 ### 回答2: DS18B20是一种数字温度传感器,可通过OneWire总线进行通信。使用STM32HAL库中提供的函数可以轻松地驱动DS18B20。 首先,需要在STM32上设置GPIO端口为输出模式,初始化OneWire总线。使用HAL_GPIO_WritePin函数将总线线置为低电平,以开始通信。在总线线为低电平时,发送指令之前应等待至少480微秒。可以使用HAL_Delay函数来实现这个等待。 然后,发送读温度指令,该指令由8个比特组成,其中第一个比特为复位信号,后面的7个比特为功能码0x44。使用HAL_GPIO_WritePin函数将总线线拉到高电平,然后使用HAL_GPIO_ReadPin函数读取总线线的状态。 在发送读温度指令后,DS18B20将在约750毫秒内测量并转换温度,并将其存储在其内部RAM中。可以使用相同的OneWire总线来读取温度数据。 读取温度数据的过程是读取68个比特的数据。先发送读取ROM地址指令(0x33),然后读取DS18B20的ROM信息。发送读取温度数据指令(0x44)后,读取16位数据,其中低8位为温度数据的整数部分,高8位为小数部分。 使用STM32HAL库中提供的函数和上述步骤,可以轻松地驱动DS18B20,并从中读取温度数据。当然,代码中应包含错误处理,以确保温度测量过程不会出现问题。 ### 回答3: STM32HAL库是针对STM32系列微控制器的一套开发库,其中包含了各种外设的驱动库,包括DS18B20的驱动库。DS18B20是一种数字温度传感器,采用1-Wire串行总线进行通信。在使用STM32HAL库驱动DS18B20时,需要进行以下步骤: 1. 确定DS18B20连接到STM32的引脚:DS18B20使用单线通信方式,其中引脚包括VDD、GND和DQ(数据线)。DQ需要连接到STM32 GPIO引脚上。 2. 配置STM32 GPIO引脚:使用HAL库的GPIO_Init()函数配置STM32的GPIO引脚,使其能够与DS18B20进行通信。设置引脚为输出模式,并将其电平拉高。 3. 发送复位脉冲并读取DS18B20的ROM码:复位脉冲是指在数据总线上产生一个低电平脉冲,用于初始化传感器的状态。复位脉冲需要保持至少480微秒,并在复位结束后读取DS18B20的ROM码。 4. 配置DS18B20的分辨率和触发温度转换:DS18B20的分辨率可以设置为9、10、11或12位,并且DS18B20可以通过读写调节配置寄存器的方式来实现其分辨率设置和触发转换。 5. 发送温度转换指令并读取结果:在触发温度转换之前需要发送一个片选脉冲,然后将指令字节发送到DS18B20温度转换需要一定的时间,可以使用DS18B20芯片内部的计时功能来检测转换是否完成,并读取温度值。 总之,使用STM32HAL库驱动DS18B20需要通过合适的GPIO端口进行传输,进行各种参数的设置,并调用HAL库的相关函数来操作DS18B20,最终将温度值反馈到STM32中。通过熟练掌握DS18B20的规格说明书和STM32HAL库的API手册,可以很好地完成这项任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值