基於STM32與DS18B20的溫度採集

2021-07-10 11:51:23 字數 2038 閱讀 9553

#include "headfile.h"

void beep_init()//蜂鳴器初始化

void key_init()//按鍵初始化

#define mode gpio_readinputdatabit(gpioa,gpio_pin_2)//模式切換按鍵

#define cancel gpio_readinputdatabit(gpioa,gpio_pin_3)//處理警報按鍵

#define add gpio_readinputdatabit(gpioa,gpio_pin_4) //加按鍵

#define sub gpio_readinputdatabit(gpioa,gpio_pin_5) //減按鍵

int temperature_high=100,temperature_low=0;

uint8_t flag=0;

uint8_t high_set=1,cancel=0;

void keyscan()

}if(cancel==0) //如果檢測到低電平,說明按鍵按下

}if(add==0) //如果檢測到低電平,說明按鍵按下

}if(sub==0) //如果檢測到低電平,說明按鍵按下

}} int temper=0;

uint8_t danger_flag=0;

void state_check()

if(cnt>=50)

else

}}#include "headfile.h"

#include "ds18b20.h"

#define enableint()

#define disableint()

#define ds_port gpioa

#define ds_dqio gpio_pin_1

#define ds_rcc_port rcc_apb2periph_gpioa

#define ds_precision 0x7f //精度配置暫存器 1f=9位; 3f=10位; 5f=11位; 7f=12位;

#define ds_alarmth 0x64

#define ds_alarmtl 0x8a

#define ds_convert_tick 1000

#define resetdq() gpio_resetbits(ds_port,ds_dqio)

#define setdq() gpio_setbits(ds_port,ds_dqio)

#define getdq() gpio_readinputdatabit(ds_port,ds_dqio)

//static unsigned char tempx_tab[16]=;

void delay_us(u32 nus)

unsigned char resetds18b20(void)

void ds18b20writebyte(unsigned char dat) }

unsigned char ds18b20readbyte(void)

return dat;

}void readrom(unsigned char *read_addr)

}void ds18b20init(unsigned char precision,unsigned char alarmth,unsigned char alarmtl)

void ds18b20startconvert(void)

void ds18b20_configuration(void)

void ds18b20_start(void)

float ds18b20_read(void)

temperature = temperaturel/16+temperatureh*16; //整數部分

ds18b20startconvert();

if(fg==0) temperature*=-1;

return temperature;

}

DS18B20溫度測量

1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入開始轉換的功能命令,0x44。4.延遲大約 750 900 毫秒 1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入讀暫存的功能命令,0xbe。4.讀入第 0 個位元組 ls byte,轉換...

DS18B20溫度換算

dsi8b20接收到溫度轉換命令後,開始啟動轉換。轉換完成後的溫度值就以16位帶符號擴充套件的二進位制補碼形式儲存在高速暫存儲存器的0,1位元組。微控制器可通過單線介面讀到該資料,讀取時低位在前,高位在後,資料格式以0 062 5 lsb形式表示。溫度值格式如表2.2.1所示,其中 s 為標誌位,對...

ds18b20驅動配置

初始化時序 void ds18b20 rst void 返回1 沒有檢測到ds18b20的存在返回0 存在 u8 ds18b20 check void if retry 200 return1 else retry 0 while ds18b20 dq in retry 240 if retry 2...