項(xiàng)目五任務(wù)4數(shù)字溫度計(jì)_第1頁
項(xiàng)目五任務(wù)4數(shù)字溫度計(jì)_第2頁
項(xiàng)目五任務(wù)4數(shù)字溫度計(jì)_第3頁
項(xiàng)目五任務(wù)4數(shù)字溫度計(jì)_第4頁
項(xiàng)目五任務(wù)4數(shù)字溫度計(jì)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項(xiàng)目五任務(wù)4DS18B20工作原理

一.任務(wù)描述介紹數(shù)字溫度傳感器DS18B20的工作原理,了解其內(nèi)部結(jié)構(gòu)及相關(guān)寄存器的使用方法。

二.DS18B20簡介數(shù)字溫度傳感器DS18B20作為溫度檢測元件,硬件電路簡單,節(jié)省系統(tǒng)成本并提高了系統(tǒng)可靠性。DS18B20主要具有以下特點(diǎn):(1)采用單總線(1-wirebus)通信方式,僅需一條口線即可實(shí)現(xiàn)與單片機(jī)進(jìn)行數(shù)據(jù)傳輸;(2)具有3引腳小體積封裝方式,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi);(3)測溫范圍為-550C~+1250C;(4)電源供電范圍為3.0~5.5V;(5)可編程為9~12位數(shù)字量輸出(自帶模數(shù)轉(zhuǎn)換ADC);(6)支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測溫;(7)在每個(gè)DS18B20器件都有獨(dú)一無二的序列號(hào)。表7-1

DS18B20詳細(xì)引腳功能描述

三.DS18B20內(nèi)部結(jié)構(gòu)

1.引腳功能DS18B20為三引腳元件,外形同普通三極管,見右圖,引腳功能詳見表。

序號(hào)名稱引腳功能描述1GND電源地2DQ為數(shù)據(jù)(數(shù)字信號(hào))輸入/輸出引腳。開漏單總線接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源;3VDD為外接供電電源輸入端(在寄生電源接線方式時(shí)此引腳必須接地)(1)64位ROM的位結(jié)構(gòu)如下表所示。開始8位為產(chǎn)品類型編號(hào),接著是每個(gè)器件的惟一序號(hào),共有48位,最后8位是前面56位的CRC驗(yàn)證碼。非易失性溫度報(bào)警觸發(fā)器TH與TL,可通過軟件寫入報(bào)警上下限。8位檢驗(yàn)CRC48位序列號(hào)8位工廠代碼(10H)MSBLSBMSBLSBMSBLSB2.DS18B20內(nèi)部結(jié)構(gòu)DS18B20主要由64位ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、及配置寄存器等組成。(2)9字節(jié)高速緩存存儲(chǔ)器,結(jié)構(gòu)如表7-2所示。寄存器內(nèi)容字節(jié)地址溫度LSB0溫度MSB1TH用戶字節(jié)12TL用戶字節(jié)23配置寄存器4保留5保留6保留7表7-2高速緩存存儲(chǔ)器結(jié)構(gòu)第1、第2字節(jié)為所測溫度信息;第3、第4字節(jié)為TH與TL的考貝,是易失性的,上電復(fù)位時(shí)被刷新;第5字節(jié)為配置寄存器,用于確定溫度值的數(shù)字分辯率。該字節(jié)低5位始終為1,各位具體定義如下:TMR1R011111TM:測試模式位,該位已被設(shè)置為0R1、R0:分辯率設(shè)置位,即溫度轉(zhuǎn)換的精度位數(shù)R1R0分辯率/位溫度最大轉(zhuǎn)換時(shí)間/ms步進(jìn)單位00993.750.5℃/LSB0010187.50.25℃/LSB10113750.125℃/LSB11127500.0625℃/LSB表7-3DS18B20分辯率設(shè)置DS18B20溫度轉(zhuǎn)換時(shí)間與分辯率有關(guān),分辯率愈高,轉(zhuǎn)換時(shí)間愈長。高速緩存第6、7、8字節(jié)保留未用;第9字節(jié)讀出前面所有8字節(jié)的CRC碼,用來校驗(yàn)通信數(shù)據(jù)的正確性。(3)溫度數(shù)據(jù)值格式。DS18B20接收到溫度轉(zhuǎn)換命令后,啟動(dòng)溫度轉(zhuǎn)換,并將轉(zhuǎn)換后的溫度值以16位帶符號(hào)二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速緩存存儲(chǔ)器的每1、2字節(jié).單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。232221202-12-22-32-4LS字節(jié)

