溫度傳感器實驗設計_第1頁
溫度傳感器實驗設計_第2頁
溫度傳感器實驗設計_第3頁
溫度傳感器實驗設計_第4頁
溫度傳感器實驗設計_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、成都理工大學工程技術學院本科課程設計報告成都理工大學工程技術學院單片機課程設計報告數字溫度計設計 摘要在這個信息化高速發展的時代,單片機作為一種最經典的微控制器,單片機技術已經普及到我們生活,工作,科研,各個領域,已經成為一種比較成熟的技術,作為自動化專業的學生,我們學習了單片機,就應該把它熟練應用到生活之中來。本文將介紹一種基于單片機控制的數字溫度計,本溫度計屬于多功能溫度計,可以設置上下報警溫度,當溫度不在設置范圍內時,可以報警。本文設計的數字溫度計具有讀數方便,測溫范圍廣,測溫精確,數字顯示,適用范圍寬等特點。關鍵詞:單片機,數字控制,數碼管顯示,溫度計,DS18B20,AT89S52。

2、 目錄1概述41.1設計目的41.2設計原理41.3設計難點42 系統總體方案及硬件設計42.1數字溫度計設計方案論證52.2.1 主控制器52.4 系統整體硬件電路設計73系統軟件設計83.1初始化程序83.2讀出溫度子程序93.3讀、寫時序子程序103.4 溫度處理子程序113.5 顯示程序124 Proteus軟件仿真135硬件實物146課程設計體會.15附錄1:16附錄2:.211概述1.1設計目的 隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現代人工作、科研、生活、提

3、供更好的更方便的設施就需要從數單片機技術入手,一切向著數字化控制,智能化控制方向發展。本設計所介紹的數字溫度計與傳統的溫度計相比,具有讀數方便,測溫范圍廣,測溫準確,其輸出溫度采用數字顯示,主要用于對測溫比較準確的場所,或科研實驗室使用,可廣泛用于食品庫、冷庫、糧庫、溫室大棚等需要控制溫度的地方。目前,該產品已在溫控系統中得到廣泛的應用。1.2設計原理 本系統是一個基于單片機AT89S52的數字溫度計的設計,用來測量環境溫度,測量范圍為-50110度。整個設計系統分為4部分:單片機控制、溫度傳感器、數碼顯示以及鍵盤控制電路。整個設計是以AT89S52為核心,通過數字溫度傳感器DS18B20來實

4、現環境溫度的采集和A/D轉換,同時因其輸出為數字形式,且為串行輸出,這就方便了單片機進行數據處理,但同時也對編程提出了更高的要求。單片機把采集到的溫度進行相應的轉換后,使之能夠方便地在數碼管上輸出。LED采用三位一體共陽的數碼管。1.3設計難點 此設計的重點在于編程,程序要實現溫度的采集、轉換、顯示和上下限溫度報警,其外圍電路所用器件較少,相對簡單,實現容易。2 系統總體方案及硬件設計2.1數字溫度計設計方案論證由于本設計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應,在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉換后,就可以用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯

5、示出來,這種設計需要用到A/D轉換電路,感溫電路比較麻煩。進而考慮到用溫度傳感器,在單片機電路設計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉換,就可以滿足設計要求。2.2總體設計框圖溫度計電路設計總體設計方框圖如圖1所示,控制器采用單片機AT89S52,溫度傳感器采用DS18B20,用3位共陰LED數碼管以串口傳送數據實現溫度顯示。晶振電路AT89S52 單 片 機 主 控 電 路三位LED顯示電路溫度檢測電路DS18B20 復 位 電 路圖1 總體設計框圖2.2.1 主控制器單片機AT89S52具有

6、低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統的設計需要,適合便攜手持式產品的設計使用。AT89S52單片機芯片具有以下特性:1)指令集合芯片引腳與Intel公司的8052兼容;2)4KB片內在系統可編程FLASH程序存儲器;3)時鐘頻率為033MHZ;4)128字節片內隨機讀寫存儲器(RAM);5)6個中斷源,2級優先級;6)2個16位定時/記數器;7)全雙工串行通信接口;8)監視定時器;9)兩個數據指針;2.2.2 顯示電路 2.2.3溫度傳感器DS18B20溫度傳感器是美國DALLAS半導體公司推出的一種改進型智能溫度傳感器,與傳統的熱敏電阻等測溫元件相比,它能直接讀出被

7、測溫度,并且可根據實際要求通過簡單的編程實現9-12位的數字值讀數方式。DS18B20的性能特點如下:1.全數字溫度轉換及輸出。2.先進的單總線數據通信。3.最高12為位分辨率,精度可達0.5攝氏度。4.12位分辨率時的最大工作周期為750毫秒。5.可選擇寄生工作方式。6.檢測溫度范圍為+55+125(-67+257)。7.內置EEPROM,限溫報警功能。8.64位光刻ROM,內置產品序列號,方便多機鏈接。9.多樣封裝形式,便于不同硬件系統。若要讀出當前的溫度數據我們需要執行兩次工作周期,第一個周期為復位、跳過 ROM 指令、執行溫度轉換存儲器操作指令、等待 500uS 溫度轉換時間。緊接著執

