溫濕度傳感器-課程設(shè)計報告書_第1頁
溫濕度傳感器-課程設(shè)計報告書_第2頁
溫濕度傳感器-課程設(shè)計報告書_第3頁
溫濕度傳感器-課程設(shè)計報告書_第4頁
溫濕度傳感器-課程設(shè)計報告書_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

.PAGE.等級:等級:XX工程學(xué)院課程設(shè)計課程名稱單片機原理與應(yīng)用課題名稱環(huán)境溫、濕度檢測系統(tǒng)設(shè)計專業(yè)自動化班級1191學(xué)號20姓名指導(dǎo)教師李曉秀王迎旭2013年12月12日XX工程學(xué)院課程設(shè)計任務(wù)書課程名稱單片機原理與應(yīng)用課題環(huán)境溫、濕度檢測系統(tǒng)設(shè)計專業(yè)班級自動化學(xué)生姓名學(xué)號2011指導(dǎo)老師李曉秀審批任務(wù)書下達日期2013年12月1日任務(wù)完成日期2013年12月13日設(shè)計內(nèi)容與設(shè)計要求設(shè)計內(nèi)容:本課題要求以單片機為核心,采用溫濕度傳感器DHT11設(shè)計一個對環(huán)境溫度濕度的檢測系統(tǒng),要求用按鍵控制系統(tǒng)選擇分別對溫度或濕度的測試、復(fù)位、清除功能,用四位LED數(shù)碼管顯示實時溫度和溫度。設(shè)計要求:1確定系統(tǒng)設(shè)計方案; 2進行系統(tǒng)的硬件設(shè)計;3完成必要元器件選擇;4系統(tǒng)軟件設(shè)計及調(diào)試;5系統(tǒng)聯(lián)調(diào)及操作說明6按規(guī)范要求寫設(shè)計說明書主要設(shè)計條件PC機及單片機調(diào)試軟件;開發(fā)板1塊;系統(tǒng)設(shè)計、調(diào)試所需的元器件說明書格式課程設(shè)計任務(wù)書目錄總體方案確定各單元硬件電路設(shè)計及計算方法軟件設(shè)計與說明〔包括流程圖調(diào)試結(jié)果與必要的調(diào)試說明總結(jié)8、參考文獻9、附錄附錄A系統(tǒng)原理圖附錄B程序清單10、課程設(shè)計成績評分表。進度安排設(shè)計時間分為二周第一周星期一、上午:布置課題任務(wù),課題介紹及講課。下午:借閱有關(guān)資料,總體方案討論。星期二、確定總體方案,學(xué)習(xí)與設(shè)計相關(guān)內(nèi)容。星期三、各部分方案設(shè)計,各部分設(shè)計。星期四、設(shè)計及調(diào)試。星期五、設(shè)計及調(diào)試。星期六、設(shè)計及調(diào)試。第二周星期一:設(shè)計及調(diào)試。星期二:設(shè)計及調(diào)試。星期三:調(diào)試、寫說明書。星期四--星期五上午:寫說明書、完成電子版并打印成稿。星期五下午:答辯。參考文獻[1]王迎旭等.單片機原理及及應(yīng)用[M]

機械工業(yè)出版社.20XX

[2]康華光等.模擬電子技術(shù)

第五版[M]

高等教育出版社

20XX[3]杜樹春等.單片機C語言[M]

