基于單片機的數(shù)字溫度計設(shè)計課程設(shè)計_第1頁
基于單片機的數(shù)字溫度計設(shè)計課程設(shè)計_第2頁
基于單片機的數(shù)字溫度計設(shè)計課程設(shè)計_第3頁
基于單片機的數(shù)字溫度計設(shè)計課程設(shè)計_第4頁
基于單片機的數(shù)字溫度計設(shè)計課程設(shè)計_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、摘要溫度的檢測與控制是工業(yè)生產(chǎn)過程中比較典型的應(yīng)用。本設(shè)計以AT89C52單片機為核心,采用DS18B20溫度傳感器檢測溫度,由溫度采集、溫度顯示,溫度報警等功能模塊組成?;陬}目基本要求,本系統(tǒng)對溫度采集和溫度顯示系統(tǒng)行了重點設(shè)計。本系統(tǒng)大部分功能能由軟件實現(xiàn),吸收了硬件軟件化的思想。實際操作時,各功能在開發(fā)板上也能完美實現(xiàn)。本系統(tǒng)實現(xiàn)了要求的基本功能,其余發(fā)揮部分也能實現(xiàn)。關(guān)鍵字:AT89C52單片機、DS18B20溫度傳感器、數(shù)碼管顯示、溫度采集 目錄一緒論二設(shè)計目的三設(shè)計要求四設(shè)計思路五系統(tǒng)的硬件構(gòu)成及功能5.1主控制器5.2顯示電路5.3溫度傳感器六系統(tǒng)整體硬件電路七系統(tǒng)程序設(shè)計八測

2、量及其結(jié)果分析九設(shè)計心得體會十參考文獻附錄1 源程序附錄2 元件清單及PCB圖一緒論隨著時代的發(fā)展,控制智能化,儀器小型化,功耗微量化得到廣泛關(guān)注。單片機控制系統(tǒng)無疑在這些忙面起到了舉足輕重的作用。單片機的應(yīng)用系統(tǒng)設(shè)計業(yè)已成為新的技術(shù)熱點,其中數(shù)字溫度計就是一個典型的例子。 人民的生活與環(huán)境的溫度息息相關(guān),在工業(yè)生產(chǎn)過程中需要實時測量溫度,在農(nóng)業(yè)生產(chǎn)中也離不開溫度的測量,因此研究溫度的測量方法和裝置具有重要的意義。測量溫度的關(guān)鍵是溫度傳感器,溫度傳感器的發(fā)展經(jīng)歷了三個發(fā)展階段:傳統(tǒng)的分立式溫度傳感器模擬集成溫度傳感器智能集成溫度傳感器。目前的智能溫度傳感器(亦稱數(shù)字溫度傳感器)是在2

3、0世紀90年代中期問世的,它是微電子技術(shù)、計算機技術(shù)和自動測試技術(shù)(ATE)的結(jié)晶,特點是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配各種微控制器(MCU)。社會的發(fā)展使人們對傳感器的要求也越來越高,現(xiàn)在的溫度傳感器正在基于單片機的基礎(chǔ)上從模擬式向數(shù)字式,從集成化向智能化、網(wǎng)絡(luò)化的方向飛速發(fā)展,并朝著高精度、多功能、總線標準化、高可靠性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測溫系統(tǒng)等高科技的方向迅速發(fā)展,與傳統(tǒng)的溫度計相比,其具有讀數(shù)方便,測溫范圍廣,測溫準確,輸出溫度采用數(shù)字顯示,主要用于對測溫要求比較準確的場所,或科研實驗室使用。該設(shè)計控制器使用ATMEL公司的AT89C52單片機,測溫

