數字溫度計設計畢業(yè)論文
《數字溫度計設計畢業(yè)論文》由會員分享,可在線閱讀,更多相關《數字溫度計設計畢業(yè)論文(20頁珍藏版)》請在裝配圖網上搜索。
1、 cl 本科學生畢業(yè)論文(設計) 題 目 數字溫度計設計 學 院 物理與電子信息學院 專 業(yè) 電子信息工程 學生姓名 學 號 指導教師 職稱 論文字數 5791 完成日期 2010 年 11 月 10 日 論文題目 數字溫度計設計 學生姓名 學院: 物理與電子信息學院 中文摘要 本溫度計采用AT89C51作為主控芯片,單總線DS18B20溫度傳感器采集溫度,用四位 共陰極數碼實時顯示溫度,優(yōu)化溫度轉換算法使得該溫度計具有顯示到0.5度的
2、能力。同 時程序中添加溫度的正負值檢測算法,使得該溫度計可以顯示負值溫度。適用于多種場 合的環(huán)境溫度監(jiān)測,且具有顯示效果好、價格低廉的優(yōu)點。 關鍵詞(3~5個): DS18B20 AT89C51 單總線 英文題目 Design of Digital Thermometer 學生姓名(英文): 學 院(英文): College of Physics and Electronic Information 英文摘要 The thermometer used as the main chip AT89C51 sing
3、le-bus temperature sensor DS18B20 collecting temperature, with four Total cathode digital real-time display of temperature, the temperature conversion algorithm allows the optimization of the thermometer has the ability to display up to 0.5 degrees. With When the program is to add negative te
4、mperature detection Applicable to many fields.Joint monitoring of the ambient temperature, and has shown good results and low cost advantages. 英文關鍵詞 DS18B20 AT89C51 Single bus 1 引言 隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數字溫度計就是一個典型的例子,但人們對它的要
5、求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設施就需要從數單片機技術入手,一切向著數字化控制,智能化控制方向發(fā)展。 本設計所介紹的數字溫度計與傳統(tǒng)的溫度計相比,具有讀數方便,測溫范圍廣,測溫準確,其輸出溫度采用數字顯示,主要用于對測溫比較準確的場所,或科研實驗室使用,該設計控制器使用單片機AT89C51,測溫傳感器使用DS18B20,用4位共陰極LED數碼管實現(xiàn)溫度顯示,能準確達到以上要求。 2 總體設計方案 2.1數字溫度計設計方案論證 2.1.1方案一 由于本設計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應,在將隨被測溫度變化的電壓或電流采集過來,進行A/D
6、轉換后,就可以用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用到A/D轉換電路,感溫電路比較麻煩。 2.1.2 方案二 進而考慮到用溫度傳感器,在單片機電路設計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉換,就可以滿足設計要求。 從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設計也比較簡單,故采用了方案二。 2.2方案二的總體設計框圖 溫度計電路設計總體設計方框圖如圖1所示,控制器采用單片機AT89C51,溫度傳感器采用DS18B20,用4位LED數
7、碼管以串口傳送數據實現(xiàn)溫度顯示。 主 控 制 器 LED顯 示 溫 度 傳 感 器 單片機復位 時鐘振蕩 圖1 總體設計方框圖 2.2.1 主控制器 單片機AT89C51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設計需要,很適合便攜手持式產品的設計使用系統(tǒng)可用二節(jié)電池供電。 2.2.2 顯示電路 顯示電路采用4位共陰LED數碼管,通過單片機P0口輸出段碼,P2口輸出位碼。 2.2.3溫度傳感器 DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,
8、與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現(xiàn)9~12位的數字值讀數方式。DS18B20的性能特點如下: ●獨特的單線接口僅需要一個端口引腳進行通信; ●DS18B20可以并聯(lián)在惟一的三線上; ●無須外部器件; ●可通過數據線供電,電壓范圍為3.0~5.5V; ●零待機功耗; ●溫度以9或12位數字; ●用戶可定義報警設置; ●報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件; ●負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內部結構框
9、圖如圖2所示。 64 位 R O M 和 單 線 接 口 高速緩存 存儲器與控制邏輯 溫度傳感器 高溫觸發(fā)器TH 低溫觸發(fā)器TL 配置寄存器 8位CRC發(fā)生器 I/O C Vdd 圖2 DS18B20內部結構 64位ROM的結構開始8位是產品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。 DS1
10、8B20溫度傳感器的內部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結構為8字節(jié)的存儲器,結構如圖3所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié),為配置寄存器,它的內容用于確定溫度值的數字轉換分辨率。DS18B20工作時寄存器中的分辨率轉換為相應精度的溫度數值。該字節(jié)各位的定義如圖3所示。低5位一直為1,TM是工作模式位,用于設置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設置為0,用戶要去改動,R1和R0決定溫度轉換的精度位數,來設置分辨率。 溫度 LSB 溫
11、度 MSB TH用戶字節(jié)1 TL用戶字節(jié)2 配置寄存器 保留 保留 保留 CRC 圖3 DS18B20字節(jié)定義 由表1可見,DS18B20溫度轉換的時間比較長,而且分辨率越高,所需要的溫度數據轉換時間越長。因此,在實際應用中要將分辨率和轉換時間權衡考慮。 高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗數據,從而保證通信數據的正確性。 當DS18B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第
12、1、2字節(jié)。單片機可以通過單線接口讀出該數據,讀數據時低位在先,高位在后,數據格式以0.0625℃/LSB形式表示。 當符號位S=0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制;當符號位S=1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數值。表2是一部分溫度值對應的二進制溫度數據。 表1 DS18B20溫度轉換時間表 DS18B20完成溫度轉換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內容作比較。若T>TH或T<TL,則將該器件內的報警標志位置位,并對主機發(fā)出的報警搜索命令作出響應。因此,可用多只DS18B20同時測量溫度并進行報警搜索。 在64
13、位ROM的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(CRC)。主機ROM的前56位來計算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機收到的ROM數據是否正確。 DS18B20的測溫原理是這這樣的,器件中低溫度系數晶振的振蕩頻率受溫度的影響很小,用于產生固定頻率的脈沖信號送給減法計數器1;高溫度系數晶振隨溫度變化其振蕩頻 率明顯改變,所產生的信號作為減法計數器2的脈沖輸入。器件中還有一個計數門,當計數門打開時,DS18B20就對低溫度系數振蕩器產生的時鐘脈沖進行計數進而完成溫度測量。計數門的開啟時間由高溫度系數振蕩器來決定,每次測量前,首先將-55℃所對應的一個基數分別置入減法計數
14、器1、溫度寄存器中,計數器1和溫度寄存器被預置在-55℃所對應的一個基數值。 減法計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當減法計數器1的預置值減到0時,溫度寄存器的值將加1,減法計數器1的預置將重新被裝入,減法計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環(huán)直到減法計數器計數到0時,停止溫度寄存器的累加,此時溫度寄存器中的數值就是所測溫度值。其輸出用于修正減法計數器的預置值,只要計數器門仍未關閉就重復上述過程,直到溫度寄存器值大致被測溫度值。 表2 一部分溫度對應值表 溫度/℃ 二進制表示 十六進制表示 +125 0000 0111 1101
15、0000 07D0H +85 0000 0101 0101 0000 0550H +25.0625 0000 0001 1001 0000 0191H +10.125 0000 0000 1010 0001 00A2H +0.5 0000 0000 0000 0010 0008H 0 0000 0000 0000 1000 0000H -0.5 1111 1111 1111 0000 FFF8H -10.125 1111 1111 0101 1110 FF5EH -25.0625 1111 1110
16、 0110 1111 FE6FH -55 1111 1100 1001 0000 FC90H 另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作按協(xié)議進行。操作協(xié)議為:初使化DS18B20(發(fā)復位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數據。 2.3 DS18B20溫度傳感器與單片機的接口電路 DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,單片機端口接單線總線,為保證在有效的DS18B20時鐘周期
17、內提供足夠的電流,可用一個MOSFET管來完成對總線的上拉。 當DS18B20處于寫存儲器操作和溫度A/D轉換操作時,總線上必須有強的上拉,上拉開啟時間最大為10us。采用寄生電源供電方式時VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。 圖4.DS18B20與單片機接線 2.4 系統(tǒng)整體硬件電路 2.4.1 主板電路 系統(tǒng)整體硬件電路包括,傳感器數據采集電路,溫度顯示電路,單片機主板電路等,如圖5 所示。圖5中有三個獨立式按鍵可以分別調整溫度計的上下限報警設置,圖中蜂鳴器可以在被測溫度不在上下限范圍內時,發(fā)出報警鳴叫聲音,同時LED數碼管將沒有被測溫度值顯示,這時
18、可以調整報警上下限,從而測出被測的溫度值。按健復位電路是上電復位加手動復位,使用比較方便,在程序跑飛時,可以手動復位,這樣就不用在重起單片機電源,就可以實現(xiàn)復位。 2.4.2 顯示電路 顯示電路是使用單片機P0口輸出四位數碼管的段碼,P2口輸出位碼,實現(xiàn)溫度的顯示,同時可以顯示到小數點后一位。 圖5 單片機主板電路 3系統(tǒng)軟件算法分析 系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉換命令子程序,計算溫度子程序,顯示數據刷新子程序等。 3.1主程序 主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量的當前溫度值
19、,其程序流程見圖6所示。 Y 發(fā)DS18B20復位命令 發(fā)跳過ROM命令 發(fā)讀取溫度命令 讀取操作,CRC校驗 9字節(jié)完? CRC校驗正?確? 移入溫度暫存器 結束 N N Y 初始化 初次上電 N Y 讀出溫度值溫度計算處理顯示數據刷新 發(fā)溫度轉換開始命令 調用顯示子程序 圖6 主程序流程圖 7讀溫度流程圖 3.2讀出溫度子程序 讀出溫度子程序的主
20、要功能是讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,校驗有錯時不進行溫度數據的改寫。其程序流程圖如圖6示 發(fā)DS18B20復位命令 發(fā)跳過ROM命令 發(fā)溫度轉換開始命令 結束 圖8 溫度轉換流程圖 3.3溫度轉換命令子程序 溫度轉換命令子程序主要是發(fā)溫度轉換開始命令,當采用12位分辨率時轉換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖如上圖,圖8所示 3.4 計算溫度子程序 計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如圖9所
21、示。 開始 溫度數據移入顯示寄存器 十位數0? 百位數0? 十位數顯示符號百位數不顯示 百位數顯示數據(不顯示符號) 結束 Y 溫度零下? N N Y N 按負數處理 置“+”標志 Y 取反加一 計算小數位 溫度BCD值 計算整數位溫度BCD值 結束 圖9 計算溫度流程圖 圖10 顯示數據刷新流程圖 3.5 顯示數據刷新子程序 顯示數據刷新子程序主要是對顯示緩沖器中的顯示數據進行刷新操作,當最高顯示位為0
22、時將符號顯示位移入下一位。程序流程圖如圖10。
3.6完整程序代碼
#include
23、 //共陰數碼管 uchar bai,shi,ge; //定義變量 bit flag_Negative_number ;//負數標志 /*延時子函數*/ void delay(uint num) { while(num--) ; } /*************DS18b20溫度傳感器函數*********************/ Init_DS18B20(void) //傳感器初始化 { uchar x=0; DATA = 1; //DQ復位 delay(10); //稍做延時 DATA = 0; //
24、單片機將DQ拉低 delay(80); //精確延時 大于 480us //450 DATA = 1; //拉高總線 delay(20); x=DATA; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay(30); } //讀一個字節(jié) ReadOneChar(void) { uchar i=0; uchar dat = 0; for (i=8;i>0;i--) { DATA = 0; // 給脈沖信號 dat>>=1; DATA = 1; // 給脈沖信號
25、 if(DATA) dat|=0x80; delay(8); } return(dat); } //寫一個字節(jié) WriteOneChar(uchar dat) { uchar i=0; for (i=8; i>0; i--) { DATA = 0; DATA = dat&0x01; delay(10); DATA = 1; dat>>=1; } delay(8); } //讀取溫度 int ReadTemperature(void) { uchar a=
26、0; uchar b=0; int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳過讀序號列號的操作 WriteOneChar(0x44); // 啟動溫度轉換 Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號列號的操作 WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器)前兩個就是溫度 a=ReadOneChar();//低位 b=ReadOneChar();//高位 t=b; t<<=8; t=t|a;
27、 if(b&0x80) { t=~t+1; flag_Negative_number = 1; } else { flag_Negative_number = 0; } tt=t*0.0625; t= tt*10+0.5; return(t); } /*顯示子函數*/ void display(int bai,int shi,int ge) { P0=0x00; P2=0XFD; //顯示小數點 P0=0X80; //顯示小數點 delay(500);//顯示小數點 P0=0x00; P2=
28、0xf7; if(flag_Negative_number) {P0=table[17];} else {P0=table[16];}//顯示千位 delay(150);//一小段延時動態(tài)顯示 P0=0x00; P2=0xfb; P0=table[bai];//顯示百位 delay(500); P0=0x00; P2=0xfd; P0=table[shi];//顯示十位 delay(500); P0=0x00; P2=0xfe; P0=table[ge];//顯示個位 delay(500); } void
29、main() { int temp; while(1) { temp=ReadTemperature();//讀溫度 bai=temp%1000/100;//顯示百位 shi=temp%100/10;//顯示十位 ge=temp%10;//顯示個位 display(bai,shi,ge);//顯示函數 } } 4總結與體會 通過數字溫度計的制作,學會了如何去對待一個單片機系統(tǒng)的設計思路。同時鍛煉了自身查閱資料閱讀英文文獻的能力。如何用單片機去操作DS18B20這樣的一個陌生器件其實歸根揭底還是需要去仔細官方提供的
30、數據手冊。通過手冊的閱讀,了解如何用單片機去初始化DS18B20 ,如何去配置DS18B20的精度,如何開始溫度轉換、讀取溫度等。當然這些都是建立在足夠熟悉單片機的基礎上,因為DS18B20對時序的要求很高包括總線的復位、讀寫。這也讓我了解單片機的程序開發(fā)設計的過程也是有一定的步驟的。首先需要對著器件的數據手冊寫好最底層的驅動包括DS18B20的復位、讀取一個字節(jié)、寫一個字節(jié)。這樣才能進一步去寫上層的相關應用,比如通過寫一個字節(jié)去寫入溫度轉換命令,在去通過讀一個字節(jié)去讀出溫度值,因為DS18B20的精度在9-12位可編程,一般一個字節(jié)是8位,所以不管是多少位精度我們都需要讀取兩次。高位和低位同
31、時需要對這個十六進制數進行相應的處理才能得到我們最終的溫度。 檢測高位溫度的第八字節(jié)的方法處理負值溫度,將folat型的溫度值16位通過取反加一得到顯示值。這里進一步了解了unsigned 和singed的區(qū)別,計算機數值的表示方法與原碼、反碼與補碼。關于DS18B20讀取出來的溫度值是一個二進制代碼9-12位,所以在八位單片機內需要采用float型變量來保存這個數值,由于我們底層的函數是一字節(jié)讀寫,所以需要將此溫度分為高位和低位來讀取。然后在左移8位高位溫度或上低位的溫度數據將此值付給待處理的float型變量。最終采用tt=t*0.0625; t= tt*10+0.5; 來轉換溫度,這里的
32、0.0625正好是1/16,這里我們也可以采用右移4位的方式來實現(xiàn)。 參考文獻: [1] 向丹,楊勇.C8051F單片機的軟件IAP技術[J] .單片機與嵌入式系統(tǒng)應用,2009,3:67-68. [2] 馬忠梅,張凱,馬巖.單片機的c語言程序設計[M].北京:北京航空航天大學出版社,2001 [3] 姜志海,黃玉清,劉連鑫.單片機原理及應用[M].北京:電子工業(yè)出版社, 2009. [4] 周立功. Keil uvision3使用入門[J].周立功單片機發(fā)展有限公司,2007. [5] 姚永平. STC12C5620AD系列單片機器件手冊
33、[M]. 深圳:宏晶科技,2006. [6] 李朝青.單片機原理及接口技術(簡明修訂版).杭州:北京航空航天大學出版社,1998 [7] 李廣弟.單片機基礎[M].北京:北京航空航天大學出版社,1994 [8] 閻石.數字電子技術基礎(第三版). 北京:高等教育出版社,1989 [9] 廖常初.現(xiàn)場總線概述[J].電工技術,1999. 安徽師范大學本科生畢業(yè)論文(設計)評定意見 指導 教師 評語 百分制成績: 簽名: 年 月 日 評閱教師評語
34、 百分制成績: 簽名: 年 月 日 評語主要內容包括:學生寫作態(tài)度、科研作風,論文選題的理論意義和實踐價值,論據是否充分、可靠,掌握基礎理論、專門知識、研究方法和技能的水平,寫作的邏輯性、技巧及其他優(yōu)缺點。 安徽師范大學本科生畢業(yè)論文(設計)評定意見 教 研 室 ︵答 辯 組︶ 評 定 意 見 成績: 教研室主任(答辯組組長)簽名: 年 月 日 學 院 意 見
35、 成績: 院長簽章: 年 月 日 目 錄 1.引言 2. 總體設計方案 2.1數字溫度計設計方案論證 2.2方案二的總體設計框圖 2.3 DS18B20溫度傳感器與單片機的接口電路 2.4 系統(tǒng)整體硬件電路 3.系統(tǒng)軟件算法分析 3.1主程序 3.2讀出溫度子程序 3.3溫度轉換命令子程序 3.4 計算溫度子程序 3.5 顯示數據刷新子程序 4. 總結與體會 5. 參考文獻 i 1 附件3:
36、安徽師范大學本科生畢業(yè)論文(設計)開題報告書 題 目 數字溫度計設計 學生姓名 學 號 指導教師 許長安 學 院 專 業(yè) 職 稱 副教授 選題的意義及研究狀況: 選題的意義 研究狀況 主要內容、研究方法和思路: 主要內容 研究方法和思路 準備情況(查閱過的文獻資料及調研情況,現(xiàn)有儀器、設備情況、已發(fā)表或撰寫的相關文章等): 總體安排和進度(包括階段性工作內容及完成日期): 指導教師意見(研究的意義、創(chuàng)新點、前期基礎工作、存在的難點和困難、建議等): 指導教師簽名: 年 月 日 學院選題指導組意見: 學院選題指導組組長簽名: 年 月 日
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。