溫度傳感器 程序.doc_第1頁
溫度傳感器 程序.doc_第2頁
溫度傳感器 程序.doc_第3頁
溫度傳感器 程序.doc_第4頁
溫度傳感器 程序.doc_第5頁
全文預覽已結束

下載本文檔

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

文檔簡介

第4章 系統程序的設計4.1 系統設計內容系統程序主要包括主程序、讀出溫度子程序、溫度轉換命令子程序、計算溫度子程序、測量序列號子程序、顯示數據刷新子程序等。4.1.1主程序 主程序主要功能是負責溫度的實時顯示、讀出處理DS18B20的測量溫度值。主程序流程圖如圖4-1所示:開始調用顯示子程序顯示當前四路溫度初始化讀取并顯示序列號圖4-1 主程序流程圖4.1.2讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節。在讀出時須進行CRC校驗,校驗有錯時不進行溫度數據的改寫。讀出溫度子程序流程圖如圖4-2所示: 開始復位DS18B20發跳過ROM命令發出溫度轉換命令轉換完畢復位DS18B20發匹配ROM命令發1個DS18B20序列號讀溫度值存入儲存器指向下一個延時NY圖4-2 讀出溫度子程序流程圖4.1.3 溫度轉換命令子程序溫度轉換命令子程序主要是發溫度轉換開始命令,當采用12位分辨率時,轉換時間約為750ms。在本程序設計中,采用1s顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖如圖4-3所示:發DS18B20復位命令發跳過ROM命令發溫度轉換開始命令結束圖4-3 溫度轉換命令子程序流程圖4.1.4計算溫度子程序 計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定。計算溫度子程序流程圖如圖4-4所示:開始溫度零下?溫度值取補碼置“-”標志位計算小數位溫度BCD值計算小數位溫計算小數位溫度BCD值度BCD值結束置“+”標志NY圖4-4 計算溫度子程序流程圖4.1.5 溫度數據的計算處理方法 從DS18B20讀取出的二進制值必須轉換成十進制值,才能用于字符的顯示。DS18B20的轉換精度為912位,為了提高精度采用12位。在采用12位轉換精度時,溫度寄存器里的值是以0.0625為步進的,即溫度值為寄存器里的二進制值乘以0.0625,就是實際的十進制溫度值。通過觀察表4-1可以發現,一個十進制與二進制間有很明顯的關系,就是把二進制的高字節的低半字節和低字節的高半字節組成一字節,這個字節的二進制化為十進制后,就是溫度值的百、十、個位字節,所以二進制值范圍是0F,轉換成十進制小數就是0.0625的倍數(015倍)。這樣需要4位的數碼管來表示小數部分。實際應用不必這么高的精度,采用1位數碼管來顯示小數,可以精確到0.1。表4.5 二進制與十進制的近似對應關系表小數部分二進制值0123456789ABCDEF十進制值00112334556678894.2 源程序4.2.1 DS18B20的各條ROM命令 (1)Read ROM33H。這條命令允許總線控制器獨到DS18B20的8位系列編碼、唯一的序列號和8位CRC碼。只要在總線上存在單只DS18B20時,才能使用該命令。如果總線上有不止一個從機,則當所有從機試圖同時傳送信號時就會發生數據沖突(漏極開路連在一起形成相“與”的效果)。(2)Match ROM55H.這是一條匹配ROM命令,后跟64位ROM序列,讓總線控制器在多點總線上定位一只特定的DS18B20.只有與64位ROM序列完全匹配的DS18B20才能響應隨后的存儲器操作.所有與64位ROM序列不匹配的從機都將等待復位脈沖.這條命令在總線上有單個或多個器件時都可以使用.(3)Skip ROM0CCH.這條命令允許總線控制器不用提供64位ROM編碼就使用存儲器操作命令,在單點總線情況下,可以節省時間.如果總線上不止一個從機,則在Skip ROM命令之后跟著發一條讀命令.由于多個從機同時傳送信號,所以總線上就會發生數據沖突(漏極開路下拉效果相當于相“與”)。(4)Search ROM0F0H。當一個系統初次啟動時,總線控制器可能并不知道單線總線上有多少個器件或它們的64位ROM編碼。搜索ROM命令允許總線控制器用排除法識別總線上的所有從機的64位編碼。(5)Alarm Search0ECH。這條命令的流程與Search ROM相同。然而,只有在最近一次測溫后遇到符合報警條件的情況下,DS18B20才會響應這條命令。報警條件定義為溫度高于TH或低于TL。只要DS18B20不掉電,報警狀態將一直保持,直到再一次測得的溫度值達不到報警條件。(6)Write Scratchpad4EH。這條命令向DS18B20的暫存器TH和TL中寫入數據。可以在任何時刻發出復位命令來中止寫入。(7)Read Scratchapad0BEH。這條命令讀取暫存器的內容。讀取將從第一字節開始,一直進行下去,直到第九字節(CRC)讀完。如果不想讀完所有字節,則控制器可以在任何時間發出復位命令來中止讀取。(8)Copy Scratchpad48H。這條命令把暫存器的內容拷貝到DS18B20的EPROM存儲器里,即把溫度報警觸發字節存入非易失性存儲器里。如果總線控制器在這條命令之后跟著發出讀時間隙,而DS18B20又忙于把暫存器拷貝到EPROM存儲器,則DS18B20就會輸出一個0;如果拷貝結束,則DS18B20輸出1。如果使用寄生電源,則總線控制器必須在這條命令發出后立即啟動強上拉,并最少保持10ms。(9)Convert T44H。這條命令啟動一次溫度轉換而無需其他數據。溫度轉換命令被執行后DS18B20保持等待狀態。如果總線控制器在這條命令之后跟著發出讀時間隙,而DS18B20又忙于做時間轉換,則DS18B20將在總線上輸出0;如果溫度轉換成功,則輸出1。如果使用寄生電源,則總線控制器必須在發出這條命令后立即啟動強上拉,并保持500ms以上時間。(10)Recall E0B8H。這條命令把報警觸發器里的值拷貝回暫存器。這種拷貝操作在DS18B20上電時自動執行,這樣器件一上電暫存器里馬上就存在有效

溫馨提示

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

評論

0/150

提交評論