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