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输出的结果:
在这里插入图片描述

发布了17 篇原创文章 · 获赞 47 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42827999/article/details/89430464