)初始化時序
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>=
240)
return1;
return0;
}
匯流排控制器初始化寫時序後,ds18b20在乙個15us到60us的視窗對i/o線取樣。如果線上是高電平,就是寫1。如果線上是低電平,就是寫0.
返回值:1/0
u8 ds18b20_read_bit
(void
)return dat;
}
寫1或者寫0,所有的時序必須最少持續60us,包括兩個寫週期之間最少1us的恢復時間。匯流排控制器把資料線從高電平拉倒低電平的時候,寫時序開始。
寫1:匯流排控制器要生產乙個寫1時序,必須把資料線拉倒低電平然後釋放。在寫時序開始後的15us內釋放匯流排,當匯流排被釋放的時候,上拉電阻將拉高匯流排。
寫0:匯流排控制器要生成乙個寫0時序,必須把資料線拉倒低電平保持(至少60us)
//dat 寫入的資料
else
}}
void
ds18b20_start
(void
)
//double atem;
short tem;
short
ds18b20_get_temp
(void
)else temp=1;
//溫度為正
tem=th;
//獲得高八位
tem<<=
8;
tem+
=tl;
//獲得底八位
tem=
(double
)tem*
0.625
;//轉換
// atem=tem;
if(temp)
return tem;
//返回溫度值
else
return
-tem;
}
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驅動根據資料手冊編寫
include sbit ds18b20 p1 4 void delay ds18b20 unsigned int x void ds18b20 res void 溫度計初始化 void ds18b20 write bit unsigned char x 溫度計寫入資料所用的函式 ds18b20 1...