北京航空航天大學(xué)出版社目錄第1章概述71.1設(shè)計任務(wù)與要求71.2設(shè)計方案7第2章硬件設(shè)計82.1時鐘電路和復(fù)位電路82.2溫濕度測量電路設(shè)計92.3按鍵電路10第3章軟件設(shè)計123.1主函數(shù)設(shè)計123.2按鍵查詢133.3實時監(jiān)控與測試流程圖14第4章硬件調(diào)試與結(jié)果分析154.1調(diào)試過程154.2硬件調(diào)試16第5章總結(jié)18參考文獻19附錄一:系統(tǒng)仿真圖20附錄二:源程序21電氣與信息工程系課程設(shè)計評分表29第1章概述1.1設(shè)計任務(wù)與要求本課題以單片機為核心,用智能集成溫溫度傳感器DHT11主要實現(xiàn)檢測溫度、濕度的檢測,將溫度濕度信號通過傳感器進行信號的采集并轉(zhuǎn)換成數(shù)字信號,再運用單片機進行數(shù)據(jù)的分析和處理,在數(shù)碼管上顯示當(dāng)前溫濕度。要求用按鍵控制系統(tǒng)選擇分別對溫度或濕度的測試、復(fù)位、清除功能,完成硬件調(diào)試。1.2設(shè)計方案本課題的溫濕度測試,通過單片機STC-89C51連接溫濕度模塊、顯示模塊將溫度、濕度同時顯示。單片機發(fā)送一次開始信號后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,等待主機開始信號結(jié)束后,DHT11發(fā)送響應(yīng)信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,如果沒有接收到單片機發(fā)送來的信號,DHT11不會主動進行溫度采集,采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。系統(tǒng)設(shè)計框圖如圖1.1所示。單單片機按鍵電路顯示電路DHT11溫度采集電路時鐘復(fù)位電路圖1.1程序設(shè)計框圖第2章硬件設(shè)計2.1時鐘電路和復(fù)位電路MCS-51單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反放大器,引腳XTAL1和XTAL2分別是反相放大器的輸入端和輸出端。通常,經(jīng)由片外晶體振蕩器或陶瓷諧振器與兩個匹配電容一起構(gòu)成一個自激振蕩電路。本課題由片外晶體振蕩器與兩個匹配電容一起構(gòu)成了一個內(nèi)部時鐘振蕩電路,為單片機提供時鐘源。本設(shè)計復(fù)位電路采用按鍵復(fù)位,當(dāng)開關(guān)斷開時,與上電自動復(fù)位電路相同;當(dāng)開關(guān)閉合時,電容通過并聯(lián)的電阻迅速放電,然后,RC電路充電,能夠保證RST端能夠維持一段時間的高電平。如圖2.1所示。圖2.1時鐘及復(fù)位電路2.2溫濕度測量電路設(shè)計DHT11的供電電壓為3-5.5V,傳感器上電后,要等待1s以越過不穩(wěn)定狀態(tài)在此期間無需發(fā)送任何指令。電源引腳〔VDD,GND之間可增加一個100nF的電容,用以去耦濾波。數(shù)據(jù)用于微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分。如圖2.2所示,本電路上拉電阻為5K,數(shù)據(jù)端接P1.7〔接受溫濕度數(shù)據(jù)。圖2.2溫濕度測量電路2.3顯示電路本電路由四位一體共陽極數(shù)碼管顯示,采用9015三極管做位驅(qū)動。根據(jù)發(fā)光二極管物理連接的不同,七段數(shù)碼管可以分為共陰極和共陽極兩種結(jié)構(gòu)。其中P0端口為段選,P2.0~P2.3為位選,如圖2.3所示。圖2.3顯示電路2.4按鍵電路單片機設(shè)計中按鍵可分為獨立式按鍵和矩陣式按鍵,本系統(tǒng)由于按鍵較少,故采用四個獨立按鍵,上拉電阻為1K。其中,四個按鍵功能分別是顯示溫度、顯示濕度、實時監(jiān)控顯示溫濕度、測試溫濕度。如圖2.4。圖2.4按鍵電路第3章軟件設(shè)計本軟件設(shè)計主要是對距離進行測量、顯示。因此,整個軟件可分為按照硬件電路對單片機位定義;溫濕度設(shè)置子程序;溫濕度接收子程序;顯示子程序;延時子程序等。由于本設(shè)計方案要求硬件電路和軟件編程相結(jié)合,所以選擇合適的編程語言十分重要。C語言執(zhí)行效率沒有匯編語言高,但語言簡潔,使用方便靈活,運算豐富,表達化類型多樣化,程序設(shè)計自由度大,很好的可重用性,可移植性等特點基于C語言的眾多優(yōu)點本設(shè)計選擇此語言來編程。3.1主函數(shù)設(shè)計軟件分為兩部分,主程序和中斷服務(wù)程序。主程序完成初始化工作、溫濕度數(shù)據(jù)接收處理控制。外部中斷服務(wù)子程序主要完成時間值的讀取、結(jié)果的輸出等工作,如圖3.1所示。開始開始初始化初始化顯示顯示掃描掃描按鍵圖3.1主程序流程圖3.2按鍵查詢獨立式按鍵接口采用直接讀入方式工作,直讀式鍵盤接口是一個輸入接口,輸入接口主要功能是解決數(shù)據(jù)輸入的緩沖〔選通問題。本設(shè)計按鍵較少,采用的獨立按鍵。是否按鍵?是否按鍵?確定鍵實時測試顯示濕度顯示溫度測試Y圖3.2查詢按鍵處理在掃描按鍵函數(shù)中,每按下不同按鍵會返回一個不同的數(shù)值,在主函數(shù)中有按鍵查詢函數(shù)判斷為那個按鍵按下,隨后進入不同的子函數(shù),如圖3.2所示。3.3實時監(jiān)控與測試流程圖本系統(tǒng)設(shè)計分為實時監(jiān)控與測試模塊,圖3.3示為測試模塊。上電是數(shù)碼管顯示四個零,當(dāng)按下測試按鍵后,系統(tǒng)開始測量環(huán)境溫、濕度。當(dāng)數(shù)碼管顯示四個"—"時,表示成功測量溫、濕度。當(dāng)按下溫度〔濕度顯示按鍵,該模塊顯示測試時的溫度〔濕度。當(dāng)要進行下一次測量時,必須按下測試按鍵。開始開始是否按鍵?顯示是否按鍵?調(diào)用測試函數(shù)N溫度按鍵按下?調(diào)用顯示溫度函數(shù)調(diào)用顯示濕度函數(shù)YY濕度按鍵按下?YNY圖3.3測試流程圖圖3.4示為實時監(jiān)控模塊,按下實時監(jiān)控鍵后,啟動T0定時器開始定時,每一分鐘測試一次溫度、濕度,并在四位一體的共陽極數(shù)碼管輪流顯示溫度、濕度。當(dāng)按下溫度〔濕度顯示按鍵后,該模塊只顯示實時的溫度〔濕度。當(dāng)再次按下實時監(jiān)控按鍵后。定時器T0關(guān)閉。顯示顯示開始是否按鍵?是否按鍵?重裝初值啟動定時器調(diào)用測試函數(shù)NNYY輪流顯示溫濕度圖3.4實時監(jiān)控模塊第4章硬件調(diào)試與結(jié)果分析4.1調(diào)試過程在編寫此程序前,感覺DHT11的通信程序和取數(shù)程序最為難寫,在之前的學(xué)習(xí)中我并沒有接觸過單總線的通信時序圖。通過查閱資料和參考現(xiàn)有的程序,然后在老師講解和與本組的其他組員談?wù)摵?終于弄明白這方面的知識。而在測量函數(shù)中,剛開始并沒有測得數(shù)據(jù),通過查閱書籍我設(shè)置了一個全局變量,一步一步跟蹤每一步并顯示在P1的LED燈上,一步一步跟蹤,完善了DTH11的通信與取數(shù)函數(shù)。但在通信與取數(shù)函數(shù)與按鍵函數(shù)銜接時,總是有一定的概率測不到數(shù)據(jù),慢慢的調(diào)試我發(fā)現(xiàn)我的通信與取數(shù)函數(shù)要連續(xù)調(diào)用兩次才能每次正確的讀取數(shù)據(jù),在此,我設(shè)置了一個全局變量作為一個標(biāo)志位,每次按下測量鍵是將該標(biāo)志位設(shè)置為2,使通信與取數(shù)函數(shù)循環(huán)兩次,這樣保證了每次按下測試按鍵后就能與DHT11正確的通信從而保證得到正確的數(shù)據(jù)。在實時監(jiān)控這個模塊中,為了保證溫、濕度能循環(huán)顯示、按鍵后能只顯示溫度〔濕度。由于按鍵有限,所以一下設(shè)置了很多的標(biāo)志位。因為標(biāo)志位太多,而沒有將所有的環(huán)節(jié)考慮進去,一下程序有調(diào)試了很久才正確的實現(xiàn)要求的功能。4.2硬件調(diào)試如圖4.1所示,按下左下角按鍵時,單片機開始與DHT11通信并開始測試溫、濕度。圖示為測量溫、濕度成功。圖4.1初始化當(dāng)按下圖示按鍵時,數(shù)碼管顯示此時或?qū)崟r監(jiān)控的環(huán)境濕度。其中最前端的"C"表示此時顯示的事環(huán)節(jié)溫度,如圖4.2。圖4.2顯示濕度當(dāng)按下此按鍵時,數(shù)碼管顯示此時或?qū)崟r監(jiān)控的環(huán)境溫度。其中最前端的"H"表示此時顯示的是環(huán)境濕度,如圖4.3。圖4.3顯示溫度第5章總結(jié)這次單片機課程設(shè)計不僅鞏固了以前學(xué)過的知識,而且學(xué)到了很多書本上沒有沒到的知識,掌握了一種系統(tǒng)的研究方法,可以進行一些簡單的編程,通過這次課程設(shè)計我們明白理論與實際相結(jié)合是很重要的,只有理論知識還不夠,理論實踐相結(jié)合才能提高實際動手能力和獨立思考的能力。同樣,在學(xué)習(xí)中也發(fā)現(xiàn)了自己的不足之處,例如對以前所學(xué)過的知識理解不夠深刻,掌握不夠牢固。課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程。隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機已經(jīng)成為當(dāng)今計算機應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為二十一世紀的大學(xué)來說掌握單片機的開發(fā)技術(shù)是十分重要的?;仡櫰鸫舜螁纹瑱C課程設(shè)計,我仍感慨頗多。的確,從選題到定稿,從理論到實踐,在接近兩個星期的日子里,可以說得是苦多于甜,在設(shè)計的過程中遇到問題,可以說得是困難重重,難免會遇到過各種各樣的問題,通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。參考文獻[1]