4、傳感器使用DALLAS公司DS18B20,用數(shù)碼管來實現(xiàn)溫度顯示。二設(shè)計目的1. 掌握單片機的工作原理;2. 能夠進行單片機簡單系統(tǒng)的設(shè)計,包括電源模塊、復(fù)位模塊、鍵盤模塊及相應(yīng)控制模塊的設(shè)計;3. 掌握單片機的指令系統(tǒng)及程序的編制結(jié)構(gòu),能夠?qū)唧w的設(shè)計要求編寫相應(yīng)的控制程序;4. 能夠根據(jù)相應(yīng)的控制要求選擇外圍器件實現(xiàn)控制任務(wù);學(xué)習(xí)proteus仿真軟件三設(shè)計要求利用51單片機設(shè)計一數(shù)字溫度計,要求合適的傳感器及相應(yīng)的AD轉(zhuǎn)換芯片,通過傳感器來采集室內(nèi)溫度,并由LED進行顯示。具體要求如下:1. 設(shè)計單片機工作電源模塊及其復(fù)位電路;2. 設(shè)計顯示模塊:兩個LED顯示當前溫度值;3. 設(shè)計傳感

5、器模塊,將選擇的傳感器與A/D轉(zhuǎn)換芯片相連,并通過單片機采集其數(shù)據(jù);4. 繪制控制軟件流程圖;5. 編寫相應(yīng)的控制程序;利用proteus進行仿真。四設(shè)計思路1根據(jù)設(shè)計要求,選擇AT89C52單片機為核心器件。2.溫度檢測器件采用DS18B20數(shù)字式溫度傳感器。與單片機的接口為P3.6引腳。3.鍵盤采用獨立式按鍵,由三個按鍵組成,分別是:設(shè)置鍵(SET),加一建(+1),確認鍵(RET)。SET鍵(上下限溫度設(shè)置鍵):當該鍵按下時,進入上下限溫度設(shè)置功能。通過P3.1引腳接入。+1鍵(加一調(diào)整鍵):在輸入上下限溫度時,該鍵按下一次,被調(diào)整位加一。通過P3.2引腳接入。RET鍵(確認鍵):當該鍵

6、按下時,指向下一個要調(diào)整的位。通過P3.3引腳接入。4.聲音報警蜂鳴器通過P1.7引腳接入。 硬件電路設(shè)計總體框圖為圖4.1:3位LED顯示器LED顯示器驅(qū)動電路單片機按鍵輸入電路時鐘電路復(fù)位電路溫度檢測蜂鳴器電路 圖4.1五、系統(tǒng)的硬件構(gòu)成及功能1.主控制器 單片機AT89S52具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,使用Atmel公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。很適合便攜手持式產(chǎn)品的設(shè)計使用。 AT89S52在仿真軟件中的圖像為圖5.1 圖5.1 2.

7、顯示電路 顯示電路采用四位共陽LED數(shù)碼管,從P3口RXD,TXD串口輸出段碼。 LED數(shù)碼管在仿真軟件中如圖5.2 圖5.2 3.溫度傳感器 DS18B20是美國DALLAS半導(dǎo)體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)位的數(shù)字值讀數(shù)方式。DS18B20的性能特點如下: 獨特的單線接口僅需一個端口引腳進行通訊 簡單的多點分布應(yīng)用 無需外部器件 可通過數(shù)據(jù)線供電 零待機功耗 測溫范圍-55+125,以0.5遞增。華氏器件-67+2570F,以0.90F 遞增 溫度以9 位數(shù)字量讀出 溫度數(shù)字量轉(zhuǎn)換時間20

8、0ms(典型值) 用戶可定義的非易失性溫度報警設(shè)置 報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件。DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列、各種封裝形式如圖 所示,DQ 為數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源;GND為地信號;VDD為可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地。其電路圖如圖所示.。 圖5.3.1 外部封裝形式 在仿真軟件中如圖所示 圖DS18B20的測溫原理如圖所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響

9、很小用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入,圖中還隱含著計數(shù)門,當計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進行計數(shù),進而完成溫度測量.計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55 所對應(yīng)的基數(shù)分別置入減法計數(shù)器1和溫度寄存器中,減法計數(shù)器1和溫度寄存器被預(yù)置在-55 所對應(yīng)的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當減法計數(shù)器1的預(yù)置值減到0時溫度寄存器的值將加1,減法計數(shù)器 1的預(yù)置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振

