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

下載本文檔

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

文檔簡介

沈陽航空航天大學(xué)課程設(shè)計(jì)論文基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)第1頁基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)摘要:本文設(shè)計(jì)了一種基于單片機(jī)控制的數(shù)字溫本設(shè)計(jì)度計(jì),本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)溫度計(jì)相比,具有讀數(shù)方便,測溫范圍廣,輸出溫度采用數(shù)字顯示。該設(shè)計(jì)控制器使用單片機(jī)AT89S51,測溫傳感器使用DS18B20,用共陽極LED數(shù)碼管顯示,能夠準(zhǔn)確達(dá)到要求。溫度計(jì)電路設(shè)計(jì)控制器采用單片機(jī)AT89S51,具有低電壓供電和體積小等特點(diǎn),溫度傳感器采用DS18B20,DS18B20溫度傳感器是美國最新推出的一種溫度傳感器,它能直接讀出被測溫度,并且可根據(jù)實(shí)際要求通過簡單的編程實(shí)現(xiàn)讀數(shù)方式,僅需要一個(gè)端口引腳進(jìn)行通信,內(nèi)部存儲器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM.顯示電路采用LED動態(tài)顯示方式。關(guān)鍵詞:單片機(jī);DS18B20;超限報(bào)警;LED顯示;前言隨著人們生活水平的不斷提高,單片機(jī)控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計(jì)就是一個(gè)典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。溫度是日常生活、工業(yè)、醫(yī)學(xué)、環(huán)境保護(hù)、化工、石油等領(lǐng)域最常用到的一個(gè)物理量。測量溫度的基本方法是使用溫度計(jì)直接讀取溫度。最常見到得測量溫度的工具是各種各樣的溫度計(jì),例如:水銀玻璃溫度計(jì),酒精溫度計(jì),熱電偶或熱電阻溫度計(jì)等。它們常常以刻度的形式表示溫度的高低,人們必須通過讀取刻度值的多少來測量溫度。利用單片機(jī)和溫度傳感器構(gòu)成的電子式智能溫度計(jì)就可以直接測量溫度,得到溫度的數(shù)字值,既簡單方便,有直觀準(zhǔn)確。總體方案設(shè)計(jì)1.1設(shè)計(jì)方案論證針對本課題的設(shè)計(jì)任務(wù),進(jìn)行分析得到:本次設(shè)計(jì)用溫度傳感器進(jìn)行溫度的測量,轉(zhuǎn)化了的溫度信號由傳感器直接得到了數(shù)字信號。該數(shù)字溫度計(jì)的設(shè)計(jì),在總體上大致可分為以下幾個(gè)部分組成:1.單片機(jī)控制電路;2.溫度傳感器;3.開關(guān)控制電路;4.LED顯示電路。方案一由于本設(shè)計(jì)是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。方案二進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計(jì)要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設(shè)計(jì)也比較簡單,故采用了方案二。系統(tǒng)原理框圖如圖1所示。主控制器主控制器LED顯示溫度傳感器單片機(jī)復(fù)位時(shí)鐘振蕩報(bào)警點(diǎn)按鍵調(diào)整圖1系統(tǒng)原理框圖1.2硬件構(gòu)成1.21主控制器AT89C51具有以下標(biāo)準(zhǔn)功能:8K字節(jié)FLASH,256字節(jié)RAM,32位I/O總線,看門狗定時(shí)器2個(gè)數(shù)據(jù)指針,3個(gè)16位定時(shí)器、計(jì)數(shù)器,一個(gè)6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。P0口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個(gè)TTL邏輯電平。對P0口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時(shí),P0也被作為低8位地址/數(shù)據(jù)使用。在這種模式下,P0具有內(nèi)部上拉電阻。在FLASH編程時(shí),P0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。2.2顯示電路顯示電路采用集成的數(shù)碼管,為共陽極結(jié)構(gòu),采用動態(tài)顯示,P1口作為輸出編碼端,P2.0到P2.7作為位選控制端,其中P1做輸出端口需要上拉電阻,通過設(shè)置不同的段碼可以顯示溫度,可以對溫度進(jìn)行實(shí)時(shí)檢測。圖4顯示電路2.3數(shù)據(jù)采集電路DS18B20的內(nèi)部結(jié)構(gòu)主要包括:寄生電源,溫度傳感器,64位激光ROM和單總線接口,存放中間數(shù)據(jù)的高速暫存器RAM,用于存儲用戶設(shè)定溫度上下限值得TH和TL觸發(fā)器,存儲和邏輯控制,8位循環(huán)冗余碼發(fā)生器等七部分。DS18B20測量溫度時(shí)使用特有的溫度測量技術(shù),將被測溫度轉(zhuǎn)換成數(shù)值信號,測量結(jié)果將存入溫度寄存器中。圖5數(shù)據(jù)采集電路2.4報(bào)警電路當(dāng)溫度超過設(shè)定的上下限溫度時(shí),蜂鳴器會發(fā)出聲響,下圖為報(bào)警電路。圖6報(bào)警電路3軟件設(shè)計(jì)3.1主程序設(shè)計(jì)系統(tǒng)的主程序主要用來初始化一些參數(shù),對DS18B20的配置數(shù)據(jù)進(jìn)行一系列的設(shè)定。另外對DS18B20的狀態(tài)不斷的查詢,以讀取當(dāng)前的溫度值,并對溫度進(jìn)行處理,溫度值的BCD碼處理后,將其段碼送顯示緩沖區(qū),以備定時(shí)掃描服務(wù)程序處理。調(diào)用顯示子程序調(diào)用顯示子程序讀取溫度轉(zhuǎn)換溫度初始化溫度顯示溫度比較檢測返回圖7主程序流程圖3.2溫度轉(zhuǎn)換程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如下所示。發(fā)DS18B20復(fù)位命令發(fā)DS18B20復(fù)位命令發(fā)跳過ROM命令發(fā)溫度轉(zhuǎn)換開始命令結(jié)束圖8溫度轉(zhuǎn)換流程圖3.3溫度顯示程序和報(bào)警電路程序此程序是將采集到得數(shù)據(jù)用LED數(shù)碼管顯示,然后將實(shí)際溫度與設(shè)置的報(bào)警上下限進(jìn)行比較,決定是否發(fā)出報(bào)警信號。由于T為實(shí)際溫度的絕對值,TH,TL也是溫度的絕對值,因此判斷大小關(guān)系時(shí),要通過正負(fù)號來確定。開始開始數(shù)據(jù)采集接收數(shù)據(jù)溫度轉(zhuǎn)換LED顯示圖9溫度顯示流程圖開始開始T>=0TH>=0T<=THTL>=0報(bào)警報(bào)警結(jié)束T>=TL結(jié)束T>=TLTL>=0T>=THTH>=0NNNYYYYNNYNYNYNYYYN圖10報(bào)警程序流程圖4調(diào)試分析4.1軟件調(diào)試本次設(shè)計(jì)采用的是keil仿真器進(jìn)行軟件調(diào)試,此系統(tǒng)可以開發(fā)應(yīng)用軟件,以及對硬件電路進(jìn)行診斷、調(diào)試等。它的具體功能是可以進(jìn)行CPU仿真,可以單步、跟蹤、斷點(diǎn)和全速運(yùn)行,而且,程序的編譯過程中,可以對設(shè)計(jì)軟件進(jìn)行自診斷,并自動給出故障原因。同時(shí)用戶調(diào)試程序時(shí),可以通過窗口觀察寄存器的工作狀況,以便及時(shí)發(fā)現(xiàn)和排除編程中可能出現(xiàn)的錯(cuò)誤。軟件的調(diào)試是利用keil軟件,模塊化調(diào)試,通過觀察存儲單元數(shù)據(jù)的變化,查找并解決程序的語法和邏輯錯(cuò)誤,具體的調(diào)試步驟如下:1.把系統(tǒng)的各個(gè)模塊在仿真軟件中逐個(gè)調(diào)試,如數(shù)據(jù)采集模塊、顯示模塊等。2.對各個(gè)需要賦值模塊調(diào)試時(shí),賦入初值,單步調(diào)試,觀察數(shù)據(jù)窗口,看輸出結(jié)果是否為設(shè)計(jì)時(shí)想要的結(jié)果。3.把各個(gè)模塊組合起來,全速運(yùn)行,看程序是否能流暢的,是否能實(shí)現(xiàn)設(shè)計(jì)的系統(tǒng)的所有功能。軟硬聯(lián)調(diào)本設(shè)計(jì)是采用Proteus軟件實(shí)現(xiàn)電路圖設(shè)計(jì)和仿真的,Proteus軟件與Keil軟件聯(lián)合使用,實(shí)現(xiàn)設(shè)計(jì)要求。在Keil軟件中創(chuàng)建新文件,輸入所編寫的c語言程序并保存,在編譯源程序無誤后,會產(chǎn)出相應(yīng)的”.HEX”文件;將所生成的”.HEX”文件加載到已繪制好的Proteus原理圖中,使Proteus與Keil真正連接起來,實(shí)現(xiàn)聯(lián)合調(diào)試。調(diào)試結(jié)果下15所示。、圖11仿真測試圖結(jié)論及進(jìn)一步設(shè)想根據(jù)實(shí)驗(yàn)結(jié)果,本設(shè)計(jì)基本完成了設(shè)計(jì)要求,但上下限閾值的設(shè)置過于繁瑣,在原有結(jié)構(gòu)的基礎(chǔ)上,可以更簡化。本課程設(shè)計(jì)的主要任務(wù)是設(shè)計(jì)一個(gè)89C51單片機(jī)為核心的數(shù)字溫度計(jì)。從確定課設(shè)題目,到查閱質(zhì)料確定總體方案設(shè)計(jì),硬件電路仿真的設(shè)計(jì),硬件電路的優(yōu)化,軟件的設(shè)計(jì),軟件的優(yōu)化,檢驗(yàn)仿真電路,調(diào)試軟件程序,到最后的軟硬件聯(lián)調(diào),都是我努力去完成的。在最后的仿真電路圖中達(dá)到了我想要的結(jié)果,并且對串口通訊有了更一步的認(rèn)識。對單片機(jī)也有了更加深刻的了解。對以后很好的應(yīng)用單片機(jī)打下了深刻的基礎(chǔ)。參考文獻(xiàn)[1]劉復(fù)華.單片機(jī)及其應(yīng)用系統(tǒng).北京:清華大學(xué)出版社,1992[2]韓志軍.單片機(jī)系統(tǒng)設(shè)計(jì)與應(yīng)用實(shí)例.北京:機(jī)械工業(yè)出版社,2010[3]余永全.ATMEL89系列單片機(jī)應(yīng)用技術(shù).北京:北京航空航天大學(xué)出版社,2002[4]馬中梅.單片機(jī)的C語言程序設(shè)計(jì).北京:北京航空航天大學(xué)出版社,1999[5]胡汗才.單片機(jī)原理及系統(tǒng)設(shè)計(jì).北京:清華大學(xué)出版社,2002[6]李華.MCS-51單片機(jī)實(shí)用接口技術(shù).北京:北京航空航天出版社大學(xué),1999[7]方彥軍,孫建.智能儀器技術(shù)及其應(yīng)用.北京:化學(xué)工業(yè)出版社,2003[8]孫傳友.測控系統(tǒng)原理與設(shè)計(jì).北京:北京航空航天大學(xué)出版社,2002[9]劉守義等.單片機(jī)應(yīng)用技術(shù).西安:西安電子科技大學(xué)出版社,2002[10]何立民.單片機(jī)高級教程.北京:北京航空航天大學(xué)出版社,2000課設(shè)體會經(jīng)過了兩個(gè)星期的課設(shè),讓我對以前學(xué)的理論知識有了較深的體會,要用理論指導(dǎo)實(shí)踐,在實(shí)踐中發(fā)現(xiàn)自己的不足之處,不斷完善自己。這一周的課程設(shè)計(jì)讓我體會到很多東西,不僅僅是知識本身的,更多的是自己動手能力和邏輯思維能力的鍛煉,同時(shí),也知道自己還有許多要學(xué)的東西。在社會實(shí)踐中,單片機(jī)是一個(gè)熱門的話題,所以我要認(rèn)真學(xué)習(xí)單片機(jī)的知識,這對我們找工作是很有幫組的,遇到問題并不可怕關(guān)鍵是我們要找到方法去解決問題,一定要勤于動手,這樣自己才會有提高。當(dāng)然在這次寶貴的課程設(shè)計(jì)活動中,經(jīng)驗(yàn)才是對于我們最大的收獲,而且還增強(qiáng)了自身對未知問題以及對知識的深化認(rèn)識的能力,用受益匪淺這個(gè)詞語來概括這次難忘的活動我覺得再合適不過了。但是,光是完成了作品還是不可以自我滿足的,在從一開始的時(shí)候就懷著將作品制作得更加人性化,更加令人滿意,更加地使功能完美又方便地被應(yīng)用領(lǐng)域這個(gè)最終目的下,隨著對單片機(jī)這門學(xué)科的認(rèn)識加深,到達(dá)了拓展的程度,我想這個(gè)目的將在不遠(yuǎn)的時(shí)期內(nèi)被實(shí)現(xiàn)。最后感謝老師及同學(xué)在這兩個(gè)星期對我的幫助。、附錄1電路原理圖 附錄2元件清單 元件名稱型號數(shù)量單片機(jī)AT89C511溫度傳感器DS18B20數(shù)碼管7SEG-MPX8-CA1按鍵BUTTON16電阻RES10三極管2N29261蜂鳴器SOUNDER1附錄3程序源#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharcodetable[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e};ucharcodeaddress[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};sbitDQ=P3^0;sbitdot=P1^0;sbitfm=P3^5;uchara,i,temp1,temp2,c,t1,t2,yz1,yz2;bitflag,flag1;uinttemp;voiddelay(uintm){while(m--);}voidInit(){uchari=0;DQ=1;delay(8);DQ=0;delay(80);DQ=1;delay(14);i=DQ;delay(20);}ucharread_byte(){ucharbyte=0;for(i=0;i<8;i++)//先傳低位{DQ=0;byte>>=1;DQ=1;if(DQ)byte|=0x80;delay(4);}return(byte);}voidwrite_byte(ucharbyte){for(i=0;i<8;i++)//先傳低位{DQ=0;byte>>=1;DQ=CY;delay(5);DQ=1;}}voidread_temp(){ Init(); write_byte(0xcc);//SkipROM write_byte(0x44);//啟動溫度轉(zhuǎn)換 delay(10); Init(); write_byte(0xcc);//SkipROM write_byte(0xbe);//讀取溫度寄存器 temp1=read_byte(); //低位 temp2=read_byte(); //高位}voidds(){read_temp(); temp=temp1&0x0f; if(temp2>127) {flag=1;temp1=~temp1;temp2=~temp2; temp=temp1&0x0f;temp+=0x01; } temp=temp*625; temp1=temp1&0xf0;//取整數(shù)部分 temp1=temp1/16; temp2=temp2*16; temp1+=temp2; if(flag) temp1+=0x01;}voidxs(){for(i=0;i<4;i++) //顯示小數(shù)部分{ P2=address[i];P1=table[temp%10];delay(750); temp/=10;} P2=0xef; //顯示整數(shù)部分P1=table[temp1%10];dot=1;delay(750);if(temp1/100||temp1/10)//高位去0{P2=0xdf;P1=table[temp1/10%10];delay(750);}if(temp1/100) //高位去0{P2=0xbf;P1=table[temp1/100%10];delay(800);}if(flag) //加負(fù)號{P2=0x7f;P1=0x02;delay(750);flag=0;} }voidbj(){fm=1;delay(100);fm=0;delay(100);}voidjp(){uchart,tempt,p;P0=0xfe;tempt=P0;tempt=tempt&0xf0;if(tempt!=0xf0){switch(tempt){case(0xe0):flag1=0;flag=0;p=1;break;//shangxiancase(0xd0):flag1=0;flag=1;p=2;break;//xiaxiancase(0xb0):flag1=0;a++;t=1;break;case(0x70):flag1=0;a++;t=2;break;}while(temp!=0xf0){tempt=P0;tempt=tempt&0xf0;}}P0=0xfd;tempt=P0;tempt=tempt&0xf0;if(tempt!=0xf0){switch(tempt){case(0xe0):flag1=0;a++;t=3;break;case(0xd0):flag1=0;a++;t=4;break;case(0xb0):flag1=0;a++;t=5;break;case(0x70):flag1=0;a++;t=6;break;}while(tempt!=0xf0){tempt=P0;tempt=tempt&0xf0;}}P0=0xfb;tempt=P0;tempt=tempt&0xf0;if(tempt!=0xf0){switch(tempt){case(0xe0):flag1=0;a++;t=7;break;case(0xd0):flag1=0;a++;t=8;break;case(0xb0):flag1=0;a++;t=9;break;case(0x70):flag1=0;a++;t=0;break;}while(tempt!=0xf0){tempt=P0;tempt=tempt&0xf0;}}P0=0xf7;tempt=P0;tempt=tempt&0xf0;if(tempt!=0xf0){switch(tempt){case(0xe0):flag1=1;if(p==1){yz1=t1*10+t2;}if(p==2){yz2=t1*10+t2;}a=0;break;case(0xd0

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論