#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...