8、行第二個周期為復位、跳過 ROM指令、執行讀 RAM 的存儲器操作指令、讀數據2.3 DS18B20溫度傳感器與單片機的接口電路2.4 系統整體硬件電路設計2.4.1 主板電路 系統整體硬件電路包括,傳感器數據采集電路,溫度顯示電路,上下限報警調整電路,單片機主板電路等,單片機主板電路如圖5 所示: 圖5 單片機主板電路2.4.2 顯示電路 圖6 溫度顯示電路3 系統軟件設計系統程序主要包括主程序,讀出溫度子程序,溫度轉換命令子程序,計算溫度子程序,顯示數據刷新子程序等。3.1初始化程序復位:首先我們必須對 DS18B20 芯片進行復位,復位就是由控制器(單片機)給 DS18B20單總線至少

9、480uS 的低電平信號。當 18B20 接到此復位信號后則會在 1560uS 后回發一個芯片的存在脈沖。結束釋放總線發出存在脈沖,低電平持續120 us釋放總線延遲發出復位脈沖保持500us等待100us釋放總線釋放總線并進入接收狀態DSl820在檢測到總線的上升沿之后等待30us 圖7 初始化程序流程圖3.2讀出溫度子程序讀時間隙時控制時的采樣時間應該更加的精確才行,讀時間隙時也是必須先由主機產生至少1us的低電平,表示讀時間的起始。隨后在總線被釋放后的15us 中 DS18B20會發送內部數據位,這時控制如果發現總線為高電平表示讀出“1”,如果總線為低電平則表示讀出數據“0”。每一位的讀

10、取之前都由控制器加一個起始信號。讀出溫度子程序的主要功能是讀出RAM中的2字節,讀出溫度的低八位和高八位,在讀出時需進行CRC校驗,校驗有錯時不進行溫度數據的改寫。其程序流程圖如圖8示 發出18B20復位命令發跳過ROM命令發讀取溫度命令2字節是否讀完?YN移入溫度暫存器圖8 讀溫度程序流程圖3.3讀、寫時序子程序讀寫的程序是本次設計中的重點和難點,通過我們對其時序的分析,從而寫出高效的程序。等待設置讀位數R5NR5-1=0?C清零,把A環移給C設置寫位數R5C=1?釋放總線延遲寫0復位Y寫1N釋放總線總線上的數給CY延遲結束NR5-1=0?寫時序子程序流程圖Y 結束 讀時序子程序流程圖 3.

11、4 溫度處理子程序計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如圖11所示取30H的高4位位溫度低4位取31H的低4位位溫度高4位高低4位組合成溫度溫度除以10余數為溫度個位放42H商再除以10余數為溫度十位放43H結束取30H的低4位為溫度小數經查表得,放于41H圖11 溫度處理程序流程圖 3.5 顯示程序此函數實現的對數碼管顯示的處理,其亮點在于可以直接對數碼管進行操作,其本身是個兩變量函數,第一個變量是要開通的位選,第二個變量是要顯示的數據,這樣我們可以直接方便而又簡單直觀的對數碼管進行操作。程序流程圖如圖12。 22H取反21H取反21H=

12、1?22H=1?開始選中各位小數點點亮選中小數位小數點不亮選中十位小數點不亮YNYN結束 4 Proteus軟件仿真6 課程設計體會 通過為時2周的單片機課程設計,在老師的知道和幫助下我我和我的搭檔共同完成數值溫度級的設計學習。其中包擴了程序的學習與修改,程序的仿真,電路的仿真以及實體電路的搭建,使之可以初略的讀出溫度值。通過這次課程設計我學到了許多的知識,了解了DS18B20的使用和接線的方法,了解了數碼管的顯示原理。學會了單片機程序寫入的方法,更加熟悉了單片機的一些常用管腳的功能。 同時,在課程設計的過程中,我也發現了自己很多的不足之處,一些單片機用到的匯編指令不熟悉。也暴露了在單片機理論

13、課上學到的知識掌握的不好。還有一點就是理論與實際的聯系對我們學習和掌握單片機是非常有幫助的。 參考文獻1DS18b20數據手冊。2 求是科技編著8051系列單片機C程序設計完全手冊北京: 人民郵電出版社, 20063 余發山,王福忠.單片機原理及應用技術.徐州:中國礦業大學出版社,2003附錄1:程序 DQ BIT P3.7 ; 1 wire line DP BIT P2.0 swpH equ 0d2H swpL equ 0ffH WDLSB DATA 30H ; WDMSB DATA 31H ;* ORG 0000H LJMP MAIN ORG 000BH LJMP TMR0 ; Timer

