DS18B20使用教程課件_第1頁
DS18B20使用教程課件_第2頁
DS18B20使用教程課件_第3頁
DS18B20使用教程課件_第4頁
DS18B20使用教程課件_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

單總線數(shù)字溫度傳感器DS18B201ppt課件單總線數(shù)字溫度傳感器DS18B201ppt課件單線總線特點單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換,控制都由這根線完成。單總線通常要求外接一個約為4.7K—10K的上拉電阻,這樣,當(dāng)總線閑置時其狀態(tài)為高電平。2ppt課件單線總線特點單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換,控制都DS18B20的特點DS18B20單線數(shù)字溫度傳感器,即“一線器件”,其具有獨特的優(yōu)點:

(1)采用單總線的接口方式與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。單總線具有經(jīng)濟(jì)性好,抗干擾能力強(qiáng),適合于惡劣環(huán)境的現(xiàn)場溫度測量,使用方便等優(yōu)點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。

(2)測量溫度范圍寬,測量精度高DS18B20的測量范圍為-55℃~+125℃;在-10~+85°C范圍內(nèi),精度為±0.5°C。

(3)在使用中不需要任何外圍元件。

(4)持多點組網(wǎng)功能多個DS18B20可以并聯(lián)在惟一的單線上,實現(xiàn)多點測溫。

(5)供電方式靈活DS18B20可以通過內(nèi)部寄生電路從數(shù)據(jù)線上獲取電源。因此,當(dāng)數(shù)據(jù)線上的時序滿足一定的要求時,可以不接外部電源,從而使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。

(6)測量參數(shù)可配置DS18B20的測量分辨率可通過程序設(shè)定9~12位。

(7)負(fù)壓特性電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。(8)掉電保護(hù)功能DS18B20內(nèi)部含有EEPROM,在系統(tǒng)掉電以后,它仍可保存分辨率及報警溫度的設(shè)定值。