王迎旭等.單片機原理及及應(yīng)用[M]

機械工業(yè)出版社.20XX串口通信[M]

[3]

康華光等.模擬電子技術(shù)第五版[M]

高等教育出版社20XX[4]

杜樹春等.單片機C語言[M]

北京航空航天大學(xué)出版社附錄一:系統(tǒng)仿真圖附錄二:源程序#include<reg51.h>bitflag2,flag3,flag5;sbitdht11=P1^7; #defineNUMBER20 //防止在與硬件通信時發(fā)生死循環(huán)的計數(shù)范圍 #defineSIZE5#defineOK1#defineERROR0 //函數(shù)的返回值表示讀取數(shù)據(jù)是否成功OK表示成功ERROR表示失敗voidDHT11_Delay_10us<void>; //延時10usvoidceshiwenshidu<void>;voidxianshishidu<void>;voidxianshiwendu<void>;unsignedcharReadValue<void>; unsignedcharDHT11_ReadTempAndHumi<void>;voiddelay_1_002s<void>; voiddelay<unsignedchari>; //延時程序voiddisplay<unsignedcharled0,led1,led2,led3>; //動態(tài)掃描顯示程序unsignedcharkeyscan<void>; //鍵盤掃描 unsignedcharstatus;//#defineucharunsignedchar//#defineuintunsignedintunsignedcharflag1,flag4;unsignedcharled_code[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x89}; /*共陽字型段碼表,"0"--"F","-","H"*/ unsignedcharled0,led1,led2,led3; unsignedcharvalue_array[5]; //存放五字節(jié)數(shù)據(jù)的數(shù)組unsignedcharvalue_temp,value_humi;voidDHT11_Delay_10us<void>{ unsignedchari; i--; i--; i--; i--; i--; i--;}/*讀一個字節(jié)的數(shù)據(jù)*/unsignedcharDHT11_ReadValue<void>{ unsignedcharcount,value=0,i; status=OK; //設(shè)定標(biāo)志為正常狀態(tài) for<i=8;i>0;i--> { //高位在先 value<<=1; count=0; //每一位數(shù)據(jù)前會有一個50us的低電平時間.等待50us低電平結(jié)束 while<<dht11==0>&&<count++<NUMBER>>; if<count>=NUMBER> { status=ERROR; //設(shè)定錯誤標(biāo)志 return0; //函數(shù)執(zhí)行過程發(fā)生錯誤就退出函數(shù) } //26-28us的高電平表示該位是0,為70us高電平表該位1 DHT11_Delay_10us<>; DHT11_Delay_10us<>; DHT11_Delay_10us<>; //延時30us后檢測數(shù)據(jù)線是否還是高電平 if<dht11!=0> { //進入這里表示該位是1 value++; //等待剩余<約40us>的高電平結(jié)束 while<<dht11!=0>&&<count++<NUMBER>> { dht11=1; } if<count>=NUMBER> { status=ERROR; //設(shè)定錯誤標(biāo)志 return0; } } }return<value>;} //讀溫度和濕度函數(shù),讀一次的數(shù)據(jù),共五字節(jié),讀出成功函數(shù)返回OK,錯誤返回ERRORunsignedcharDHT11_ReadTempAndHumi<void>{ unsignedchari=0,check_value=0,count=0; display<led0,led1,led2,led3>;// EA=0; dht11=0; //拉低數(shù)據(jù)線大于18ms發(fā)送開始信號 display<led0,led1,led2,led3>; //需大于18毫秒 dht11=1; //釋放數(shù)據(jù)線,用于檢測低電平的應(yīng)答信號 //延時20-40us,等待一段時間后檢測應(yīng)答信號,應(yīng)答信號是從機拉低數(shù)據(jù)線80us DHT11_Delay_10us<>; DHT11_Delay_10us<>; DHT11_Delay_10us<>; DHT11_Delay_10us<>; if<dht11!=0> //檢測應(yīng)答信號,應(yīng)答信號是低電平 { //沒應(yīng)答信號 returnERROR; } else { //有應(yīng)答信號 while<<dht11==0>&&<count++<NUMBER>>; //等待應(yīng)答信號結(jié)束 if<count>=NUMBER> //檢測計數(shù)器是否超過了設(shè)定的范圍 { dht11=1; returnERROR; //讀數(shù)據(jù)出錯,退出函數(shù) } count=0; dht11=1; //釋放數(shù)據(jù)線 //應(yīng)答信號后會有一個80us的高電平,等待高電平結(jié)束 while<<dht11!=0>&&<count++<NUMBER>>; if<count>=NUMBER> { dht11=1; returnERROR; //退出函數(shù) } //讀出濕.溫度值 for<i=0;i<SIZE;i++> { value_array[i]=DHT11_ReadValue<>; if<status==ERROR> //調(diào)用ReadValue<>讀數(shù)據(jù)出錯會設(shè)定status為ERROR { dht11=1; returnERROR; } //讀出的最后一個值是校驗值不需加上去 if<i!=SIZE-1> { //讀出的五字節(jié)數(shù)據(jù)中的前四字節(jié)數(shù)據(jù)和等于第五字節(jié)數(shù)據(jù)表示成功 check_value+=value_array[i]; } } //endfor display<led0,led1,led2,led3>;//在沒用發(fā)生函數(shù)調(diào)用失敗進行校驗 if<check_value==value_array[SIZE-1]> { value_humi=value_array[0]; value_temp=value_array[2]; dht11=1; returnOK; //正確的讀出dht11輸出的數(shù)據(jù) } else { returnERROR; //校驗數(shù)據(jù)錯 } }}voiddelay_1_002s<void>{ unsignedcharz,b,c; for<z=0;z<10;z++> { for<b=0;b<160;b++> { for<c=0;c<207;c++>; } }}voiddelay<unsignedcharx>{ unsignedchari,j; for<i=0;i<x;i++> for<j=0;j<120;j++>;}voiddisplay<unsignedcharled0,led1,led2,led3>{ P2=0xfe;P0=led_code[led0];delay<5>; P2=0xfd;P0=led_code[led1];delay<5>; P2=0xfb;P0=led_code[led2]&0x7f;delay<5>; P2=0xf7;P0=led_code[led3];delay<5>; P2=0xff;}unsignedcharkeyscan<void>{ unsignedcharcord_l; cord_l=P3&0xf0; if<cord_l!=0xf0> { display<led0,led1,led2,led3>; if<cord_l!=0xf0> { while<P3!=0xf0> { P3=0xf0; //等待按鍵釋放 } return<cord_l>; } return<0xf0>; }}voidceshiwenshidu<void>{ unsignedchard; for<;flag4>0;flag4--> { d=DHT11_ReadTempAndHumi<>; display<led0,led1,led2,led3>; if<flag3==0> { if<d==1> { led0=16; led1=16; led2=16; led3=16; } } } flag4=1;}voidxianshishidu<void>{ led0=17; led1=value_humi/10; led2=value_humi%10; led3=0;}voidxianshiwendu<void>{ led0=12; led1=value_temp/10; led2=value_temp%10; led3=

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論