14、0 isr;*; Timer0 Interrupt Service RoutineTMR0: MOV TH0,#swpH ;輪流送溫度值的高低兩位到數碼管.swph為0d2H MOV TL0,#swpL JB 21H,DSL JB 22H,DSL1 MOV P0,43H ORL P0,#01000000B ; 十位位選 SETB P2.0;小數點不亮 SJMP EXITDSL: MOV P0,42H ORL P0,#00100000B ; 個位位選 CPL P2.0;個位后面小數位亮 SJMP EXIT1DSL1:MOV P0,41H ORL P0,#00010000B ;小數位位選SETB

15、P2.0;小數點不亮SJMP EXIT2;DSL2: ; MOV P0,40H;ORL P0,#10000000B;SETB P2.0;SJMP EXIT3EXIT: CPL 21H; 21h取反,即21h=1 RETI EXIT1: CPL 22H; 22h=1 CPL 21H ;21h=0 RETI EXIT2: ; CPL 23H; CPL 22H ;22h=0 RETI ; Main programMAIN: TOINIT: CLR EA MOV TMOD,#01H MOV TH0,#swpH MOV TL0,#swpL SETB EA SETB ET0 SETB TR0 ;* ;41

16、H-43H清零 MOV R2,#3 MOV R0,#41H OVER: MOV R0,#00H INC R0 DJNZ R2,OVER ;OVER執行完 LOOP: LCALL DSWD SJMP LOOP;*; Read a temperature from the DS18B20DSWD: LCALL RSTSNR ; Init of the DS18B20 JNB F0,KEND MOV R0,#0CCH ;要寫的數給R0 LCALL SEND_BYTE ;調用寫程序 MOV R0,#44H LCALL SEND_BYTE ; Send a Convert Command (送一個溫度轉

17、換指令) SETB EA;延遲 MOV 48H,#1 ;1us SS2: MOV 49H,#255 ;1usSS1: MOV 4AH,#255 ;1usSS0: DJNZ 4AH,SS0 ;2us/次,255*2 DJNZ 49H,SS1 ;2us/次,255次 DJNZ 48H,SS2 ;2us 總時間 1+1+(1+255*2+2)*255+2 CLR EA ;進入讀時序禁用任何中斷 LCALL RSTSNR JNB F0,KEND MOV R0,#0CCH LCALL SEND_BYTE MOV R0,#0BEH LCALL SEND_BYTE ; Send Read Scratchpa

18、d command LCALL READ_BYTE ; Read the low byte from scratchpad MOV WDLSB,A ; Save the temperature (low byte) LCALL READ_BYTE ; Read the high byte from scratchpad MOV WDMSB,A ; Save the temperature (high byte) LCALL TRANS12KEND: SETB EA RET;*;TRANS12: MOV A,30H ;30H存從1820取的溫度值 ANL A,#0F0H ;取WDLSB高4為(低

19、位置0) MOV 3AH,A MOV A,31H ANL A,#0FH ;取WDMSB的低4位(高位置0) ORL A,3AH ;將WDLSB的高4為與WDMSB的低4位組合 SWAP A ;高低位互換 A溫度 MOV B,#10 ;轉換為10進制 DIV AB ;A/B A為商 B為余數 MOV 42H,B ;B為個位 42H中放個位 MOV b,#10 DIV ab MOV 43H,B ;43十位 MOV A,30H ANL A,#0FH MOV DPTR,#tab1 MOVC A,a+DPTR MOV 41H,A RET;*; Send a byte to the 1 wire line

20、 寫SEND_BYTE: ; MOV A,R0 MOV R5,#8 ;設置寫位個數SEN3: CLR C RRC A ;把一個字節data(A)分成8個bit環移給 C JC SEN1 LCALL WRITE_0 ;等待60us SJMP SEN2SEN1: LCALL WRITE_1SEN2: DJNZ R5,SEN3 ;寫下一位 RET;*; Read a byte from the 1 wire line 讀READ_BYTE: MOV R5,#8READ1: LCALL READ RRC A DJNZ R5,READ1 MOV R0,A RET;*; Reset 1 wire line 初始化RSTSNR: SETB DQ NOP NOP CLR DQ ;發送一復位脈沖 MOV R6,#250 DJNZ R6,$ ;保持低電平500us MOV R6,#50 DJNZ R6,$ SETB DQ ;釋放總線 MOV R6,#15 DJNZ R6,$ ;釋放總線并進入接收狀態DSl820在檢測到總線的上升沿之后等待30us CALL CHCK ;

溫馨提示

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

評論

0/150

提交評論