




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
單總線數(shù)字溫度傳感器DS18B20單總線數(shù)字溫度傳感器DS18B20單線總線特點單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換,控制都由這根線完成。單總線通常要求外接一個約為4.7K—10K的上拉電阻,這樣,當(dāng)總線閑置時其狀態(tài)為高電平。單線總線特點單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換,控制都DS18B20的特點DS18B20單線數(shù)字溫度傳感器,即“一線器件”,其具有獨特的優(yōu)點:
(1)采用單總線的接口方式與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。單總線具有經(jī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ā)熱而燒毀,但不能正常工作。(8)掉電保護功能DS18B20內(nèi)部含有EEPROM,在系統(tǒng)掉電以后,它仍可保存分辨率及報警溫度的設(shè)定值。
DS18B20具有體積更小、適用電壓更寬、更經(jīng)濟、可選更小的封裝方式,更寬的電壓適用范圍,適合于構(gòu)建自己的經(jīng)濟的測溫系統(tǒng),因此也就被設(shè)計者們所青睞。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的目的。DS18B20內(nèi)部結(jié)構(gòu)如圖所示,DS18B20管腳排列DS18B20的管腳排列1.GND為電源地;2.DQ為數(shù)字信號輸入/輸出端;3.VDD為外接供電電源輸入端(在寄生電源接線方式時接地,DS18B20管腳排列DS18B20的管腳排列寄生電源工作方式
(電源從IO口上獲得)注意:當(dāng)溫度高于100℃時,不能使用寄生電源,因為此時器件中較大的漏電流會使總線不能可靠檢測高低電平,從而導(dǎo)致數(shù)據(jù)傳輸誤碼率的增大。
外接電源工作方式寄生電源工作方式
(電源從IO口上獲得)外接電源工作方式銳志RZ-51V2.0開發(fā)板18B20連接示意圖(因為我們開發(fā)板上P0—P3口均有上拉電阻所以此處沒有畫出)銳志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進行尋址,從而實現(xiàn)一根總線上掛接多個DS18B20的目的。DS18B20內(nèi)部構(gòu)成DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組DS18B20中的溫度傳感器完成對溫度的測量,用16位二進制形式提供,形式表達,其中S為符號位。例如+125℃的數(shù)字輸出為07D0H(正溫度直接吧16進制數(shù)轉(zhuǎn)成10進制即得到溫度值)-55℃的數(shù)字輸出為FC90H。(負溫度把得到的16進制數(shù)取反后加1再轉(zhuǎn)成10進制數(shù))
DS18B20中的溫度傳感器完成對溫度的測量,用1其中配置寄存器的格式如下:低五位一直都是"1",TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設(shè)置為0,用戶不要去改動。R1和R0用來設(shè)置分辨率,如下圖所示:(DS18B20出廠時被設(shè)置為12位)
配置寄存器與分辨率關(guān)系表
其中配置寄存器的格式如下:低五位一直都是"1",TM是測試高速暫存存儲器由9個字節(jié)組成,當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,對應(yīng)的溫度計算:當(dāng)符號位S=0時,直接將二進制位轉(zhuǎn)換為十進制;當(dāng)S=1時,先將補碼變?yōu)樵a,再計算十進制值。溫度的低八位數(shù)據(jù)
0溫度的高八位數(shù)據(jù)
1
高溫閥值2
低溫閥值3
保留4
保留5
計數(shù)剩余值6
每度計數(shù)值7
CRC校驗8高速暫存存儲器由9個字節(jié)組成,當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所DS18B20的工作時序DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲器操作指令→數(shù)據(jù)傳輸。其工作時序包括: 初始化時序 寫時序 讀時序DS18B20的工作時序DS18B20的一線工作協(xié)議流程是:初始化時序主機首先發(fā)出一個480-960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的480微秒時間內(nèi)對總線進行檢測,如果有低電平出現(xiàn)說明總線上有器件已做出應(yīng)答。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應(yīng)答。
做為從器件的DS18B20在一上電后就一直在檢測總線上是否有480-960微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應(yīng)存在脈沖,告訴主機本器件已做好準備。若沒有檢測到就一直在檢測等待。初始化時序主機首先發(fā)出一個480-960微秒的低電平脈沖,然接下來就是主機發(fā)出各種操作命令,但各種操作命令都是向DS18B20寫0和寫1組成的命令字節(jié),接收數(shù)據(jù)時也是從DS18B20讀取0或1的過程。因此首先要搞清主機是如何進行寫0、寫1、讀0和讀1的。寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機先把總線拉低1微秒表示寫周期開始。隨后若主機想寫0,則繼續(xù)拉低電平最少60微秒直至寫周期結(jié)束,然后釋放總線為高電平。若主機想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。
對DS18B20的寫和讀操作接下來就是主機發(fā)出各種操作命令,但各種操作命令都是向DS18對于讀數(shù)據(jù)操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是從主機把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時間內(nèi)完成對總線進行采樣檢測,采樣期內(nèi)總線為低電平則確認為0。采樣期內(nèi)總線為高電平則確認為1。完成一個讀時序過程,至少需要60us才能完成
對于讀數(shù)據(jù)操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是DS18B20單線通信功能是分時完成的,他有嚴格的時隙概念,如果出現(xiàn)序列混亂,1-WIRE器件將不響應(yīng)主機,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。根據(jù)DS18B20的協(xié)議規(guī)定,微控制器控制DS18B20完成溫度的轉(zhuǎn)換必須經(jīng)過以下4個步驟:(1)每次讀寫前對DS18B20進行復(fù)位初始化。復(fù)位要求主CPU將數(shù)據(jù)線下拉500us,然后釋放,DS18B20收到信號后等待16us~60us左右,然后發(fā)出
60us~240us的存在低脈沖,主CPU收到此信號后表示復(fù)位成功。(2)發(fā)送一條ROM指令DS18B20單線通信功能是分時完成的,他有嚴格的時隙概念1.讀ROM該命令僅適用于總線上只有一個從機設(shè)備。他允許主機直接讀出從機的64位ROM代碼,而無須執(zhí)行搜索ROM過程。如果該命令用于多節(jié)點系統(tǒng),由于每個從機設(shè)備都會響應(yīng)該命令,因此將會發(fā)生數(shù)據(jù)沖突。2.
ROM匹配此命令跟隨64位ROM代碼,從而允許主機訪問多節(jié)點系統(tǒng)中某個指定的從機設(shè)備。僅當(dāng)從機完全匹配64位ROM代碼時,才會響應(yīng)主機隨后發(fā)出的功能命令。其他設(shè)備將處于等待復(fù)位脈沖狀態(tài)。1.讀ROM3.跳過ROM主機能夠采用該命令同時訪問總線上的所有從機設(shè)備,而無須發(fā)出任何ROM代碼信息。例如,主機通過在發(fā)出跳過ROM命令后跟隨轉(zhuǎn)換溫度命令(44H),就可以同時命令總線上所有的DS18B20開始轉(zhuǎn)換溫度,這樣大大節(jié)省了主機的時間。值得注意的是,如果跳過ROM命令跟隨的是讀暫存器(BEH)的命令,則該命令只能應(yīng)用于單節(jié)點系統(tǒng),否則由于多個節(jié)點都響應(yīng)該命令而引起數(shù)據(jù)沖突。4.搜索ROM當(dāng)系統(tǒng)初始上電時,主機必須找出總線上所有從機設(shè)備的ROM代碼,這樣主機能夠判斷從機的數(shù)目和類型。主機通過重復(fù)執(zhí)行搜索ROM循環(huán),以找出總線上所有的從機設(shè)備。如果總線上只有一個從機設(shè)備,則可以采用讀ROM命令來代替搜索ROM命令。每次執(zhí)行完搜索ROM循環(huán)后,主機必須返回第一步(初始化)。3.跳過ROM5.報警搜索此命令的流程與搜索ROM命令相同。但是,僅在最近一次溫度測量出現(xiàn)報警的情況下,DS18B20才對此命令作出響應(yīng)。報警的條件定義為溫度高于TH或低于TL。只要DS18B20一上電,報警條件就保持在設(shè)置狀態(tài),直到另一次溫度測量顯示出非報警值,或者改變TH或TL的設(shè)置,使得測量值再一次位于允許的范圍內(nèi)。5.報警搜索(3)發(fā)送存儲器指令DS18B20的存儲器指令集(3)發(fā)送存儲器指令DS18B20的存儲器指令集1.讀暫存器此命令用于讀暫存存儲器的內(nèi)容。讀出的數(shù)據(jù)從暫存存儲器的字節(jié)0開始,直至第九個字節(jié)(字節(jié)8,CRC)被讀出為止。如果不想讀完所有字節(jié),控制器可以再任何時間發(fā)出復(fù)位命令中止讀取。暫存存儲器的數(shù)據(jù)組織如表數(shù)據(jù)876543210含義CRC保留保留保留配置寄存器低溫報警值高溫報警值溫度高位溫度低位1.讀暫存器數(shù)據(jù)876543210含義CRC保留保留保留配置現(xiàn)在我們要做的是讓DS18B20進行一次溫度的轉(zhuǎn)換,那具體的操作就是:1、主機先作個復(fù)位操作,2、主機再寫跳過ROM的操作(CCH)命令,3、然后主機接著寫個轉(zhuǎn)換溫度的操作命令,后面釋放總線至少一秒,讓DS18B20完成轉(zhuǎn)換的操作。在這里要注意的是每個命令字節(jié)在寫的時候都是低字節(jié)先寫,例如CCH的二進制為11001100,在寫到總線上時要從低位開始寫,寫的順序是“零、零、壹、壹、零、零、壹、壹”。整個操作的總線狀態(tài)如下圖。現(xiàn)在我們要做的是讓DS18B20進行一次溫度的轉(zhuǎn)換,那具體的讀取RAM內(nèi)的溫度數(shù)據(jù)。同樣,這個操作也要接照三個步驟。1、主機發(fā)出復(fù)位操作并接收DS18B20的應(yīng)答(存在)脈沖。2、主機發(fā)出跳過對ROM操作的命令(CCH)。3、主機發(fā)出讀取RAM的命令(BEH),隨后主機依次讀取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ù)沖突。讀取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;//讓單片機檢測是否輸出了存在脈沖(DQ=0表示存在)
for(time=0;time<200;time++);//延時足夠長時間,等待存在脈沖輸出完畢return(flag);//返回檢測成功標(biāo)志
}初始化時序bitInit_DS18B20(void) unsignedcharReadOneChar(void){unsignedchari=0; unsignedchardat;//儲存讀出的一個字節(jié)數(shù)據(jù)
for(i=0;i<8;i++) {DQ=1;//先將數(shù)據(jù)線拉高
_nop_(); //等待一個機器周期
DQ=0;//單片機從DS18B20讀書據(jù)時,將數(shù)據(jù)線從高拉低即啟動讀時序
_nop_();//等待一個機器周期
DQ=1;//將數(shù)據(jù)線"人為"拉高,為單片機檢測DS18B20的輸出電平作準備
for(time=0;time<2;time++);//延時約6us,使主機在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);//返回讀出的十六進制數(shù)據(jù)}unsignedcharReadOneChar(voidunsignedcharReadOneChar(void){unsignedchari=0; unsignedchardat;//儲存讀出的一個字節(jié)數(shù)據(jù)
for(i=0;i<8;i++) {DQ=1;//先將數(shù)據(jù)線拉高
_nop_(); //等待一個機器周期
DQ=0;//單片機從DS18B20讀書據(jù)時,將數(shù)據(jù)線從高拉低即啟動讀時序
_nop_();//等待一個機器周期
DQ=1;//將數(shù)據(jù)線"人為"拉高,為單片機檢測DS18B20的輸出電平作準備
for(time=0;time<2;time++);//延時約6us,使主機在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);//返回讀出的十六進制數(shù)據(jù)}unsignedcharReadOneChar(voidWriteOneChar(unsignedchardat){unsignedchari=0; for(i=0;i<8;i++) { DQ=1;//先將數(shù)據(jù)線拉高
_nop_(); //等待一個機器周期
DQ=0;//將數(shù)據(jù)線從高拉低時即啟動寫時序
DQ=dat&0x01;//利用與運算取出要寫的某位二進制數(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中的各二進制位數(shù)據(jù)右移1位
} for(time=0;time<4;time++) ;//稍作延時,給硬件一點反應(yīng)時間}WriteOneChar(unsignedchardat單總線數(shù)字溫度傳感器DS18B20單總線數(shù)字溫度傳感器DS18B20單線總線特點單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換,控制都由這根線完成。單總線通常要求外接一個約為4.7K—10K的上拉電阻,這樣,當(dāng)總線閑置時其狀態(tài)為高電平。單線總線特點單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換,控制都DS18B20的特點DS18B20單線數(shù)字溫度傳感器,即“一線器件”,其具有獨特的優(yōu)點:
(1)采用單總線的接口方式與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。單總線具有經(jī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ā)熱而燒毀,但不能正常工作。(8)掉電保護功能DS18B20內(nèi)部含有EEPROM,在系統(tǒng)掉電以后,它仍可保存分辨率及報警溫度的設(shè)定值。
DS18B20具有體積更小、適用電壓更寬、更經(jīng)濟、可選更小的封裝方式,更寬的電壓適用范圍,適合于構(gòu)建自己的經(jīng)濟的測溫系統(tǒng),因此也就被設(shè)計者們所青睞。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的目的。DS18B20內(nèi)部結(jié)構(gòu)如圖所示,DS18B20管腳排列DS18B20的管腳排列1.GND為電源地;2.DQ為數(shù)字信號輸入/輸出端;3.VDD為外接供電電源輸入端(在寄生電源接線方式時接地,DS18B20管腳排列DS18B20的管腳排列寄生電源工作方式
(電源從IO口上獲得)注意:當(dāng)溫度高于100℃時,不能使用寄生電源,因為此時器件中較大的漏電流會使總線不能可靠檢測高低電平,從而導(dǎo)致數(shù)據(jù)傳輸誤碼率的增大。
外接電源工作方式寄生電源工作方式
(電源從IO口上獲得)外接電源工作方式銳志RZ-51V2.0開發(fā)板18B20連接示意圖(因為我們開發(fā)板上P0—P3口均有上拉電阻所以此處沒有畫出)銳志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進行尋址,從而實現(xiàn)一根總線上掛接多個DS18B20的目的。DS18B20內(nèi)部構(gòu)成DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組DS18B20中的溫度傳感器完成對溫度的測量,用16位二進制形式提供,形式表達,其中S為符號位。例如+125℃的數(shù)字輸出為07D0H(正溫度直接吧16進制數(shù)轉(zhuǎn)成10進制即得到溫度值)-55℃的數(shù)字輸出為FC90H。(負溫度把得到的16進制數(shù)取反后加1再轉(zhuǎn)成10進制數(shù))
DS18B20中的溫度傳感器完成對溫度的測量,用1其中配置寄存器的格式如下:低五位一直都是"1",TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設(shè)置為0,用戶不要去改動。R1和R0用來設(shè)置分辨率,如下圖所示:(DS18B20出廠時被設(shè)置為12位)
配置寄存器與分辨率關(guān)系表
其中配置寄存器的格式如下:低五位一直都是"1",TM是測試高速暫存存儲器由9個字節(jié)組成,當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,對應(yīng)的溫度計算:當(dāng)符號位S=0時,直接將二進制位轉(zhuǎn)換為十進制;當(dāng)S=1時,先將補碼變?yōu)樵a,再計算十進制值。溫度的低八位數(shù)據(jù)
0溫度的高八位數(shù)據(jù)
1
高溫閥值2
低溫閥值3
保留4
保留5
計數(shù)剩余值6
每度計數(shù)值7
CRC校驗8高速暫存存儲器由9個字節(jié)組成,當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所DS18B20的工作時序DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲器操作指令→數(shù)據(jù)傳輸。其工作時序包括: 初始化時序 寫時序 讀時序DS18B20的工作時序DS18B20的一線工作協(xié)議流程是:初始化時序主機首先發(fā)出一個480-960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖剑⒃陔S后的480微秒時間內(nèi)對總線進行檢測,如果有低電平出現(xiàn)說明總線上有器件已做出應(yīng)答。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應(yīng)答。
做為從器件的DS18B20在一上電后就一直在檢測總線上是否有480-960微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應(yīng)存在脈沖,告訴主機本器件已做好準備。若沒有檢測到就一直在檢測等待。初始化時序主機首先發(fā)出一個480-960微秒的低電平脈沖,然接下來就是主機發(fā)出各種操作命令,但各種操作命令都是向DS18B20寫0和寫1組成的命令字節(jié),接收數(shù)據(jù)時也是從DS18B20讀取0或1的過程。因此首先要搞清主機是如何進行寫0、寫1、讀0和讀1的。寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機先把總線拉低1微秒表示寫周期開始。隨后若主機想寫0,則繼續(xù)拉低電平最少60微秒直至寫周期結(jié)束,然后釋放總線為高電平。若主機想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。
對DS18B20的寫和讀操作接下來就是主機發(fā)出各種操作命令,但各種操作命令都是向DS18對于讀數(shù)據(jù)操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是從主機把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時間內(nèi)完成對總線進行采樣檢測,采樣期內(nèi)總線為低電平則確認為0。采樣期內(nèi)總線為高電平則確認為1。完成一個讀時序過程,至少需要60us才能完成
對于讀數(shù)據(jù)操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是DS18B20單線通信功能是分時完成的,他有嚴格的時隙概念,如果出現(xiàn)序列混亂,1-WIRE器件將不響應(yīng)主機,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。根據(jù)DS18B20的協(xié)議規(guī)定,微控制器控制DS18B20完成溫度的轉(zhuǎn)換必須經(jīng)過以下4個步驟:(1)每次讀寫前對DS18B20進行復(fù)位初始化。復(fù)位要求主CPU將數(shù)據(jù)線下拉500us,然后釋放,DS18B20收到信號后等待16us~60us左右,然后發(fā)出
60us~240us的存在低脈沖,主CPU收到此信號后表示復(fù)位成功。(2)發(fā)送一條ROM指令DS18B20單線通信功能是分時完成的,他有嚴格的時隙概念1.讀ROM該命令僅適用于總線上只有一個從機設(shè)備。他允許主機直接讀出從機的64位ROM代碼,而無須執(zhí)行搜索ROM過程。如果該命令用于多節(jié)點系統(tǒng),由于每個從機設(shè)備都會響應(yīng)該命令,因此將會發(fā)生數(shù)據(jù)沖突。2.
ROM匹配此命令跟隨64位ROM代碼,從而允許主機訪問多節(jié)點系統(tǒng)中某個指定的從機設(shè)備。僅當(dāng)從機完全匹配64位ROM代碼時,才會響應(yīng)主機隨后發(fā)出的功能命令。其他設(shè)備將處于等待復(fù)位脈沖狀態(tài)。1.讀ROM3.跳過ROM主機能夠采用該命令同時訪問總線上的所有從機設(shè)備,而無須發(fā)出任何ROM代碼信息。例如,主機通過在發(fā)出跳過ROM命令后跟隨轉(zhuǎn)換溫度命令(44H),就可以同時命令總線上所有的DS18B20開始轉(zhuǎn)換溫度,這樣大大節(jié)省了主機的時間。值得注意的是,如果跳過ROM命令跟隨的是讀暫存器(BEH)的命令,則該命令只能應(yīng)用于單節(jié)點系統(tǒng),否則由于多個節(jié)點都響應(yīng)該命令而引起數(shù)據(jù)沖突。4.搜索ROM當(dāng)系統(tǒng)初始上電時,主機必須找出總線上所有從機設(shè)備的ROM代碼,這樣主機能夠判斷從機的數(shù)目和類型。主機通過重復(fù)執(zhí)行搜索ROM循環(huán),以找出總線上所有的從機設(shè)備。如果總線上只有一個從機設(shè)備,則可以采用讀ROM命令來代替搜索ROM命令。每次執(zhí)行完搜索ROM循環(huán)后,主機必須返回第一步(初始化)。3.跳過ROM5.報警搜索此命令的流程與搜索ROM命令相同。但是,僅在最近一次溫度測量出現(xiàn)報警的情況下,DS18B20才對此命令作出響應(yīng)。報警的條件定義為溫度高于TH或低于TL。只要DS18B20一上電,報警條件就保持在設(shè)置狀態(tài),直到另一次溫度測量顯示出非報警值,或者改變TH或TL的設(shè)置,使得測量值再一次位于允許的范圍內(nèi)。5.報警搜索(3)發(fā)送存儲器指令DS18B20的存儲器指令集(3)發(fā)送存儲器指令DS18B20的存儲器指令集1.讀暫存器此命令用于讀暫存存儲器的內(nèi)容。讀出的數(shù)據(jù)從暫存存儲器的字節(jié)0開始,直至第九個字節(jié)(字節(jié)8,CRC)被讀出為止。如果不想讀完所有字節(jié),控制器可以再任何時間發(fā)出復(fù)位命令中止讀取。暫存存儲器的數(shù)據(jù)組織如表數(shù)據(jù)876543210含義CRC保留保留保留配置寄存器低溫報警值高溫報警值溫度高位溫度低位1.讀暫存器數(shù)據(jù)876543210含義CRC保留保留保留配置現(xiàn)在我們要做的是讓DS18B20進行一次溫度的轉(zhuǎn)換,那具體的操作就是:1、主機先作個復(fù)位操作,2、主機再寫跳過ROM的操作(CCH)命令,3、然后主機接著寫個轉(zhuǎn)換溫度的操作命令,后面釋放總線至少一秒,讓DS18B20完成轉(zhuǎn)換的操作。在這里要注意的是每個命令字節(jié)在寫的時候都是低字節(jié)先寫,例如CCH的二進制為11001100,在寫到總線上時要從低位開始寫,寫的順序是“零、零、壹、壹、零、零、壹、壹”。整個操作的總線狀態(tài)如下圖。現(xiàn)在我們要做的是讓DS18B20進行一次溫度的轉(zhuǎn)換,那具體的讀取RAM內(nèi)的溫度數(shù)據(jù)。同樣,這個操作也要接照三個步驟。1、主機發(fā)出復(fù)位操作并接收DS18B20的應(yīng)答(存在)脈沖。2、主機發(fā)出跳過對ROM操作的命令(CCH)。3、主機發(fā)出讀取RAM的命令(BEH),隨后主機依次讀取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ù)沖突。讀取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;//讓單片機檢測是否輸出了存在脈沖(DQ=0表示存在)
for(time=0;time<200;time++);//延時足夠長時間,等待存在脈沖輸出完畢return(flag);//返回檢測成功標(biāo)志
}初始化時序bitInit_DS18B20(void) unsignedcharReadOneChar(void){unsignedchari=0; unsignedchardat;//儲存讀出的一個字節(jié)數(shù)據(jù)
for(i=0;i<8;i++) {DQ=1;//先將數(shù)據(jù)線拉高
_nop_(); //等待一個機器周期
DQ=0;//單片機從DS18B20讀書據(jù)時,將數(shù)據(jù)線從高拉低即啟動讀時序
_nop_();//等待一個機器周期
DQ=1;
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)廣告安裝安全防范措施
- 房地產(chǎn)行業(yè)銷售人員培訓(xùn)實施方案及計劃
- 英語學(xué)習(xí)者支持活動方案
- 公共衛(wèi)生領(lǐng)域應(yīng)對突發(fā)事件的措施
- 大學(xué)文明校園創(chuàng)建工作的領(lǐng)導(dǎo)與職責(zé)
- 高一語文下學(xué)期學(xué)習(xí)計劃
- DB32/T 4177-2021水旱災(zāi)害防御調(diào)度方案編制規(guī)范
- 2025至2030年中國有梭織花邊行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國保鮮蘆筍行業(yè)投資前景及策略咨詢研究報告
- DB32/T 3848-2020有限空間作業(yè)安全操作規(guī)范
- 江蘇省常州市重點中學(xué)2025屆高考歷史三模試卷含解析
- 小學(xué)五年級下冊道德與法治期末測試卷帶答案【考試直接用】
- 甘肅省蘭州市城七里河區(qū)-2023-2024學(xué)年六年級下學(xué)期小學(xué)期末畢業(yè)測試語文試卷
- 《裝飾材料與施工》考試復(fù)習(xí)題庫(含答案)
- 中小學(xué)生民法典主題班會-民法典宣講課件
- 第一單元大單元教學(xué)設(shè)計(表格式) 2023-2024學(xué)年統(tǒng)編版語文八年級下冊
- (正式版)SHT 3046-2024 石油化工立式圓筒形鋼制焊接儲罐設(shè)計規(guī)范
- 小學(xué)高段學(xué)生數(shù)學(xué)應(yīng)用意識培養(yǎng)的實踐研究 開題報告
- GB/T 17592-2024紡織品禁用偶氮染料的測定
- GA/T 2015-2023芬太尼類藥物專用智能柜通用技術(shù)規(guī)范
- 唱片行業(yè)前景分析
評論
0/150
提交評論