項目五任務4數字溫度計_第1頁
項目五任務4數字溫度計_第2頁
項目五任務4數字溫度計_第3頁
項目五任務4數字溫度計_第4頁
項目五任務4數字溫度計_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

項目五任務4DS18B20工作原理

一.任務描述介紹數字溫度傳感器DS18B20的工作原理,了解其內部結構及相關寄存器的使用方法。

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

DS18B20詳細引腳功能描述

三.DS18B20內部結構

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

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

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

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

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

delay(10); //稍做延時

DATA=0; //單片機將DQ拉低

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

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

delay(30);}2.寫DS18B20DSl8B20有兩種類型的寫時序:寫0時序(圖7-5)和寫1時序(圖7-6)。當主機總線to時刻從高拉至低電平時就產生寫時間隙。從to時刻開始15us之內應將所需寫的位送到總線上,DSl8B20在t0后15-60us間對總線采樣,若為低電平,則寫入的位是0,見圖7-5;若為高電平,則寫入的位是1,見圖7-6。連續寫2位間的間隙應大于1us。圖7-5寫0時序圖7-6寫1時序寫DS18B20一個字節子程序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當單片機發出讀時序時,DS18B20可發送數據到單片機。所有讀時序必須持續60us以上,每個時序之間發須有至少1us的恢復時間。圖7-7中,主機在to時刻將總線從高電平拉至低電平時,至少在1us后t1時刻將總線拉高,產生讀時間隙,讀時間隙在t1時刻后到t2時刻前有效。T2距to為15us。也就是說t2時刻前主機必須完成讀位,并在to后的60us一120us內釋放總線。圖7-7DS18B20讀時序

基礎篇;讀DS18B20一個字節子程序,ReadOneChar(void){ uchari=0; uchardat=0; for(i=8;i>0;i--) {DATA=0; //給脈沖信號

dat>>=1; DATA=1; //給脈沖信號

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

一.任務描述利用單片機89S51與DS18B20設計一數字溫度計,測溫范圍-55~125OC,顯示精度為0.1OC。采用4位LED數碼管顯示溫度,一位小數、三位整數。正溫度時,最高位顯示百位溫度或不顯示,負溫度時最高位顯示符號“-”。系統采用12M晶振。

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

三、軟件設計系統程序主要包括主程序、溫度轉換子程序、溫度BCD碼轉換子程序、顯示緩沖區刷新子程序、顯示子程序等。

1.主程序主程序的主要功能是進行溫度轉換、溫度BCD碼轉換、顯示緩沖區刷新及溫度顯示等,見流程圖圖7-92.溫度讀取子程序該子程序的功能是啟動DS18B20溫度轉換,并將DS18B20RAM中的前兩個字節溫度數據讀入單片機指定存儲單元中。其流程圖見圖7-10。

數字溫度計設計(一)基礎篇3.溫度BCD碼轉換子程序該子程序的功能是判別所測溫度的正負值,并將其小數及整數部分分別轉換成BCD碼,再存入單片機指定的溫度存儲單元中。表7-5小數部分二進制和十進制的近似對應關系表二進制值0123456789ABCDEF十進制值00112334556678894.顯示緩沖區刷新子程序該子程序將壓縮BCD碼溫度數據拆分后裝入顯示緩沖區70H—73H中。基礎篇四、源程序清單應用程序清單如下(程序僅供參考):/***********************************************************程序描述:溫度超過35度,繼電器吸合P0端驅動共陽七段數碼管,P2端接共陽數碼管的公共端***********************************************************/#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;//定義變量

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

delay(10); //稍做延時

DATA=0; //單片機將DQ拉低

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

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

delay(30);}基礎篇/****讀一個字節******/ReadOneChar(void){ uchari=0; uchardat=0; for(i=8;i>0;i--) DATA=0; //給脈沖信號

dat>>=1; DATA=1; //給脈沖信號

if(DATA) dat|=0x80; delay(8); } return(dat);}基礎篇/*****8寫一個字節*****/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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論