10、產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫圖中的斜率累加器用于補償和修正測溫過程中的非線性其輸出用,于修正減法計數(shù)器的預(yù)置值,只要計數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。另外,由于DS18B20單線通信功能是分時完成的,有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。圖 在正常測溫情況下,DS1820的測溫分辨力為0.5,可采用下述方法獲得高分辨

11、率的溫度測量結(jié)果:首先用DS1820提供的讀暫存器指令(BEH)讀出以0.5為分辨率的溫度測量結(jié)果,然后切去測量結(jié)果中的最低有效位(LSB),得到所測實際溫度的整數(shù)部分Tz,然后再用BEH指令取計數(shù)器1的計數(shù)剩余值Cs和每度計數(shù)值CD。考慮到DS1820測量溫度的整數(shù)部分以0.25、0.75為進位界限的關(guān)系,實際溫度Ts可用下式計算: 表1.部分溫度值對應(yīng)的二進制溫度數(shù)據(jù)。溫度/二進制表示十六進制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000

12、 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H 六系統(tǒng)整體硬件電路根據(jù)設(shè)計要求與設(shè)計思路,硬件電路設(shè)計框圖如圖6.1所示,在仿真軟件Proteus上完成。其中LED數(shù)碼管以動態(tài)掃描法實現(xiàn)溫度顯示,由四個PNP型晶體管Q2,Q3,Q4,Q5和八個電阻組成,基極與單片

13、機的P1.0,P1.1,P1.2連接。DS18B20的數(shù)據(jù)I/O端與單片機P3.6引腳連接。外部晶振為12MHz。蜂鳴器通過Q1放大后與引腳P1.7相連。圖中有三個獨立式按鍵可以分別調(diào)整溫度計的上下限報警設(shè)置,圖中蜂鳴器可以在被測溫度不在上下限范圍內(nèi)時,發(fā)出報警鳴叫聲音,同時LED數(shù)碼管將沒有被測溫度值顯示,這時可以調(diào)整報警上下限,從而測出被測的溫度值。圖中的按健復(fù)位電路是上電復(fù)位加手動復(fù)位,使用比較方便,在程序跑飛時,可以手動復(fù)位,這樣就不用在重起單片機電源,就可以實現(xiàn)復(fù)位。 圖6.1系統(tǒng)總體硬件電路七系統(tǒng)程序設(shè)計數(shù)字式溫度計的應(yīng)用程序主要包括主程序,溫度檢測程序,溫度轉(zhuǎn)換程序, LED顯示

14、程序等。系統(tǒng)的主程序主要用來初始化一些系統(tǒng)參數(shù),對DS18B20的配置數(shù)據(jù)進行一系列的設(shè)定。溫度檢測程序是對DS18B20的狀態(tài)不斷地查詢,讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫,讀取當前的溫度值后,進行溫度轉(zhuǎn)化程序,對溫度符號處理和溫度值的BCD碼處理,進行溫度值正負的判定,將其段碼送至顯示緩沖區(qū),以備定時掃描服務(wù)程序處理。LED顯示程序主要對顯示緩沖器中的顯示數(shù)據(jù)進行刷新操作,當最高顯示位為0時,將符號顯示位移入下一位??偝绦虺绦虼a見附錄一開始 顯示緩沖區(qū)初始化 復(fù)位DS18B20 發(fā)跳過ROM命令發(fā)溫度轉(zhuǎn)換命令延時復(fù)位DS18B20發(fā)跳過ROM命

15、令發(fā)讀存儲器命令讀溫度數(shù)據(jù)溫度符號判定將溫度轉(zhuǎn)換為BCD碼更新顯示緩沖區(qū)八測量及其結(jié)果分析 1.Proteus仿真結(jié)果軟件方面,在Proteus編譯下進行,源程序編譯及仿真調(diào)試。在軟件中選定傳感器后可對其進行環(huán)境溫度設(shè)置,如圖,將環(huán)境溫度設(shè)為34.9。 圖然后點擊軟件執(zhí)行鍵,按操作步驟實施后,觀察LED數(shù)碼管示數(shù),此時示數(shù)如圖。圖可見本次軟件測試結(jié)果良好。2硬件測試結(jié)果在硬件測試方面,檢查電路板及焊接的質(zhì)量情況,在檢查無誤后通電檢查LED顯示器。其中 DS18B20實物圖為 在室溫下,LED顯示器示數(shù)如圖,為26.4攝氏度 圖用手蓋住溫度傳感器后,LED顯示器示數(shù)如圖,為29.7攝氏度。比較可

