1. 實物圖
2. 64位(激)光刻唯讀儲存器
開始8位(28h)是產品型別標號,接著的48位是該ds18b20自身的序列號,最後8位是前面56位的迴圈冗餘校驗碼
光刻rom的作用是使每乙個ds18b20都各不相同,這樣就可以實現一根匯流排上掛接多個ds18b20的目的
3. 溫度暫存器
高位元組的前5位是符號位,如果測得的溫度大於0,這5位為『0』,只要將測到的數值乘以0.0625即可得到實際溫度;如果溫度小於0,這5位為『1』,測到的數值需要先減1再取反再乘以0.0625即可得到實際溫度
4. 溫度與資料關係
12-bit精度,0x550 * 0.0625 = 85
5. 精度暫存器
6. rom指令表
7. ram指令表
8. 時序圖
初始化:
1.資料線拉到低電平「0」2.延時480微秒(該時間的時間範圍可以從480到960微秒)
3.資料線拉到高電平「1」
4.延時等待80微秒。如果初始化成功則在15到60微秒時間內產生乙個由ds18b20所返回的低電平「0」。根據該狀態可以來確定它的存在,但是應注意不能無限的進行等待,不然會使程式進入死迴圈
5.若cpu讀到了資料線上的低電平「0」後,還要做延時,其延時的時間從發出的高電平算起(第3步的時間算起)最少要480微秒
讀:
1.將資料線拉低「0」2.延時1微秒
3.將資料線拉高「1」,釋放匯流排準備讀資料
4.延時15微秒
5.讀資料線的狀態得到1個狀態位,並進行資料處理
6.延時45微秒
7.重複1~6步驟,直到讀完乙個位元組
寫:
1.資料線先置低電平「0」9. 舉例2.延時1微秒
3.按從低位到高位的順序傳送資料(一次只傳送一位)
4.延時60微秒
5.將資料線拉到高電平
6.延時1微秒
7.重複1~6步驟,直到傳送完整的位元組
sbit dsport = p3 ^ 7;
u8 ds18b20init()
}return1;}
void ds18b20write(u8 d)
return;
}
u8 ds18b20read()
return d;
}
void ds18b20changetemp()
void ds18b20readtemp()
int readtemp()
溫度感測器DS18B20使用
因為乙個專案用到了ds18b20溫度感測器,剛開始使用之處,第一次對單線感測器進行控制,毫無經驗,也是碰了一頭灰,摔了一些坑。總結一下使用心得。ds18b20是單線數位化溫度感測器。溫度採集的控制介面為1位,通過該位可進行溫度資料的讀取,以及9 12位解析度的設定,對應的精度為0.5 c 0.016...
溫度感測器DS18B20讀寫
1.復位 主機傳送480us 960us的低電平,然後設定埠為高電平,釋放匯流排。溫度感測器接收到復位訊號,等待15 60us,拉低匯流排,發出60 240us的復位應答脈衝。主機讀取匯流排電平是否為低,如果為低,則判定溫度感測器復位。2.讀1bit資料 主機產生乙個下降沿,低電平維持至少1us,之...
DS18B20溫度感測器程式設計
本程式對應的開發板為藍橋杯嵌入式開發板stm32f103rbt6,為中型mcu。ds18b20是單線介面數字溫度感測器,具體特徵如下圖。ds18b20包括寄生電源電路 64位rom和單線介面電路 暫存器 eeprom 8位crc生成器和溫度感測器等。寄生電源電路可以實現外部電源供電和單線寄生供電,6...