本程序使用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输出的结果: