單片機課程設計報告(數字溫度計)[1]_第1頁
單片機課程設計報告(數字溫度計)[1]_第2頁
單片機課程設計報告(數字溫度計)[1]_第3頁
單片機課程設計報告(數字溫度計)[1]_第4頁
單片機課程設計報告(數字溫度計)[1]_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機課程設計報告 基于單片機的數字溫度計設計 1 緒論2 方案設計3 系統(tǒng)的硬件設計3.1 主控制器3.2 顯示電路3.3 溫度傳感器工作原理3.4 溫度傳感器接口電路4 系統(tǒng)的軟件設計4.1 主程序4.2 溫度測量4.2.1 初始化DS18B204.2.2 等待應答信號4.2.3 DS18B20讀字節(jié)4.2.4 DS18B20寫字節(jié)4.2.5 啟動溫度測量4.2.6 讀取測量結果4.2.7各算法流程圖4.3 數碼管顯示5 系統(tǒng)的測試與總結參考文獻附錄1 原理圖附錄2 源程序清單1 緒 論隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數

2、字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現代人工作、科研、生活提供更好的更方便的設施就需要從單片機技術入手,一切向著數字化控制,智能化控制方向發(fā)展。   現代社會對各種信息參數的準確度和精確度的要求都有了幾何級的增長,而如何準確而又迅速的獲得這些參數就需要受制于現代信息基礎的發(fā)展水平。在三大信息信息采集(即傳感器技術)、信息傳輸(通信技術)和信息處理(計算機技術)中,傳感器屬于信息技術的前沿尖端產品,尤其是溫度傳感器技術,在我國各領域已經引用的非常廣泛,可以說是滲透到社會的每一個領域,人民的生活與環(huán)境的溫度息息相關,在工業(yè)生產過程中需要實時測量溫度,在農業(yè)

3、生產中也離不開溫度的測量,因此研究溫度的測量方法和裝置具有重要的意義。測量溫度的關鍵是溫度傳感器,溫度傳感器的發(fā)展經歷了三個發(fā)展階段:傳統(tǒng)的分立式溫度傳感器模擬集成溫度傳感器智能集成溫度傳感器。目前的智能溫度傳感器(亦稱數字溫度傳感器)是在20世紀90年代中期問世的,它是微電子技術、計算機技術和自動測試技術(ATE)的結晶,特點是能輸出溫度數據及相關的溫度控制量,適配各種微控制器(MCU)。社會的發(fā)展使人們對傳感器的要求也越來越高,現在的溫度傳感器正在基于單片機的基礎上從模擬式向數字式,從集成化向智能化、網絡化的方向飛速發(fā)展,并朝著高精度、多功能、總線標準化、高可靠性及安全性、開發(fā)虛擬傳感器和

4、網絡傳感器、研制單片測溫系統(tǒng)等高科技的方向迅速發(fā)展,本文將介紹智能集成溫度傳感器DS18B20的結構特征及控制方法,并對以此傳感器,89S51單片機為控制器構成的數字溫度測量裝置的工作原理及程序設計作了詳細的介紹。與傳統(tǒng)的溫度計相比,其具有讀數方便,測溫范圍廣,測溫準確,輸出溫度采用數字顯示,主要用于對測溫要求比較準確的場所,或科研實驗室使用。該設計控制器使用ATMEL公司的AT89S52單片機,測溫傳感器使用DALLAS公司DS18B20,用數碼管來實現溫度顯示。2方案設計本設計主要是介紹了單片機控制下的溫度檢測系統(tǒng),詳細介紹了其硬件和軟件設計,并對其各功能模塊做了詳細介紹,其主要功能和指標

5、如下:利用溫度傳感器(DS18B20)測量某一點環(huán)境溫度測量范圍為-55125,精度為±0.5用數碼管進行實際溫度值顯示采用AT89S52單片機P3 .5口控制溫度傳感器DS18B20的溫度測量,以四位數碼感形式輸出測量溫度,原理圖如下圖1.1所示: 圖2.1 DS18B20與單片機接口原理 圖2.2總體設計方框圖 3 系統(tǒng)的硬件設計 3.1 主控制器 AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非 易失性存儲器技術制造,與工業(yè)80C51 產品指令和引腳完 全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程

6、,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提 供高靈活、超有效的解決方案。AT89S52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2 個數據指針,三個16 位 定時器/計數器,一個6向量2級中斷結構,全雙工串行口, 片內晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數器、串口、中斷繼續(xù)工 作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止

7、,直到下一個中斷或硬件復位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash AT89S52 圖3.1 時鐘電路與復位電路3.2顯示電路 顯示采用4位數碼管,圖3.2.1為數碼管段驅動,圖3.2.2為數碼管位驅動,圖3.2.3為溫度顯示電路 圖3.2.1數碼管段驅動 圖3.2.2數碼管位驅動 圖3.2.3溫度顯示電路3.3 溫度傳感器工作原理DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現位的數字值讀數方式。DS18B20的性能特點如下: 獨特的單線接口僅需一

8、個端口引腳進行通訊 簡單的多點分布應用 無需外部器件 可通過數據線供電 零待機功耗 測溫范圍-55+125,以0.5遞增。華氏器件-67+2570F,以0.90F 遞增 溫度以9 位數字量讀出 溫度數字量轉換時間200ms(典型值) 用戶可定義的非易失性溫度報警設置 報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件DS18B20內部結構主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列、各種封裝形式如圖 3.3.1所示,DQ 為數據輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源;GN

9、D為地信號;VDD為可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地。其電路圖 3.3.2所示.。 圖 3.3.1外部封裝形式 圖3.3.2傳感器電路圖DS18B20的測溫原理如圖3.3.3所示,圖中低溫度系數晶振的振蕩頻率受溫度的影響很小用于產生固定頻率的脈沖信號送給減法計數器1,高溫度系數晶振隨溫度變化其震蕩頻率明顯改變,所產生的信號作為減法計數器2的脈沖輸入,圖中還隱含著計數門,當計數門打開時,DS18B20就對低溫度系數振蕩器產生的時鐘脈沖后進行計數,進而完成溫度測量.計數門的開啟時間由高溫度系數振蕩器來決定,每次測量前,首先將-55 所對應的基數分別置入減法計數器1和溫度寄存器

10、中,減法計數器1和溫度寄存器被預置在-55 所對應的一個基數值。減法計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當減法計數器1的預置值減到0時溫度寄存器的值將加1,減法計數器 1的預置將重新被裝入,減法計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環(huán)直到減法計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數值即為所測溫圖2中的斜率累加器用于補償和修正測溫過程中的非線性其輸出用,于修正減法計數器的預置值,只要計數門仍未關閉就重復上述過程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。另外,由于DS18B20單線通信功能是分時完成的,他有嚴格

11、的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20(發(fā)復位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數據。圖3.3.3 DS18B20測溫原理圖在正常測溫情況下,DS1820的測溫分辨力為0.5,可采用下述方法獲得高分辨率的溫度測量結果:首先用DS1820提供的讀暫存器指令(BEH)讀出以0.5為分辨率的溫度測量結果,然后切去測量結果中的最低有效位(LSB),得到所測實際溫度的整數部分Tz,然后再用BEH指令取計數器1的計數剩余值Cs和每度計數值CD??紤]到DS1820測量溫度的整數部分以0.25、0.75為進位界限的關系,實際溫度T

12、s可用下式計算: 3.4 溫度傳感器接口電路 圖3.4.1溫度傳感器接口電路4 系統(tǒng)的軟件設計4.1 主程序/*- 主函數 -*/void main()while(1)Convert(); /調用啟動溫度轉換函數RdTemp(); /調用讀取溫度值函數 4.2 溫度測量4.2.1 初始化DS18B20/*- 初始化DS18B20 -*/void TxReset() uint i;DQ=0;/發(fā)送復位脈沖i=100;while(i>0) i-; /拉低900us DQ=1; /釋放總線i=4;while(i>0) i-;4.2.2 等待應答信號/*- 等待DS18B20應答 -*/v

13、oid RxWait() uint i;while(DQ); /等待15-60uswhile(DQ); /DS18B20發(fā)出存在脈沖60-240usi=4;while(i>0) i-;4.2.3 DS18B20讀字節(jié)/*- 讀取一位數據 -*/bit RdBit()uchar i;bit b;DQ = 0; /讀開始1usi+;DQ = 1; /產生讀時間隙15usi+;i+;b = DQ; /讀位i = 8;while(i>0) i-; /等待60usDQ = 1; /釋放總線return b;/*- 讀取字節(jié)數據 -*/uchar RdByte()uchar i,j,d;d=0

14、;for(i=0;i<8;i+) /各位由低向高讀出DS18B20j=RdBit();d=(j<<7)|(d>>1);return d;4.2.4 DS18B20寫字節(jié)/*- 寫入字節(jié)數據 -*/void WrByte(uchar d)uint i;uchar j;bit btmp;for(j=0;j<8;j+) /各位由低向高寫入DS18B20btmp=d&0x01;d=d>>1;if(btmp) /寫1DQ=0; /延時15usi+;i+;DQ=1; /寫1時隙不低于60ui=8;while(i>0) i-;else /寫0DQ

15、=0;i=8;while(i>0) i-; /保持低電平60us到120usDQ=1; /釋放總線i+;i+;4.2.5 啟動溫度測量/*- 啟動溫度測量-*/void Convert()uint i;Delay(125); /延時1msTxReset(); /初始化DS18B20RxWait(); /等待DS18B20答應Delay(125); /延時WrByte(0xcc); /跳過ROM命令WrByte(0x44); /溫度轉換命令for(i=0;i<250;i+) /延時1sDisplay();4.2.6 讀取測量結果/*- 讀取溫度值 -*/void RdTemp(voi

16、d)short int temp;uint x;bit flag = 1;TxReset(); /初始化DS18B20RxWait(); /等待DS18B20應答Delay(125); /延時WrByte(0xcc); /跳過ROM命令WrByte(0xbe); /讀暫存存儲器命令templow = RdByte(); /溫度值低字節(jié),低4位為小數temphigh = RdByte(); /溫度值高字節(jié)temp = (temphigh << 8) | templow; /溫度為16位補碼if(temp<0) /負溫度flag = 0;temp = temp + 1;tempz

17、heng = temp >> 4; /溫度值整數 x = temp & 0x000f; tempxiao = (x*10)/16; /溫度值小數if(flag) /正溫度disp0 = tempzheng/100; /百位else /負溫度disp0 = 16; /負號disp1 = (tempzheng%100)/10; /十位disp2 = tempzheng%10; /個位disp3 = tempxiao; /小數 4.2.7各算法流程圖圖 4.2.7.1DS18B20初始化流程圖 圖4.2.7.2主程序流程圖 開始溫度零下?溫度值取補碼置“”標志計算小數位溫度BCD

18、值 計算整數位溫度BCD值 結束置“+”標志NY 發(fā)DS18B20復位命令發(fā)跳過ROM命令發(fā)溫度轉換開始命令 結束圖4.2.7.3 溫度轉換流程圖 圖4.2.7.4計算溫度流程圖 開始溫度零下?溫度值取補碼置“”標志計算小數位溫度BCD值 計算整數位溫度BCD值 結束置“+”標志NY圖4.2.7.5顯示數據刷新流程圖4.3 數碼管顯示/*- 數碼管顯示 -*/void Display() uchar i,j; j=0x08;for(i=0;i<4;i+) P1=j; /數碼管位碼輸出LOCK=1; /打開鎖存if(i=2) P0=leddispi|0x01; /顯示小數點 else P0

