特點:
通訊方式:1-wire單匯流排通訊
每個ds18b20都有唯一的64為序列號儲存在板載rom(唯讀儲存器)中;
無需外部器件
電源範圍3.0v~5.5v
可以測量的範圍是-55℃~+125℃(攝氏度);
在-10~+85℃範圍內精確度為±0.5℃;
溫度計解析度可以(通過程式設計)設定為9~12位工作模式,12位時解析度對應為0.0625℃;
/這裡咱們及時一下解析度:只要器件檢測到的溫度變化超過0.0625攝氏度(12位工作模式),最小刻度值就會加1,如果設定為0.5攝氏度工作模式
,溫度每變化0.5℃,最小刻度變化為1/
第一種:
工作在寄生於下的典型接法:ds18b20的gnd和vdd都接地,為了提高ds18b20的工作電流,在單匯流排上接上乙個帶場效電晶體的強上拉電路提供上拉電流,
第二種:
外部接法:先對於第一種解法相對於比較簡單,可以節省微控制器管腳;
單匯流排時序:
ds18b20採用1-wire bus所有資料都在一條線上傳輸,因此對時序要求非常嚴格以確保資料的完整性;
1-wire訊號型別:復位脈衝,寫0,寫1,存在脈衝,讀0,讀1;(前三是由主機發出,後三是ds18b20發出,主機取樣獲取)
資料的傳輸總是從最低有效位開始;
重點來了:前面的東西都不看是可以的,畢竟我們拿到乙個器件之後雖然了解一些基礎設定是必要的,但我們最重要的是知道這個動心該怎麼用;
下面將會給大家介紹一下程式設計的思路,也就是解決問題的辦法。下面就是程式設計思路:
程式設計總體思路:1.初始化 2.rom操作指令 3. ds18b20功能指令(讀暫存器,寫暫存器)
初始化時序(初始化函式):
初始化時序裡包含復位ds18b20和接收ds18b20返回的存在訊號;
主機和ds18b20在做任何通訊之前都需要對其進行初始化。
下面,我們將會通過圖來寫程式:
/單匯流排初始化時序/
bit init_ds18b20()
/控制器寫0和1/
void write_byte(uchar dat) //注意這裡傳輸的是乙個位元組;
}/讀資料/
}/基於c語言的模組化程式設計,我們通過上面的功能模組,也即是功能函式,下面咱們來寫乙個主函式,來呼叫這些功能模組,從而實現邏輯器件的程式設計/
void main()
}一些重要的命令:
忽略rom指令(0xcc):當匯流排上只有乙個ds18b20時,忽略掉對溫感的辨別,可以直接對這個溫感進行操作,傳送指令。倘若匯流排上有大於乙個溫感,傳送0xcc將會發生資料衝突;
溫度轉換指令(0x44):主機告訴溫感,將溫度的模擬量,轉化為數字量儲存起來;
讀暫存器指令(0xbe): 主機讀取溫感暫存器內的數字值。讀取從位元組0開始,一直進行下去,知道讀完暫存器所有位元組,如果不想讀完所有位元組,控制器可以在任何時刻發出復位命令來種植讀取;
寫暫存器指令(0x4e):主機向溫感暫存器寫入資料,開始位置在th暫存器(暫存器的第2個位元組),接下來寫入tl暫存器(暫存器的第3個位元組),最後寫入配置暫存器(暫存器的第4個位元組);
拷貝暫存器指令(0x48):主機將th,tl和配置暫存器(第2,3,4位元組)的內容拷貝到eeprom中;
51微控制器ds18b20
溫度感測器是比較簡單的外設之一,學習51微控制器都會學習ds18b20來學習51的ad轉換。ds18b20是通過iic匯流排來進行通行的,屬於比較簡單的模組之一,這裡貼出ds18b20的驅動程式,呼叫時只要直接讀取對應位址的資料即可。include temp.h void delay1ms uint...
DS18B20與微控制器應用
ds18b20與微控制器應用 2012年01月19日 ds18b20溫度感測器和7個led數碼顯示程式 原創程式,請支援 org 0000h led數碼管採用動態,p0口接八個資料口,p2.0 p2.2採用3 8解碼器控制七個led tx bit p2.3 ds18b20資料口接p2.3 flag ...
51微控制器之DS18B20
一文讀懂ds18b20溫度感測器及程式設計 對於新手而言,ds18b20基本概念僅做了解,最重要的是利用微控制器對ds18b20進行程式設計,讀取溫度資訊,並把讀取到的溫度資訊利用數碼管,lcd1602或者上位機進行顯示 ds18b20是常用的數字溫度感測器,其輸出的是數碼訊號,具有體積小,硬體開銷...