16、知,硬件調(diào)試結(jié)果也達到了要求。九設(shè)計心得體會本次課設(shè)對我來說是一次難得的經(jīng)歷,首先是第一次接觸了仿真軟件Proteus,在使用時經(jīng)歷了很多次失敗,因為這款軟件與以前使用的各種軟件有很多不同,使用時不停出錯,接線時由于元件放置不合理而接的雜亂無章;輸入源程序時還較為順利,顯示結(jié)果比較滿意。其次是程序設(shè)計,我們在參考別人成功先例的基礎(chǔ)上根據(jù)自己設(shè)計的需要編制程序,其中歷經(jīng)不少曲折,最后我的收獲是,編程一定要細心,針對每一個細節(jié),稍有疏忽,程序就不能正常工作。最后是單片機實踐操作,由于我自己已買了一塊開發(fā)板,所以硬件調(diào)試比較順利,效果也不錯,就是DS18B20溫度傳感器靈敏度不太高,示數(shù)變化不大。另

17、外,我前期花了一些時間專門學(xué)習(xí)這塊芯片,了解了DS18B20的工作原理的時序圖。在這次的實踐與學(xué)習(xí)中,盡管期間困難重重,但我還是從中學(xué)習(xí)了不少新的知識與技能和解決困難的方法,也終于體驗到了經(jīng)歷困難到最終獲得成功的那種無以言表的喜悅之情,總之,本次課設(shè)是我收獲最多的一次,也希望自己在以后的各項研究活動中能堅持這種精神。十參考文獻【1】 李朝青 單片機原理及接口技術(shù)。北京航空航天大學(xué)出版社,2005年【2】 李群芳 肖看 單片機原理、接口及應(yīng)用。清華大學(xué)出版社,2005年【3】 陳汝全 電子技術(shù)常用器件應(yīng)用手冊。機械工業(yè)出版社,2004年【4】 將輝平,基于proteus的單片機系統(tǒng)設(shè)計與仿真實例

18、,2007年張俊謨 單片機中級教程原理與應(yīng)用。北京航空航天大學(xué)出版社,2000年附錄一 源程序#include <AT89X52.h>#include "DS18B20.h" #define uint unsigned int#define uchar unsigned char /宏定義#define SET P3_1 /定義調(diào)整鍵#define DEC P3_2 /定義減少鍵#define ADD P3_3 /定義增加鍵#define BEEP P3_7 /定義蜂鳴器bit shanshuo_st; /閃爍間隔標志bit beep_st; /蜂鳴器間隔標志s

19、bit DIAN = P27; /小數(shù)點uchar x=0; /計數(shù)器signed char m; /溫度值全局變量uchar n; /溫度值全局變量uchar set_st=0; /狀態(tài)標志signed char shangxian=38; /上限報警溫度,默認值為38signed char xiaxian=15; /下限報警溫度,默認值為5uchar code LEDData=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/*延時子程序*/void Delay(uint num) while( -num );/*初始化定時器0*/voi

20、d InitTimer(void) TMOD=0x1; TH0=0x4c; TL0=0x00; /50ms(晶振12M)/*定時器0中斷服務(wù)程序*/void timer0(void) interrupt 1 TH0=0x4c; TL0=0x00; x+;/*外部中斷0服務(wù)程序*/void int0(void) interrupt 0 EX0=0; /關(guān)外部中斷0 if(DEC=0&&set_st=1) shangxian-; if(shangxian<xiaxian)shangxian=xiaxian; else if(DEC=0&&set_st=2) x