19、=leddispi; /數碼管段碼輸出 LOCK=0; /關閉鎖存j=j>>1; /調整位碼 Delay(125);P0=0x00; 5 系統(tǒng)的測試與總結5.1 測試時的圖片 圖5.1.1溫度傳感器 圖5.1.2測試時室內溫度顯示 圖5.1.3測試時手握住傳感器時的溫度顯示5.2總結 通過近兩個星期的單片機課程設計,我終于完成了“基于單片機的數字溫度計設計”,心中不免有些高興,但高興之余也有我值得深思的。 雖然以前做過類似的實驗,但這次的課程設計還是讓我學到了很多東西,單片機課程設計重點就在于軟件算法的設計,需要有很巧妙的程序算法。有好多的東西,只有我們去試著做了,才能真正的掌握,

20、只學習理論有些東西是很難理解的,更談不上掌握。通過這次的單片機課程設計我認識到了,學習要理論聯(lián)系實際,把學到的理論知識同實際運用相結合,才能是我們的知識融匯貫通,才能真正的學到知識,真正的做到學以致用。附錄1 原理圖附錄2 源程序清單#include <reg52.h>#define ulong unsigned long#define uint unsigned int#define uchar unsigned charuchar code led= 0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0, 0xfe,0xf6,0xee,0x3e,0x9

21、c,0x7a,0x9e,0x8e,0x02,0x00 ; /數碼管碼表uchar disp4=1,2,3,4; /數碼管顯示緩沖區(qū)/數碼管位選P1低四位,段選P0sbit LOCK=P14; /74573鎖存端sbit DQ=P35; /DS18B20數據端uchar templow; /溫度值低字節(jié)uchar temphigh; /溫度值高字節(jié)char tempzheng; /溫度值整數char tempxiao; /溫度值小數void Delay(uint x);void Display();void TxReset();void RxWait();bit RdBit();uchar Rd

22、Byte();void WrBit(bit b);void WrByte(uchar d);void Convert();void RdTemp();sbit ACC0 = ACC0;sbit ACC7 = ACC7;/*- 主函數 -*/void main()while(1)Convert(); /調用啟動溫度轉換函數RdTemp(); /調用讀取溫度值函數/*- 初始化DS18B20 -*/void TxReset() uint i;DQ=0;/發(fā)送復位脈沖i=100;while(i>0) i-; /拉低900us DQ=1; /釋放總線i=4;while(i>0) i-;/*

23、- 等待DS18B20應答 -*/void RxWait() uint i;while(DQ); /等待15-60uswhile(DQ); /DS18B20發(fā)出存在脈沖60-240usi=4;while(i>0) i-;/*- 讀取一位數據 -*/bit RdBit()uchar i;bit b;DQ = 0; /讀開始1usi+;DQ = 1; /產生讀時間隙15usi+;i+;b = DQ; /讀位i = 8;while(i>0) i-; /等待60usDQ = 1; /釋放總線return b;/*- 讀取字節(jié)數據 -*/uchar RdByte()uchar i,j,d;d

24、=0;for(i=0;i<8;i+) /各位由低向高讀出DS18B20j=RdBit();d=(j<<7)|(d>>1);return d;/*- 寫入字節(jié)數據 -*/void WrByte(uchar d)uint i;uchar j;bit btmp;for(j=0;j<8;j+) /各位由低向高寫入DS18B20btmp=d&0x01;d=d>>1;if(btmp) /寫1DQ=0; /延時15usi+;i+;DQ=1; /寫1時隙不低于60ui=8;while(i>0) i-;else /寫0DQ=0;i=8;while(i>0) i-; /保持低電平60us到120usDQ=1; /釋放總線i+;i+;/*- 啟動溫度轉換 -*/void Convert()uint i;Delay(125); /延時1msTxReset(); /初始化DS18B20RxWait(); /等待DS18B20應答Delay(125); /延時WrByte(0xcc); /跳過ROM命令WrByte(0x44); /溫度轉換命令for(i=0;i<250;i+) /

溫馨提示

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

評論

0/150

提交評論