SSSSS262524其中“S”為符號(hào)標(biāo)志位:當(dāng)符號(hào)位S=0時(shí),表示測得溫度值為正,直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),表示測得溫度值為負(fù),先將補(bǔ)碼變換為原碼,再計(jì)算十進(jìn)制值。表7-4為部分溫度值與二進(jìn)制溫度數(shù)據(jù)的對(duì)應(yīng)關(guān)系。MS字節(jié)圖7-3溫度數(shù)據(jù)值格式表7-4DS18B20溫度與二進(jìn)制溫度數(shù)據(jù)對(duì)應(yīng)關(guān)系7418溫度/℃二進(jìn)制表示十六進(jìn)制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100010191H+10.125000000001010001000A2H+0.500000000000010000008H000000000000000000000H-0.51111111111111000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90HDSI8B20完成溫度轉(zhuǎn)換后,就把測得的溫度值與TH、TL做比較,若T>TH或T<TL,則將該器件內(nèi)的告警標(biāo)志置位,并對(duì)主機(jī)發(fā)出的告警搜索命令做出響應(yīng)。四、DSl8B20工作命令工作時(shí),DS18B20主機(jī)(單片機(jī))可以使用各種命令對(duì)DSI8B20進(jìn)行操作。操作過程為:初始化DS18B20、發(fā)ROM功能命令、發(fā)存儲(chǔ)器操作命令。1.讀ROM[33H]這個(gè)命令允許總線控制器讀到DS18B20的8位系列編碼、唯一的序列號(hào)和8位CRC碼。只有在總線上存在單只DS18B20的時(shí)候才能使用這個(gè)命令。2.匹配ROM[55H]這個(gè)是匹配ROM命令,后跟64位ROM序列,讓總線控制器在多點(diǎn)總線上定位一只特定的DS18B20。只有和64位ROM序列完全匹配的DS18B20才能響應(yīng)隨后的存儲(chǔ)器操作。3.跳過ROM[0CCH]這條命令允許總線控制器不用提供64位ROM編碼就使用存儲(chǔ)器操作命令,在單點(diǎn)總線情況下,可以節(jié)省時(shí)間。4.搜索ROM[0F0H]當(dāng)一個(gè)系統(tǒng)初次啟動(dòng)時(shí),總線控制器可能并不知道單線總線上有多少器件或它們的64位ROM編碼。搜索ROM命令允許總線控制器用排除法識(shí)別總線上的所有從機(jī)的64位編碼。5.報(bào)警搜索[0ECH]這條命令的流程和SearchROM相同。然而,只有在最近一次測溫后遇到符合報(bào)警條件的情況,DS18B20才會(huì)響應(yīng)這條命令。報(bào)警條件定義為溫度高于TH或低于TL。6.寫暫存存儲(chǔ)器[4EH]這個(gè)命令向DS18B20的暫存器TH和TL中寫入數(shù)據(jù)??梢栽谌魏螘r(shí)刻發(fā)出復(fù)位命令來中止寫入。7.寫暫存存儲(chǔ)器[0BEH]這個(gè)命令讀取暫存器的內(nèi)容。讀取將從第1個(gè)字節(jié)開始,一直進(jìn)行下去,直到第9(CRC)字節(jié)讀完。如果不想讀完所有字節(jié),控制器可以在任何時(shí)間發(fā)出復(fù)位命令來中止讀取。

8.拷貝暫存存儲(chǔ)器[48H]這個(gè)命令把暫存器的內(nèi)容拷貝到DS18B20的E2ROM存儲(chǔ)器里,即把溫度報(bào)警觸發(fā)字節(jié)存入非易失性存儲(chǔ)器里。如果總線控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而DS18B20又忙于把暫存器拷貝到E2存儲(chǔ)器,DS18B20就會(huì)輸出一個(gè)0,如果拷貝結(jié)束的話,DS18B20則輸出1。9.溫度轉(zhuǎn)換[44H]這條命令啟動(dòng)一次溫度轉(zhuǎn)換而無需其它數(shù)據(jù)。溫度轉(zhuǎn)換命令被執(zhí)行,而后DS18B20保持等待狀態(tài)。如果總線控制器在這條命令之后跟著發(fā)出時(shí)間隙,而DS18B20又忙于做溫度轉(zhuǎn)換的話,DS18B20將在總線上輸出0,若溫度轉(zhuǎn)換完成,則輸出1。10.重新調(diào)出[0B8H]這條命令把報(bào)警觸發(fā)器里的值拷貝回暫存器。這種拷貝操作在DS18B20上電時(shí)自動(dòng)執(zhí)行,這樣器件一上電暫存器里馬上就存在有效的數(shù)據(jù)了。若在這條命令發(fā)出之后發(fā)出讀數(shù)據(jù)隙,器件會(huì)輸出溫度轉(zhuǎn)換忙的標(biāo)識(shí):0為忙,1為完成。11.讀電源[0B4H]

