DS18B20實現測溫功能_第1頁
DS18B20實現測溫功能_第2頁
DS18B20實現測溫功能_第3頁
DS18B20實現測溫功能_第4頁
DS18B20實現測溫功能_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、題目:室內溫度檢測系統一 實驗要求:用溫度傳感器DS18B20實現能檢測室內環境溫度(-10oC40。,要求用2位或多位LED 顯示;要求能有報警功能,當溫度超過報警上限時要能報警,報警上限要能通過鍵盤設定;自己制作電路板。 (可考慮留有上傳溫度數據的接口)二 設計思想和說明:室內溫度檢測系統是由 AT89C51 單片機和溫度傳感器 DS18B20 和實現對溫度檢測。由 DS18B20 將測得的溫度通過 DQ 端傳給單片機,再通過單片機在 LED 上顯示,完成測溫功三器件清單器件名稱數量 TOC o 1-5 h z AT89C51 單片機1溫度傳感器 DS18B2014 位 LED 數碼顯示器

2、1晶振 11.0592 Mhz174LS2451蜂鳴器1三極管 2N39045按鈕533 pf 電容210 uf 電容14.7k 電阻710k 電阻50.1k 電阻11 k 電阻45V 電源1四硬件原理圖0打四硬件原理圖0打R45 卜10k丿2A0B0A1B1A2B2A3B3A4B4A5B5A6B6A7B7CEPO.O/ADtP0.1/AD-PO.2/AD2P0.3/AD:P0.4/AD4PO.5/AD5PO.6/AD6PO.7/AD7P2.O/A8P2.1/A9P2.2/A1tP2.3/A1- P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15P3.2/INT(P3.3/

3、INTP3.4/T0P3.5/T1 :3 6/WRP3.7/RD室內溫度檢測系統硬件原理圖五硬件原理圖與其軟件配合介紹DS18B20的DQ端與單片機的P2.0 口相連,進行數據傳送。DS1882O內部結構主要由 4部分組成:64位光刻ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄 存器。根據 DSl8820 的通信協議,主機控制 DSl8820 完成溫度轉換必須經過 3 個步驟:每 一次讀寫之前都要對其進行復位,復位成功后發送 1 條 ROM 指令,最后發送 RAM 指令, 這樣才能對DS18820進行預定的操作。復位要求主CPU將數據線下拉500戶,然后釋放, DS18820收

4、到信號后等待166oys左右,后發出6o240/的存在低脈沖,主CPU收到 此信號表示復位成功。由于 DSl8820 采用的是單線進行控制與讀取數據,因此對操作的時 序要求非常嚴格,否則由于時序不匹配,將無法完成對器件的正確操作。P0 口與 4位 LED 顯示的“字型碼”端相連, P1 口的低四位與 4位 LED 顯示的“位” 選擇相連,實現將從 DS18B20 中讀取的數據顯示出來。 P1 口的高四位,分別接四個按鈕,實現對溫度的設置。P1.4接“溫度設置”按鈕,P1.5接“開始測溫”按鈕,P1.6接“增加 溫度”按鈕, P1.7 接“減小溫度”按鈕。 P3.4 口接警鈴,當溫度高于設定溫度

5、時,可實現 報警功能。每次用P1 口讀入數據時,都要先置1,而后讀入數據,如:SETB P1.4相關代碼如下:SET_TEMPER相關代碼如下:SET_TEMPERLCALL INIT_18B20LCALL GET_TEMPERLCALL CHANGE16LCALL DISPLAYMOV DPTR,#NUMTABMOVC A,A+DPTR六程序流程圖;對 DS18B20 初始化;獲取溫度數據;將得到的 16 進制溫度值轉換為 10 進制數;采用查表法顯示溫度度上限Q始測溫?否修改溫是否要是否開Q設溫度上限初值設置溫度上限開始測溫結束;將得到的溫度顯示出來;采用查表法顯示溫度度上限Q始測溫?否修

6、改溫是否要是否開Q設溫度上限初值設置溫度上限開始測溫結束溫度上限 初值設置開始開始初始化DS18B20向 DS18B20 送 OCCH, 命令跳過ROM區向DS18B20送溫度轉 換命令44H,等750ms 復位讀取溫度值送TEMPER_H和TEMPER_L兩單元中結束讀溫度初始化 DS18B20取 TEMPER_L 和 TEMPER_H 兩 單元中的數據,將 TEMPER_H 的低半字節和TEMPER_L的高 半字節整合再一起,獲得溫度值 的整數部分將16進制溫度值轉換為十進 制數結束寫 DS18B20獲得溫度整數部分結果送顯示MOV66H,#26CLRMOV66H,#26CLRCMOVP3

7、.4,CMOVR3,#0F0HWAIT1:MOV60H,66HLCALLCHANGE16LCALLDISPLAYDJNZR3,WAIT1CLRP1.4CLRP1.5MOV SP,#80HWAIT4:七源程序清單部分內存分配聲明TEMPER_LEQU31H;用于保存讀出溫度的低字節TEMPER_HEQU30H;用于保存讀出溫度的高字節DATBITP2.2; DS18B20 數據線設置上限溫度ORG 0000H;66H 為溫度初值存儲地址(溫度上限);欲設溫度上限為 26 度;關閉蜂鳴器;延時;初始溫度 送顯示,60H為16進制數暫存地址CLRCSETB P1.4SETB P1.5NOPJNB P

8、1.4,SET_TEMPER ;判斷是否需要設置溫度JNB P1.5,STARTAJMP WAIT4設置溫度子程序SET_TEMPER:CLRP1.6CLRP1.7CLRP1.5NOPNOPSETBP1.6SETBP1.7SETBP1.5NOPSET_1:JNBP1.6,UP1;溫度值加 1JNBP1.7,DOWN1;溫度值減 1JNBP1.5,START;開始測溫AJMP SET_1 加 溫度子程序UP1:MOVA,66HADDCA,#01HMOV66H,AMOVR3,#0FFHWAIT2:MOV60H,66HLCALLCHANGE16_0LCALLDISPLAYDJNZR3,WAIT2LJ

9、MPSET_TEMPER9 減 溫度子程序DOWN1:MOV A,66HSUBB A,#01HMOV 66H,AMOV R3,#0FFHWAIT3:MOV 60H,66HLCALL CHANGE16_0LCALL DISPLAYDJNZLJMPR3,WAIT3SET_TEMPER9START:主函數開始-LCALLGET_TEMPER;調用讀溫度子程序LCALLCHANGE16;將讀出的 2 字節溫度整合,并轉換為壓縮 BCD 碼LCALLDISPLAY;顯示溫度LJMPSTART;DS18B20 的溫度轉換子程序GET_TEMPER:LCALLINIT_18B20TSS:MOVA,#0CCH

10、;跳過 ROM 匹配LCALLWRITE_18B20MOVA,#44H;發出溫度轉換命令LCALLWRITE_18B20LCALLDISPLAY;用顯示溫度(持續 1s 左右)來等待 AD 轉換結束;12 位的話要轉換 750msLCALLINIT_18B20;準備讀溫度前先初始化MOVA,#0CCH;跳過 ROM 匹配LCALLWRITE_18B20MOVA,#0BEH;發出讀溫度命令LCALL WRITE_18B20LCALL READ_18B20RETDS18B20 初始化程序INIT_18B20:SETBDATNOPCLRDATMOVR2,#250;主機發出延時 500 微秒的復位低脈

11、沖DJNZR2,$SETBDAT;然后拉高數據線MOVR2,#30DJNZR2,$;延時 240usJNBDAT,INIT1;數據變高,初始化成功LJMPINIT_18B20INIT1:MOVR2,#120DJNZR2,$JBDAT,INIT2LJMP INIT_18B20INIT2:MOV R2,#240DJNZ R2,$RET;寫 DS18B20 的子程序(有具體的時序要求)WRITE_18B20: MOV R2,#8 ;一共 8 位數據CLR CWR0:CLR DATMOV R3,#5DJNZ R3,$RRC AMOV DAT,CMOV R3,#21DJNZ R3,$SETB DATNO

12、PDJNZ R2,WR0SETB DATRET; 讀DS18B20的程序,從DS18B20中讀出兩個字節的溫度數據READ_18B20:MOVR4,#2;將溫度高位和低位從 DS18B20 中讀出MOVR1,#TEMPER_L;低位存入 31H(TEMPER_L)RE0:MOV R2,#8RE1:CLR CSETB DATNOPNOPCLR DATNOPNOPSETB DATMOV R3,#4DJNZ R3,$MOV C,DATRRC AMOV R3,#30DJNZ DJNZ MOV DECDJNZ RETR3,$R2,RE1R1,AR1 ;高位存入 30H(TEMPER_H)R4,RE0;整

13、合讀出的兩字節溫度(關于DS18B20讀出的2字節溫度格式請參考資料)CHANGE16:CLRCMOVP3.4,CMOVR0,#65HMOVA,TEMPER_LSWAPAMOVR0,AMOVA,TEMPER_HSWAPAXCHDA,R0MOV60H,A;獲得整數部分(1 字節)MOVA,66HCLRCSUBBA,60H;判斷實際溫度是否高于溫度上限JNB ACC.7,CHANGE16_0SETB CMOV P3.4,C; 將得到的 16 進制溫度轉化為 10 進制數CHANGE16_0:MOVA,60HJBACC.7,FUSHU;判斷是否為負數MOV64H,#00HMOVB,#100;將 16

14、 進制數轉換為 10 進制數DIVABMOV63H,AMOVA,BMOVB,#10DIVABMOV62H,AMOVA,BMOV61H,AAJMPBACK1FUSHU:MOV64H,#0AHMOVA,60HCPLAINCAMOV60H,AMOVB,#100DIVABMOV63H,AMOVA,BMOVB,#10DIVABMOV62H,AMOVA,BMOV61H,ABACK1:RET9DS18B20 的溫度轉換子程序DISPLAY:MOVR0,#61H;61H 為暫存地址MOVR1,#04H;4 位數MOVR2,#00000001B;從低位開始顯示LOOP:MOVA,#0FFHMOVP0,AMOVA,R0MOVDPTR,#NUMTAB;查表MOVCA,A+DPTRCPLAMOVP0,A;送字型碼MO

溫馨提示

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

評論

0/150

提交評論