DS18B20使用教程_第1頁
DS18B20使用教程_第2頁
DS18B20使用教程_第3頁
DS18B20使用教程_第4頁
DS18B20使用教程_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1.2.3.4.5.DS18B20的管腳排列的管腳排列1. GND為電源為電源 地;地;2. DQ為數字信號輸入輸出端;為數字信號輸入輸出端;3. VDD為外接供電電源輸入端為外接供電電源輸入端(在寄生電源接線方式時接地,(在寄生電源接線方式時接地, 6.寄生電源工作方式寄生電源工作方式 (電源從(電源從IO口上獲得)口上獲得)注意:當溫度高于注意:當溫度高于 時,不能使用寄生電源,因為此時時,不能使用寄生電源,因為此時器件中較大的漏電流會使總線不能可靠檢測高低電平,從而導致器件中較大的漏電流會使總線不能可靠檢測高低電平,從而導致數據傳輸誤碼率的增大。數據傳輸誤碼率的增大。 外接電源工作方式外

2、接電源工作方式 7.(因為我們開發板上P0P3口均有上拉電阻 所以此處沒有畫出)8.9.10.配置寄存器與分辨率關系表11.12.13.主機首先發出一個主機首先發出一個480960微秒的低電平脈沖,然后釋放總線變為高電平,并在隨后微秒的低電平脈沖,然后釋放總線變為高電平,并在隨后的的480微秒時間內對總線進行檢測,如果有低電平出現說明總線上有器件已做出應答。微秒時間內對總線進行檢測,如果有低電平出現說明總線上有器件已做出應答。若無低電平出現一直都是高電平說明總線上無器件應答。若無低電平出現一直都是高電平說明總線上無器件應答。做為從器件的做為從器件的DS18B20在一上電后就一直在檢測總線上是否

3、有在一上電后就一直在檢測總線上是否有480960微秒的低微秒的低電平出現,如果有,在總線轉為高電平后等待電平出現,如果有,在總線轉為高電平后等待1560微秒后將總線電平拉低微秒后將總線電平拉低60240微微秒做出響應存在脈沖,告訴主機本器件已做好準備。若沒有檢測到就一直在檢測等待。秒做出響應存在脈沖,告訴主機本器件已做好準備。若沒有檢測到就一直在檢測等待。 14.15.16.DS18B20 單線通信功能是分時完成的,他有嚴格的時隙概念,如果出現序列混亂,單線通信功能是分時完成的,他有嚴格的時隙概念,如果出現序列混亂, 1-WIRE 器件將不響應主機,因此讀寫時序很重要。系統對器件將不響應主機,

4、因此讀寫時序很重要。系統對 DS18B20 的各種操作必的各種操作必須按協議進行。根據須按協議進行。根據 DS18B20 的協議規定,微控制器控制的協議規定,微控制器控制 DS18B20 完成溫度的轉換完成溫度的轉換必須經過以下必須經過以下 4 個步驟個步驟 :()每次讀寫前對()每次讀寫前對 DS18B20 進行復位初始化。復位要求主進行復位初始化。復位要求主 CPU 將數據線將數據線下拉下拉 500us ,然后釋放,然后釋放, DS18B20 收到信號后等待收到信號后等待 16us60us 左右,然后發出左右,然后發出 60us240us 的存在低脈沖,主的存在低脈沖,主 CPU 收到此信

5、號后表示復位成功。收到此信號后表示復位成功。()發送一條()發送一條 ROM 指令指令17.DS18B20 的存儲器指令集的存儲器指令集 18.19.在這里說明一下,第二步跳過對在這里說明一下,第二步跳過對ROM操作的命令是在總線上只有一個器件時,操作的命令是在總線上只有一個器件時,為節省時間而簡化的操作,若總線上不止一個器件,那么跳過為節省時間而簡化的操作,若總線上不止一個器件,那么跳過ROM操作命令將操作命令將會使幾器件同時響應,這樣就會出現數據沖突。會使幾器件同時響應,這樣就會出現數據沖突。20.bit Init_DS18B20(void) bit flag; /儲存儲存DS18B20是

6、否存在的標志,是否存在的標志,flag=0,存在;,存在;flag=1,不存在,不存在 DQ = 1; /先將數據線拉高先將數據線拉高 for(time=0;time2;time+) ;/略微延時約略微延時約6微秒微秒/再將數據線從高拉低,要求保持再將數據線從高拉低,要求保持480960usDQ = 0; for(time=0;time200;time+) ; /略微延時約略微延時約600微秒微秒/以向以向DS18B20發出一持續發出一持續480960us的低電平復位脈沖的低電平復位脈沖 DQ = 1; /釋放數據線(將數據線拉高)釋放數據線(將數據線拉高) for(time=0;time10

7、;time+) ; /延時約延時約30us(釋放總線后需等待(釋放總線后需等待1560us讓讓DS18B20輸出輸出存在脈沖)存在脈沖)flag=DQ; /讓單片機檢測是否輸出了存在脈沖(讓單片機檢測是否輸出了存在脈沖(DQ=0表示存在)表示存在) for(time=0;time200;time+) ; /延時足夠長時間,等待存在脈沖輸出完畢延時足夠長時間,等待存在脈沖輸出完畢return (flag); /返回檢測成功標志返回檢測成功標志 21.unsigned char ReadOneChar(void) unsigned char i=0;unsigned char dat; /儲存讀出

8、的一個字節數據儲存讀出的一個字節數據for (i=0;i8;i+) DQ =1; / 先將數據線拉高先將數據線拉高 _nop_(); /等待一個機器周期等待一個機器周期 DQ = 0; /單片機從單片機從DS18B20讀書據時讀書據時,將數據線從高拉低即啟動讀時序將數據線從高拉低即啟動讀時序 _nop_(); /等待一個機器周期等待一個機器周期 DQ = 1; /將數據線將數據線人為人為拉高拉高,為單片機檢測為單片機檢測DS18B20的輸出電平作準備的輸出電平作準備 for(time=0;time=1; if(DQ=1) dat|=0 x80; /如果讀到的數據是如果讀到的數據是1,則將,則將

9、1存入存入datelsedat|=0 x00;/如果讀到的數據是如果讀到的數據是0,則將,則將0存入存入dat for(time=0;time8;time+); /延時延時3us,兩個讀時序之間必須有大于兩個讀時序之間必須有大于1us的恢復期的恢復期 return(dat); /返回讀出的十六進制數據返回讀出的十六進制數據22.unsigned char ReadOneChar(void) unsigned char i=0;unsigned char dat; /儲存讀出的一個字節數據儲存讀出的一個字節數據for (i=0;i8;i+) DQ =1; / 先將數據線拉高先將數據線拉高 _no

10、p_(); /等待一個機器周期等待一個機器周期 DQ = 0; /單片機從單片機從DS18B20讀書據時讀書據時,將數據線從高拉低即啟動讀時序將數據線從高拉低即啟動讀時序 _nop_(); /等待一個機器周期等待一個機器周期 DQ = 1; /將數據線將數據線人為人為拉高拉高,為單片機檢測為單片機檢測DS18B20的輸出電平作準備的輸出電平作準備 for(time=0;time=1; if(DQ=1) dat|=0 x80; /如果讀到的數據是如果讀到的數據是1,則將,則將1存入存入datelsedat|=0 x00;/如果讀到的數據是如果讀到的數據是0,則將,則將0存入存入dat for(t

11、ime=0;time8;time+); /延時延時3us,兩個讀時序之間必須有大于兩個讀時序之間必須有大于1us的恢復期的恢復期 return(dat); /返回讀出的十六進制數據返回讀出的十六進制數據23.WriteOneChar(unsigned char dat) unsigned char i=0;for (i=0; i8; i+) DQ =1; / 先將數據線拉高先將數據線拉高 _nop_(); /等待一個機器周期等待一個機器周期 DQ=0; /將數據線從高拉低時即啟動寫時序將數據線從高拉低時即啟動寫時序 DQ=dat&0 x01; /利用與運算取出要寫的某位二進制數據利用與運算取出要寫的某位二進制數據, /并將其送到數據線上等待并將其送到數據線上等待DS18B20采樣采樣 for(time=0;time10;time+) ;/延

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論