五、DSl8B20工作時(shí)序作為單總線器件,DSl8B20與單片機(jī)間采用串行數(shù)據(jù)傳輸方式,要求按照嚴(yán)格的時(shí)隙進(jìn)行操作。主機(jī)使用時(shí)間隙來讀寫DSl8B20的數(shù)據(jù)位和寫命令字的位(在此所有程序均采用12M晶振),單片機(jī)P3.7引腳接DSl8B20數(shù)據(jù)線。1.初始化DS18B20對(duì)DSl8B20操作時(shí)首先要進(jìn)行初始化:單片機(jī)發(fā)出復(fù)位脈沖,DSl8B20以存在脈沖響應(yīng)。當(dāng)DSl8B20發(fā)出存在脈沖對(duì)復(fù)位脈沖響應(yīng)時(shí),表明該器件已在總線上并作好操作準(zhǔn)備。初始化時(shí)序見圖7-4。主機(jī)總線to時(shí)刻發(fā)送一復(fù)位脈沖(最短為480us的低電平信號(hào)),接著在tl時(shí)刻釋放總線并進(jìn)入接收狀態(tài)。DSl8B20在檢測到總線的上升沿之后等待15-60us接著DS18B20在t2時(shí)刻發(fā)出存在脈沖(低電平持續(xù)60-240us)如圖中虛線所示。DS18B20工作時(shí)序DS18B20初始化子程序如下:Init_DS18B20() //傳感器初始化{ ucharx=0; DATA=1; //DQ復(fù)位

delay(10); //稍做延時(shí)

DATA=0; //單片機(jī)將DQ拉低

delay(80); //精確延時(shí)大于480us//450 DATA=1; //拉高總線

delay(20); x=DATA;//稍做延時(shí)后如果x=0則初始化成功x=1則初始化失敗

delay(30);}2.寫DS18B20DSl8B20有兩種類型的寫時(shí)序:寫0時(shí)序(圖7-5)和寫1時(shí)序(圖7-6)。當(dāng)主機(jī)總線to時(shí)刻從高拉至低電平時(shí)就產(chǎn)生寫時(shí)間隙。從to時(shí)刻開始15us之內(nèi)應(yīng)將所需寫的位送到總線上,DSl8B20在t0后15-60us間對(duì)總線采樣,若為低電平,則寫入的位是0,見圖7-5;若為高電平,則寫入的位是1,見圖7-6。連續(xù)寫2位間的間隙應(yīng)大于1us。圖7-5寫0時(shí)序圖7-6寫1時(shí)序?qū)慏S18B20一個(gè)字節(jié)子程序WriteOneChar(unsignedchardat){ uchari=0; for(i=8;i>0;i--) { DATA=0; DATA=dat&0x01; delay(10); DATA=1; dat>>=1; } delay(8);}3.讀DS18B20當(dāng)單片機(jī)發(fā)出讀時(shí)序時(shí),DS18B20可發(fā)送數(shù)據(jù)到單片機(jī)。所有讀時(shí)序必須持續(xù)60us以上,每個(gè)時(shí)序之間發(fā)須有至少1us的恢復(fù)時(shí)間。圖7-7中,主機(jī)在to時(shí)刻將總線從高電平拉至低電平時(shí),至少在1us后t1時(shí)刻將總線拉高,產(chǎn)生讀時(shí)間隙,讀時(shí)間隙在t1時(shí)刻后到t2時(shí)刻前有效。T2距to為15us。也就是說t2時(shí)刻前主機(jī)必須完成讀位,并在to后的60us一120us內(nèi)釋放總線。圖7-7DS18B20讀時(shí)序

基礎(chǔ)篇;讀DS18B20一個(gè)字節(jié)子程序,ReadOneChar(void){ uchari=0; uchardat=0; for(i=8;i>0;i--) {DATA=0; //給脈沖信號(hào)

dat>>=1; DATA=1; //給脈沖信號(hào)

if(DATA) dat|=0x80; delay(8); } return(dat);}基礎(chǔ)篇