21、iaxian-; if(xiaxian<0)xiaxian=0; /*外部中斷1服務(wù)程序*/void int1(void) interrupt 2 EX1=0; /關(guān)外部中斷1 if(ADD=0&&set_st=1) shangxian+; if(shangxian>99)shangxian=99; else if(ADD=0&&set_st=2) xiaxian+; if(xiaxian>shangxian)xiaxian=shangxian; /*讀取溫度*/void check_wendu(void) uint a,b,c; c=Read

22、Temperature()-5; /獲取溫度值并減去DS18B20的溫漂誤差 a=c/100; /計算得到十位數(shù)字 b=c/10-a*10; /計算得到個位數(shù)字 m=c/10; /計算得到整數(shù)位 n=c-a*100-b*10; /計算得到小數(shù)位 if(m<0)m=0;n=0; /設(shè)置溫度顯示上限 if(m>99)m=99;n=9; /設(shè)置溫度顯示上限 /*顯示開機初始化等待畫面*/Disp_init() P2=0xbf; P1=0xfe; Delay(200); P2=0xbf; P1=0xfd; Delay(200); P2=0xbf; P1=0xfb; Delay(200);

23、P2=0xbf; P1=0xf7; /第四 Delay(200); P1=0xff; /關(guān)閉顯示/*顯示溫度子程序*/Disp_Temperature() /顯示溫度 P2=0xc6; /顯示C P1=0xf7; / Delay(300); P2=LEDDatan; /顯示個位 P1=0xfb; / Delay(300); P2=LEDDatam%10; /顯示小數(shù)點 DIAN=0; P1=0xfd; Delay(300); P2=LEDDatam/10; /顯示百位 P1=0xfe; Delay(300); P1=0xff; /關(guān)閉顯示/*顯示報警溫度子程序*/Disp_alarm(ucha

24、r baojing) P2=0xc6; /顯示C P1=0xf7; Delay(200); P2=LEDDatabaojing%10; /顯示十位 P1=0xfb; Delay(200); P2=LEDDatabaojing/10; /顯示百位 P1=0xfd; Delay(200); if(set_st=1)P2=0x89; else if(set_st=2)P2=0xc7; /上限H、下限L標示 P1=0xfe; Delay(200); P1=0xff;/*報警子程序*/void Alarm() if(x>=10)beep_st=beep_st;x=0; if(m>=shang

25、xian&&beep_st=1)|(m<xiaxian&&beep_st=1)BEEP=0; else BEEP=1;/*主函數(shù)*/void main(void) uint z; InitTimer(); /初始化定時器 EA=1; /全局中斷開關(guān) TR0=1; ET0=1; /開啟定時器0 IT0=1; IT1=1; check_wendu(); check_wendu(); for(z=0;z<300;z+) Disp_init(); while(1) if(SET=0) Delay(2000); dowhile(SET=0); set_st+;

26、x=0;shanshuo_st=1; if(set_st>2)set_st=0; if(set_st=0) EX0=0; /關(guān)閉外部中斷0 EX1=0; /關(guān)閉外部中斷1 check_wendu(); Disp_Temperature(); Alarm(); /報警檢測 else if(set_st=1) BEEP=1; /關(guān)閉蜂鳴器 EX0=1; /開啟外部中斷0 EX1=1; /開啟外部中斷1 if(x>=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st) Disp_alarm(shangxian); else if(set_st=2

27、) BEEP=1; /關(guān)閉蜂鳴器 EX0=1; /開啟外部中斷0 EX1=1; /開啟外部中斷1 if(x>=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st) Disp_alarm(xiaxian); /*END*/DS18B20.h:#include <AT89X52.h>#define DQ P3_6 /定義DS18B20總線I/O/*延時子程序*/void Delay_DS18B20(int num) while(num-) ;/*初始化DS18B20*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ復(fù)位 Delay_DS18B20(8); /稍做延時 DQ = 0; /單片機將DQ拉低 Delay_DS18B20(80); /精確延時,大于480us DQ = 1; /拉高總線 Delay_DS18B20(14); x = DQ; /稍做延時后,如果x=0則初始化成功,x=1則初始化失敗 Delay_DS18B20(20)

溫馨提示

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

評論

0/150

提交評論