DS18B20具有體積更小、適用電壓更寬、更經(jīng)濟(jì)、可選更小的封裝方式,更寬的電壓適用范圍,適合于構(gòu)建自己的經(jīng)濟(jì)的測溫系統(tǒng),因此也就被設(shè)計者們所青睞。3ppt課件DS18B20的特點DS18B20單線數(shù)字溫度傳感器,即“DS18B20內(nèi)部結(jié)構(gòu)如圖所示,主要由4部分組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,每個DS18B20的64位序列號均不相同。64位ROM的排的循環(huán)冗余校驗碼(CRC=X^8+X^5+X^4+1)。ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。4ppt課件DS18B20內(nèi)部結(jié)構(gòu)如圖所示,4ppt課件DS18B20管腳排列DS18B20的管腳排列1.GND為電源地;2.DQ為數(shù)字信號輸入/輸出端;3.VDD為外接供電電源輸入端(在寄生電源接線方式時接地,5ppt課件DS18B20管腳排列DS18B20的管腳排列5ppt課件寄生電源工作方式

(電源從IO口上獲得)注意:當(dāng)溫度高于100℃時,不能使用寄生電源,因為此時器件中較大的漏電流會使總線不能可靠檢測高低電平,從而導(dǎo)致數(shù)據(jù)傳輸誤碼率的增大。

外接電源工作方式

6ppt課件寄生電源工作方式

(電源從IO口上獲得)外接電源工作方式6銳志RZ-51V2.0開發(fā)板18B20連接示意圖(因為我們開發(fā)板上P0—P3口均有上拉電阻所以此處沒有畫出)7ppt課件銳志RZ-51V2.0開發(fā)板18B20連接示意圖(因為我們開DS18B20內(nèi)部構(gòu)成DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。

光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(地址:28H)是產(chǎn)品類型標(biāo)號,接著的48位是該DS18B20自身的序列號,并且每個DS18B20的序列號都不相同,因此它可以看作是該DS18B20的地址序列碼;最后8位則是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。由于每一個DS18B20的ROM數(shù)據(jù)都各不相同,因此微控制器就可以通過單總線對多個DS18B20進(jìn)行尋址,從而實現(xiàn)一根總線上掛接多個DS18B20的目的。8ppt課件DS18B20內(nèi)部構(gòu)成DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組DS18B20中的溫度傳感器完成對溫度的測量,用16位二進(jìn)制形式提供,形式表達(dá),其中S為符號位。例如+125℃的數(shù)字輸出為07D0H(正溫度直接吧16進(jìn)制數(shù)轉(zhuǎn)成10進(jìn)制即得到溫度值)-55℃的數(shù)字輸出為FC90H。(負(fù)溫度把得到的16進(jìn)制數(shù)取反后加1再轉(zhuǎn)成10進(jìn)制數(shù))

9ppt課件DS18B20中的溫度傳感器完成對溫度的測量,用1其中配置寄存器的格式如下:低五位一直都是"1",TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設(shè)置為0,用戶不要去改動。R1和R0用來設(shè)置分辨率,如下圖所示:(DS18B20出廠時被設(shè)置為12位)

配置寄存器與分辨率關(guān)系表

10ppt課件其中配置寄存器的格式如下:低五位一直都是"1",TM是測試高速暫存存儲器由9個字節(jié)組成,當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,對應(yīng)的溫度計算:當(dāng)符號位S=0時,直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時,先將補(bǔ)碼變?yōu)樵a,再計算十進(jìn)制值。11ppt課件高速暫存存儲器由9個字節(jié)組成,當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所DS18B20的工作時序DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲器操作指令→數(shù)據(jù)傳輸。其工作時序包括: 初始化時序 寫時序 讀時序12ppt課件DS18B20的工作時序DS18B20的一線工作協(xié)議流程是:初始化時序主機(jī)首先發(fā)出一個480-960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的480微秒時間內(nèi)對總線進(jìn)行檢測,如果有低電平出現(xiàn)說明總線上有器件已做出應(yīng)答。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應(yīng)答。

做為從器件的DS18B20在一上電后就一直在檢測總線上是否有480-960微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒有檢測到就一直在檢測等待。

13ppt課件初始化時序主機(jī)首先發(fā)出一個480-960微秒的低電平脈沖,然接下來就是主機(jī)發(fā)出各種操作命令,但各種操作命令都是向DS18B20寫0和寫1組成的命令字節(jié),接收數(shù)據(jù)時也是從DS18B20讀取0或1的過程。因此首先要搞清主機(jī)是如何進(jìn)行寫0、寫1、讀0和讀1的。寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機(jī)先把總線拉低1微秒表示寫周期開始。隨后若主機(jī)想寫0,則繼續(xù)拉低電平最少60微秒直至寫周期結(jié)束,然后釋放總線為高電平。若主機(jī)想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機(jī)的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。

對DS18B20的寫和讀操作14ppt課件接下來就是主機(jī)發(fā)出各種操作命令,但各種操作命令都是向DS18對于讀數(shù)據(jù)操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是從主機(jī)把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機(jī)在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時間內(nèi)完成對總線進(jìn)行采樣檢測,采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個讀時序過程,至少需要60us才能完成

15ppt課件對于讀數(shù)據(jù)操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是DS18B20單線通信功能是分時完成的,他有嚴(yán)格的時隙概念,如果出現(xiàn)序列混亂,1-WIRE器件將不響應(yīng)主機(jī),因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進(jìn)行。根據(jù)DS18B20的協(xié)議規(guī)定,微控制器控制DS18B20完成溫度的轉(zhuǎn)換必須經(jīng)過以下4個步驟:(1)每次讀寫前對DS18B20進(jìn)行復(fù)位初始化。復(fù)位要求主CPU將數(shù)據(jù)線下拉500us,然后釋放,DS18B20收到信號后等待16us~60us左右,然后發(fā)出

60us~240us的存在低脈沖,主CPU收到此信號后表示復(fù)位成功。(2)發(fā)送一條ROM指令16ppt課件DS18B20單線通信功能是分時完成的,他有嚴(yán)格的時隙概念(3)發(fā)送存儲器指令DS18B20的存儲器指令集

17ppt課件(3)發(fā)送存儲器指令DS18B20的存儲器指令集17pp現(xiàn)在我們要做的是讓DS18B20進(jìn)行一次溫度的轉(zhuǎn)換,那具體的操作就是:1、主機(jī)先作個復(fù)位操作,2、主機(jī)再寫跳過ROM的操作(CCH)命令,3、然后主機(jī)接著寫個轉(zhuǎn)換溫度的操作命令,后面釋放總線至少一秒,讓DS18B20完成轉(zhuǎn)換的操作。在這里要注意的是每個命令字節(jié)在寫的時候都是低字節(jié)先寫,例如CCH的二進(jìn)制為11001100,在寫到總線上時要從低位開始寫,寫的順序是“零、零、壹、壹、零、零、壹、壹”。整個操作的總線狀態(tài)如下圖。18ppt課件現(xiàn)在我們要做的是讓DS18B20進(jìn)行一次溫度的轉(zhuǎn)換,那具體的讀取RAM內(nèi)的溫度數(shù)據(jù)。同樣,這個操作也要接照三個步驟。1、主機(jī)發(fā)出復(fù)位操作并接收DS18B20的應(yīng)答(存在)脈沖。2、主機(jī)發(fā)出跳過對ROM操作的命令(CCH)。3、主機(jī)發(fā)出讀取RAM的命令(BEH),隨后主機(jī)依次讀取DS18B20發(fā)出的從第0一第8,共九個字節(jié)的數(shù)據(jù)。如果只想讀取溫度數(shù)據(jù),那在讀完第0和第1個數(shù)據(jù)后就不再理會后面DS18B20發(fā)出的數(shù)據(jù)即可。同樣讀取數(shù)據(jù)也是低位在前的。整個操作的總線狀態(tài)如下圖:

在這里說明一下,第二步跳過對ROM操作的命令是在總線上只有一個器件時,為節(jié)省時間而簡化的操作,若總線上不止一個器件,那么跳過ROM操作命令將會使幾器件同時響應(yīng),這樣就會出現(xiàn)數(shù)據(jù)沖突。19ppt課件讀取RAM內(nèi)的溫度數(shù)據(jù)。同樣,這個操作也要接照三個步驟。在這初始化時序bitInit_DS18B20(void) {bitflag;//儲存DS18B20是否存在的標(biāo)志,flag=0,存在;flag=1,不存在

DQ=1;//先將數(shù)據(jù)線拉高

for(time=0;time<2;time++);//略微延時約6微秒//再將數(shù)據(jù)線從高拉低,要求保持480~960usDQ=0;for(time=0;time<200;time++);//略微延時約600微秒//以向DS18B20發(fā)出一持續(xù)480~960us的低電平復(fù)位脈沖DQ=1;//釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高)

for(time=0;time<10;time++);//延時約30us(釋放總線后需等待15~60us讓DS18B20輸出存在脈沖)flag=DQ;//讓單片機(jī)檢測是否輸出了存在脈沖(DQ=0表示存在)

for(time=0;time<200;time++);//延時足夠長時間,等待存在脈沖輸出完畢return(flag);//返回檢測成功標(biāo)志

}20ppt課件初始化時序bitInit_DS18B20(void) 20unsignedcharReadOneChar(void){unsignedchari=0; unsignedchardat;//儲存讀出的一個字節(jié)數(shù)據(jù)

for(i=0;i<8;i++) {DQ=1;//先將數(shù)據(jù)線拉高

_nop_(); //等待一個機(jī)器周期

DQ=0;//單片機(jī)從DS18B20讀書據(jù)時,將數(shù)據(jù)線從高拉低即啟動讀時序

_nop_();//等待一個機(jī)器周期

DQ=1;//將數(shù)據(jù)線"人為"拉高,為單片機(jī)檢測DS18B20的輸出電平作準(zhǔn)備

for(time=0;time<2;time++);//延時約6us,使主機(jī)在15us內(nèi)采樣

dat>>=1; if(DQ==1) dat|=0x80;//如果讀到的數(shù)據(jù)是1,則將1存入dat else dat|=0x00;//如果讀到的數(shù)據(jù)是0,則將0存入dat for(time=0;time<8;time++);//延時3us,兩個讀時序之間必須有大于1us的恢復(fù)期

} return(dat);//返回讀出的十六進(jìn)制數(shù)據(jù)}21ppt課件unsignedcharReadOneChar(voidunsignedcharReadOneChar(void){unsignedchari=0; unsignedchardat;//儲存讀出的一個字節(jié)數(shù)據(jù)

for(i=0;i<8;i++) {DQ=1;//先將數(shù)據(jù)線拉高

_nop_(); //等待一個機(jī)器周期

DQ=0;//單片機(jī)從DS18B20讀書據(jù)時,將數(shù)據(jù)線從高拉低即啟動讀時序

_nop_();//等待一個機(jī)器周期

DQ=1;//將數(shù)據(jù)線"人為"拉高,為單片機(jī)檢測DS18B20的輸出電平作準(zhǔn)備

for(time=0;time<2;time++);//延時約6us,使主機(jī)在15us內(nèi)采樣

dat>>=1; if(DQ==1) dat|=0x80;//如果讀到的數(shù)據(jù)是1,則將1存入dat else dat|=0x00;//如果讀到的數(shù)據(jù)是0,則將0存入dat for(time=0;time<8;time++);//延時3us,兩個讀時序之間必須有大于1us的恢復(fù)期

} return(dat);//返回讀出的十六進(jìn)制數(shù)據(jù)}22ppt課件unsignedcharReadOneChar(voidWriteOneChar(unsignedchardat){unsignedchari=0; for(i=0;i<8;i++) { DQ=1;//先將數(shù)據(jù)線拉高

_nop_(); //等待一個機(jī)器周期

DQ=0;//將數(shù)據(jù)線從高拉低時即啟動寫時序

DQ=dat&0x01;//利用與運(yùn)算取出要寫的某位二進(jìn)制數(shù)據(jù),//并將其送到數(shù)據(jù)線上等待DS18B20采樣

for(time=0;time<10;time++) ;//延時約30us,DS18B20在拉低后的約15~60us期間從數(shù)據(jù)線上采樣

DQ=1;//釋放數(shù)據(jù)線

for(time=0;time<1;time++) ;//延時3us,兩個寫時序間至少需要1us的恢復(fù)期

dat>>=1;//將dat中的各二進(jìn)制位數(shù)據(jù)右移1位

} for(time=0;time<4;time++) ;//稍作延時,給硬件一點反應(yīng)時間}23ppt課件WriteOneChar(unsignedchardat單總線數(shù)字溫度傳感器DS18B2024ppt課件單總線數(shù)字溫度傳感器DS18B201ppt課件單線總線特點單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換,控制都由這根線完成。單總線通常要求外接一個約為4.7K—10K的上拉電阻,這樣,當(dāng)總線閑置時其狀態(tài)為高電平。25ppt課件單線總線特點單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換,控制都DS18B20的特點DS18B20單線數(shù)字溫度傳感器,即“一線器件”,其具有獨特的優(yōu)點:

(1)采用單總線的接口方式與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。單總線具有經(jīng)濟(jì)性好,抗干擾能力強(qiáng),適合于惡劣環(huán)境的現(xiàn)場溫度測量,使用方便等優(yōu)點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。

(2)測量溫度范圍寬,測量精度高DS18B20的測量范圍為-55℃~+125℃;在-10~+85°C范圍內(nèi),精度為±0.5°C。

(3)在使用中不需要任何外圍元件。

(4)持多點組網(wǎng)功能多個DS18B20可以并聯(lián)在惟一的單線上,實現(xiàn)多點測溫。

(5)供電方式靈活DS18B20可以通過內(nèi)部寄生電路從數(shù)據(jù)線上獲取電源。因此,當(dāng)數(shù)據(jù)線上的時序滿足一定的要求時,可以不接外部電源,從而使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。

(6)測量參數(shù)可配置DS18B20的測量分辨率可通過程序設(shè)定9~12位。

(7)負(fù)壓特性電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。(8)掉電保護(hù)功能DS18B20內(nèi)部含有EEPROM,在系統(tǒng)掉電以后,它仍可保存分辨率及報警溫度的設(shè)定值。

DS18B20具有體積更小、適用電壓更寬、更經(jīng)濟(jì)、可選更小的封裝方式,更寬的電壓適用范圍,適合于構(gòu)建自己的經(jīng)濟(jì)的測溫系統(tǒng),因此也就被設(shè)計者們所青睞。26ppt課件DS18B20的特點DS18B20單線數(shù)字溫度傳感器,即“DS18B20內(nèi)部結(jié)構(gòu)如圖所示,主要由4部分組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,每個DS18B20的64位序列號均不相同。64位ROM的排的循環(huán)冗余校驗碼(CRC=X^8+X^5+X^4+1)。ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。27ppt課件DS18B20內(nèi)部結(jié)構(gòu)如圖所示,4ppt課件DS18B20管腳排列DS18B20的管腳排列1.GND為電源地;2.DQ為數(shù)字信號輸入/輸出端;3.VDD為外接供電電源輸入端(在寄生電源接線方式時接地,28ppt課件DS18B20管腳排列DS18B20的管腳排列5ppt課件寄生電源工作方式

(電源從IO口上獲得)注意:當(dāng)溫度高于100℃時,不能使用寄生電源,因為此時器件中較大的漏電流會使總線不能可靠檢測高低電平,從而導(dǎo)致數(shù)據(jù)傳輸誤碼率的增大。

外接電源工作方式

29ppt課件寄生電源工作方式

(電源從IO口上獲得)外接電源工作方式6銳志RZ-51V2.0開發(fā)板18B20連接示意圖(因為我們開發(fā)板上P0—P3口均有上拉電阻所以此處沒有畫出)30ppt課件銳志RZ-51V2.0開發(fā)板18B20連接示意圖(因為我們開DS18B20內(nèi)部構(gòu)成DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。

光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(地址:28H)是產(chǎn)品類型標(biāo)號,接著的48位是該DS18B20自身的序列號,并且每個DS18B20的序列號都不相同,因此它可以看作是該DS18B20的地址序列碼;最后8位則是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。由于每一個DS18B20的ROM數(shù)據(jù)都各不相同,因此微控制器就可以通過單總線對多個DS18B20進(jìn)行尋址,從而實現(xiàn)一根總線上掛接多個DS18B20的目的。31ppt課件DS18B20內(nèi)部構(gòu)成DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組DS18B20中的溫度傳感器完成對溫度的測量,用16位二進(jìn)制形式提供,形式表達(dá),其中S為符號位。例如+125℃的數(shù)字輸出為07D0H(正溫度直接吧16進(jìn)制數(shù)轉(zhuǎn)成10進(jìn)制即得到溫度值)-55℃的數(shù)字輸出為FC90H。(負(fù)溫度把得到的16進(jìn)制數(shù)取反后加1再轉(zhuǎn)成10進(jìn)制數(shù))

32ppt課件DS18B20中的溫度傳感器完成對溫度的測量,用1其中配置寄存器的格式如下:低五位一直都是"1",TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設(shè)置為0,用戶不要去改動。R1和R0用來設(shè)置分辨率,如下圖所示:(DS18B20出廠時被設(shè)置為12位)

配置寄存器與分辨率關(guān)系表

33ppt課件其中配置寄存器的格式如下:低五位一直都是"1",TM是測試高速暫存存儲器由9個字節(jié)組成,當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,對應(yīng)的溫度計算:當(dāng)符號位S=0時,直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時,先將補(bǔ)碼變?yōu)樵a,再計算十進(jìn)制值。34ppt課件高速暫存存儲器由9個字節(jié)組成,當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所DS18B20的工作時序DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲器操作指令→數(shù)據(jù)傳輸。其工作時序包括: 初始化時序 寫時序 讀時序35ppt課件DS18B20的工作時序DS18B20的一線工作協(xié)議流程是:初始化時序主機(jī)首先發(fā)出一個480-960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的480微秒時間內(nèi)對總線進(jìn)行檢測,如果有低電平出現(xiàn)說明總線上有器件已做出應(yīng)答。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應(yīng)答。

做為從器件的DS18B20在一上電后就一直在檢測總線上是否有480-960微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒有檢測到就一直在檢測等待。

36ppt課件初始化時序主機(jī)首先發(fā)出一個480-960微秒的低電平脈沖,然接下來就是主機(jī)發(fā)出各種操作命令,但各種操作命令都是向DS18B20寫0和寫1組成的命令字節(jié),接收數(shù)據(jù)時也是從DS18B20讀取0或1的過程。因此首先要搞清主機(jī)是如何進(jìn)行寫0、寫1、讀0和讀1的。寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機(jī)先把總線拉低1微秒表示寫周期開始。隨后若主機(jī)想寫0,則繼續(xù)拉低電平最少60微秒直至寫周期結(jié)束,然后釋放總線為高電平。若主機(jī)想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機(jī)的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。

對DS18B20的寫和讀操作37ppt課件接下來就是主機(jī)發(fā)出各種操作命令,但各種操作命令都是向DS18對于讀數(shù)據(jù)操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是從主機(jī)把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機(jī)在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時間內(nèi)完成對總線進(jìn)行采樣檢測,采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個讀時序過程,至少需要60us才能完成

38ppt課件對于讀數(shù)據(jù)操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是DS18B20單線通信功能是分時完成的,他有嚴(yán)格的時隙概念,如果出現(xiàn)序列混亂,1-WIRE器件將不響應(yīng)主機(jī),因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進(jìn)行。根據(jù)DS18B20的協(xié)議規(guī)定,微控制器控制DS18B20完成溫度的轉(zhuǎn)換必須經(jīng)過以下4個步驟:(1)每次讀寫前對DS18B20進(jìn)行復(fù)位初始化。復(fù)位要求主CPU將數(shù)據(jù)線下拉500us,然后釋放,DS18B20收到信號后等待16us~60us左右,然后發(fā)出

60us~240us的存在低脈沖,主CPU收到此信號后表示復(fù)位成功。(2)發(fā)送一條ROM指令39ppt課件DS18B20單線通信功能是分時完成的,他有嚴(yán)格的時隙概念(3)發(fā)送存儲器指令DS18B20的存儲器指令集

40ppt課件(3)發(fā)送存儲器指令DS18B20的存儲器指令集17pp現(xiàn)在我們要做的是讓DS18B20進(jìn)行一次溫度的轉(zhuǎn)換,那具體的操作就是:1、主機(jī)先作個復(fù)位操作,2、主機(jī)再寫跳過ROM的操作(CCH)命令,3、然后主機(jī)接著寫個轉(zhuǎn)換溫度的操作命令,后面釋放總線至少一秒,讓DS18B20完成轉(zhuǎn)換的操作。在這里要注意的是每個命令字節(jié)在寫的時候都是低字節(jié)先寫,例如CCH的二進(jìn)制為11001100,在寫到總線上時要從低位開始寫,寫的順序是“零、零、壹、壹、零、零、壹、壹”。整個操作的總線狀態(tài)如下圖。41ppt課件現(xiàn)在我們要做的是讓DS18B20進(jìn)行一次溫度的轉(zhuǎn)換,那具體的讀取RAM內(nèi)的溫度數(shù)據(jù)。同樣,這個操作也要接照三個步驟。1、主機(jī)發(fā)出復(fù)位操作并接收DS18B20的應(yīng)答(存在)脈沖。2、主機(jī)發(fā)出跳過對ROM操作的命令(CCH)。3、主機(jī)發(fā)出讀取RAM的命令(BEH),隨后主機(jī)依次讀取DS18B20發(fā)出的從第0一第8,共九個字節(jié)的數(shù)據(jù)。如果只想讀取溫度數(shù)據(jù),那在讀完第0和第1個數(shù)據(jù)后就不再理會后面DS18B20發(fā)出的數(shù)據(jù)即可。同樣讀取數(shù)據(jù)也是低位在前的。整個操作的總線狀態(tài)如下圖:

在這里說明一下,第二步跳過對ROM操作的命令是在總線上只有一個器件時,為節(jié)省時間而簡化的操作,若總線上不止一個器件,那么跳過ROM操作命令將會使幾器件同時響應(yīng),這樣就會出現(xiàn)數(shù)據(jù)沖突。42ppt課件讀取RAM內(nèi)的溫度數(shù)據(jù)。同樣,這個操作也要接照三個步驟。在這初始化時序bitInit_DS18B20(void) {bitflag;//儲存DS18B20是否存在的標(biāo)志,flag=0,存在;flag=1,不存在

DQ=1;//先將數(shù)據(jù)線拉高

for(time=0;time<2;time++);//略微延時約6微秒//再將數(shù)據(jù)線從高拉低,要求保持480~960usDQ=0;for(time=0;time<200;time++);//略微延時約600微秒//以向DS18B20發(fā)出一持續(xù)480~960us的低電平復(fù)位脈沖DQ=1;//釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高)

for(time=0;time<10;time++);//延時約30us(釋放總線后需等待15~60us讓DS18B20輸出存在脈沖)flag=DQ;//讓單片機(jī)檢測是否輸出了存在脈沖(DQ=0表示存在)

for(time=0;time<200;time++);//延時足夠長時間,等待存在脈沖輸出完畢return(flag);//返回檢測成功標(biāo)志

}43ppt課件初始化時序bitInit_DS18B20(void) 20unsignedcharReadOneChar(void){unsignedchari=0; unsignedchardat;//儲存讀出的一個字節(jié)數(shù)據(jù)

for(i=0;i<8;i++) {DQ=1;//先將數(shù)據(jù)線拉高

_nop_(); //等待一個機(jī)器周期

DQ=0;//單片機(jī)從DS18B20讀書據(jù)時,將數(shù)據(jù)線從高拉低即啟動讀時序

_nop_();//等待一個機(jī)器周期

DQ=1;//將數(shù)據(jù)線"人為"拉高,為單片機(jī)檢測DS18B20的輸出電平作準(zhǔn)備

for(time=0;time<2;time++);//延時約6us,使主機(jī)在15us內(nèi)采樣

dat>>=1; if(DQ==1) dat|=0x80;//如果讀到的數(shù)據(jù)是1,則將1存入dat else dat|=0x00;//如果讀到的數(shù)據(jù)是0,則

溫馨提示

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

評論

0/150

提交評論