一.任務(wù)描述利用單片機(jī)89S51與DS18B20設(shè)計(jì)一數(shù)字溫度計(jì),測溫范圍-55~125OC,顯示精度為0.1OC。采用4位LED數(shù)碼管顯示溫度,一位小數(shù)、三位整數(shù)。正溫度時(shí),最高位顯示百位溫度或不顯示,負(fù)溫度時(shí)最高位顯示符號(hào)“-”。系統(tǒng)采用12M晶振。

二、硬件電路設(shè)計(jì)硬件電路見圖7-8所示。DS18B20數(shù)據(jù)端接至單片機(jī)P3.7引腳,采用四位數(shù)碼管顯示溫度值(3位整數(shù),一位小數(shù))。

三、軟件設(shè)計(jì)系統(tǒng)程序主要包括主程序、溫度轉(zhuǎn)換子程序、溫度BCD碼轉(zhuǎn)換子程序、顯示緩沖區(qū)刷新子程序、顯示子程序等。

1.主程序主程序的主要功能是進(jìn)行溫度轉(zhuǎn)換、溫度BCD碼轉(zhuǎn)換、顯示緩沖區(qū)刷新及溫度顯示等,見流程圖圖7-92.溫度讀取子程序該子程序的功能是啟動(dòng)DS18B20溫度轉(zhuǎn)換,并將DS18B20RAM中的前兩個(gè)字節(jié)溫度數(shù)據(jù)讀入單片機(jī)指定存儲(chǔ)單元中。其流程圖見圖7-10。

數(shù)字溫度計(jì)設(shè)計(jì)(一)基礎(chǔ)篇3.溫度BCD碼轉(zhuǎn)換子程序該子程序的功能是判別所測溫度的正負(fù)值,并將其小數(shù)及整數(shù)部分分別轉(zhuǎn)換成BCD碼,再存入單片機(jī)指定的溫度存儲(chǔ)單元中。表7-5小數(shù)部分二進(jìn)制和十進(jìn)制的近似對(duì)應(yīng)關(guān)系表二進(jìn)制值0123456789ABCDEF十進(jìn)制值00112334556678894.顯示緩沖區(qū)刷新子程序該子程序?qū)嚎sBCD碼溫度數(shù)據(jù)拆分后裝入顯示緩沖區(qū)70H—73H中?;A(chǔ)篇四、源程序清單應(yīng)用程序清單如下(程序僅供參考):/***********************************************************程序描述:溫度超過35度,繼電器吸合P0端驅(qū)動(dòng)共陽七段數(shù)碼管,P2端接共陽數(shù)碼管的公共端***********************************************************/#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitDATA=P3^7;//DS18B20接入口ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};charbai,shi,ge;//定義變量

數(shù)字溫度計(jì)設(shè)計(jì)(二)基礎(chǔ)篇/********延時(shí)子函數(shù)***********/voiddelay(uintn){ while(n--);//uinti;for(i=0;i<n;i++);}/*************DS18b20溫度傳感器函數(shù)*********************/Init_DS18B20(void) //傳感器初始化{ ucharx=0; DATA=1; //DQ復(fù)位

delay(10); //稍做延時(shí)

DATA=0; //單片機(jī)將DQ拉低

delay(80); //精確延時(shí)大于480us//450 DATA=1; //拉高總線

delay(20); x=DATA; //稍做延時(shí)后如果x=0則初始化成功x=1則初始化失敗

delay(30);}基礎(chǔ)篇/****讀一個(gè)字節(jié)******/ReadOneChar(void){ uchari=0; uchardat=0; for(i=8;i>0;i--) DATA=0; //給脈沖信號(hào)

dat>>=1; DATA=1; //給脈沖信號(hào)

if(DATA) dat|=0x80; delay(8); } return(dat);}基礎(chǔ)篇/*****8寫一個(gè)字節(jié)*****/WriteOneChar(unsignedchardat){

uchari=0; for(i=8;i>0;i--) { DATA=0; DATA=dat&0x01; delay(10); DATA=1;

dat>>=1; } delay(8);}/*******讀取溫度*******/intReadTemperature(void){ uchara=0; ucharb=0; intt=0; floattt=0; Init_DS18B20(); WriteOneChar(0x

溫馨提示

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

評(píng)論

0/150

提交評(píng)論