【《基于單片機(jī)的自動晾衣架系統(tǒng)設(shè)計》8700字】_第1頁
【《基于單片機(jī)的自動晾衣架系統(tǒng)設(shè)計》8700字】_第2頁
【《基于單片機(jī)的自動晾衣架系統(tǒng)設(shè)計》8700字】_第3頁
【《基于單片機(jī)的自動晾衣架系統(tǒng)設(shè)計》8700字】_第4頁
【《基于單片機(jī)的自動晾衣架系統(tǒng)設(shè)計》8700字】_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基于單片機(jī)的自動晾衣架系統(tǒng)設(shè)計摘要鑒于智能家具不斷步入人們的生活中,我們考慮將自動化檢測及控制技術(shù)運(yùn)用到晾衣架上去,設(shè)計一個檢測環(huán)境溫濕度、光照等功能的智能晾衣架。本設(shè)計可以減輕人們在無人的情況下依然可以保持衣服的整潔干凈。本設(shè)計由STM32單片機(jī)電路配合光敏電阻、DHT11溫濕度傳感器、風(fēng)速檢測儀以及LCD1602顯示電路、電機(jī)電路、電源電路等組成。該系統(tǒng)可以實時采集溫濕度、風(fēng)速光照強(qiáng)度等,來判斷是否驅(qū)動電機(jī)的伸縮。該系統(tǒng)有手動模式和自動模式,對應(yīng)可以設(shè)置溫濕度、光照強(qiáng)度、風(fēng)速的閾值,切換工作狀態(tài)。關(guān)鍵詞:單片機(jī)、DHT11溫濕度傳感器、步進(jìn)電機(jī);目錄TOC\o"1-2"\h\u13715一、引言 420845(一)智能家具的發(fā)展背景 48212(二)智能家居的發(fā)展前景 52224(三)本文主要研究內(nèi)容 524472二、總體設(shè)計方案 515703(一)系統(tǒng)功能要求 532420(二)系統(tǒng)整體方案設(shè)計 625938(三)元器件的選擇 717142三、系統(tǒng)硬件的設(shè)計 9173(一)最小系統(tǒng)電路設(shè)計 1024721(二)顯示電路設(shè)計 1024314(三)按鍵電路設(shè)計 113564(四)A/D轉(zhuǎn)換電路 1113631四、系統(tǒng)軟件的設(shè)計 1219131(一)、系統(tǒng)軟件整體設(shè)計 1312315(二)、顯示函數(shù)軟件設(shè)計 1430194(三)、按鍵電路軟件設(shè)計 1519513(四)、處理子函數(shù)程序設(shè)計 1629937五、實物調(diào)試 1720307(一)、軟件調(diào)試 1831993(二)、實物組裝 1920049(三)實驗調(diào)試 1922873總結(jié) 2220803參考文獻(xiàn) 23引言智能家具的發(fā)展背景現(xiàn)在隨著互聯(lián)網(wǎng)的發(fā)展,經(jīng)濟(jì)水平提高和科學(xué)技術(shù)的發(fā)展,人們的生活逐漸智能化?;ヂ?lián)網(wǎng)科技影響人們的生活,隨之智能家具也應(yīng)運(yùn)而生。由于傳統(tǒng)的晾衣架已經(jīng)無法滿足現(xiàn)代人們的生活需求,加之傳統(tǒng)晾衣架的缺點(diǎn)也逐漸體現(xiàn)出來,使用壽命短,保養(yǎng)繁瑣等,無法滿足消費(fèi)者的日益發(fā)展的需求。智能家具不僅包含了傳統(tǒng)家具的功能,還兼?zhèn)渥詣踊?,提供全方位的信息交互。智能家居的發(fā)展前景從智能家具的發(fā)展來看,提出智能家具的概念,不斷的研究更新,融合的新生活中去,時代的推動。智能家居在智能照明、智能門鎖、環(huán)境監(jiān)測、安全警示等應(yīng)用廣泛,實用性強(qiáng)方便人們的生活。智能家居設(shè)備通過不斷的改進(jìn),推動智能生態(tài)的建立。智能家具互聯(lián)平臺控制,遠(yuǎn)程控制家中的設(shè)備,對家中的安全狀態(tài)實時上報,保證住家的安全性,高性能、自動化、語音助手等不斷地方便著我們生活,智能已經(jīng)成為潮流的趨勢。本文主要研究內(nèi)容本課題設(shè)計制作的儀器是運(yùn)用STM32芯片主導(dǎo)的STC89C52控制傳輸轉(zhuǎn)換核心。它由軟件系統(tǒng)設(shè)計和硬件系統(tǒng)設(shè)計兩方面系統(tǒng)組成。通過在學(xué)校對元器件的學(xué)習(xí),以及對編程的一些了解學(xué)習(xí),對電子元件進(jìn)行相應(yīng)的組裝,對問題的檢測、排除、解決方案。總體設(shè)計方案系統(tǒng)功能要求本設(shè)計由STM32單片機(jī)電路配合DHT11溫濕度傳感器、風(fēng)速檢測電路、光敏電阻以及LDC1602液晶顯示電路,電機(jī)電路、電源電路組成。系統(tǒng)主要實現(xiàn)功能如下所示:通過DHT11、風(fēng)速檢測、光敏電阻檢測當(dāng)前溫濕度、風(fēng)速、光照強(qiáng)度,低于或高于閾值,晾衣架收回或伸出;通過按鍵設(shè)置各傳感器的上下限值和定時;通過顯示屏顯示溫濕度,光照強(qiáng)度值,風(fēng)速值,定時時間;系統(tǒng)整體方案設(shè)計本設(shè)計是以STC89C52單片機(jī)為核心控制器,加上其他的模塊組成智能晾衣架系統(tǒng)。其中包括中控部分、輸出部分、輸入部分。其中中控系統(tǒng)是由STC89C52芯片進(jìn)行控制處理數(shù)據(jù),經(jīng)過處理而控制。其中輸出部分由顯示電路和電機(jī)電路組成,顯示電路可以顯示溫濕度,光照強(qiáng)度,風(fēng)速,調(diào)定時間以及對各個數(shù)值的設(shè)置;電機(jī)電路是由步進(jìn)電機(jī)組成,由此來控制模擬晾衣架的伸縮。最后是輸入部分由光敏電阻,風(fēng)速檢測模組,溫濕度檢測模組,獨(dú)立按鍵以及供電電路組成,以此來檢測當(dāng)前的光照強(qiáng)度,風(fēng)速,溫濕度。其中按鍵電路是來切換界面以及設(shè)置各個數(shù)值。供電電路是為整個系統(tǒng)提供電源,來支持整個系統(tǒng)的運(yùn)行。元器件的選擇主控制器選擇通過對上面的了解,為了能夠?qū)崿F(xiàn)自動晾衣架每一項的功能指標(biāo),我將選擇STC89C52芯片來幫助我完成實驗。STC89C52芯片相比較于其他的芯片,STC89C52芯片功耗更低,性能更高,而且價格也比較低,能夠完全的實現(xiàn)目前的所有功能,就目前而言,STC89C52芯片是最優(yōu)的選擇。顯示模塊的選擇為了能夠感知周圍的實時情況,更加的直觀的了解周圍情況,顯示屏恰好可以為我們解決所有的問題,需要顯示屏實時的反應(yīng)周圍環(huán)境。因此在這里我將選擇LCD1602顯示模塊。LCD1602顯示模塊是一款專門用于顯示數(shù)字,字母等的點(diǎn)陣液晶顯示器。LCD1602顯示屏是指現(xiàn)實的內(nèi)容為16*2,意思為可以顯示兩行,每行顯示16個字符,即可以同時顯示32個字符。提供了豐富的指令設(shè)置:清顯示;游標(biāo)回原點(diǎn);顯示開/關(guān);游標(biāo)開/關(guān);顯示字符閃爍;游標(biāo)移位;顯示移位元等。模/數(shù)轉(zhuǎn)換芯片的選擇在實驗中,絕大多數(shù)的物理量都是連續(xù)變化的模擬量,例如溫濕度,風(fēng)速,光照強(qiáng)度等,他們的數(shù)值都是隨著時間的變化而變化,而這些的模擬量經(jīng)過傳感器的轉(zhuǎn)換后依然是模擬信號,如果需要運(yùn)用數(shù)字系統(tǒng)來處理這些模擬量,我們就必須要將這些模擬信號進(jìn)行處理,需要將這些電信號轉(zhuǎn)換為數(shù)字信號,即模數(shù)轉(zhuǎn)換。因此我們就需要用到模數(shù)轉(zhuǎn)換模塊。在選擇模數(shù)轉(zhuǎn)換模塊時,我們需要考慮幾個主要技術(shù)指標(biāo):分辨率,轉(zhuǎn)換誤差,轉(zhuǎn)換速度以及電源抑制比。位數(shù)越多,其量化誤差越小,轉(zhuǎn)換精度越高,分辨率也越高。轉(zhuǎn)換時間越短,轉(zhuǎn)換速度越快,因此為了完成實驗?zāi)繕?biāo),我們將選用ADC0832模數(shù)轉(zhuǎn)換模塊。溫濕度模塊的選擇溫濕度傳感器就是利用物質(zhì)隨溫度濕度變化的特性,把溫濕度轉(zhuǎn)換為電量的傳感器。在這個實驗中,我將選擇DHT11溫濕度傳感器來進(jìn)行實驗,使得智能家具能夠檢測周圍溫度濕度的效果。該產(chǎn)品響應(yīng)時間快,抗干擾能力強(qiáng),物美價廉,品質(zhì)好,因此我將選擇這款模組來幫助我實現(xiàn)各種效果。本實驗?zāi)康木褪峭ㄟ^環(huán)境的檢測變化來對電機(jī)的控制。風(fēng)速傳感器的選擇風(fēng)速傳感器在我們?nèi)粘5纳钪幸彩殖R?。例如在路過氣象臺的時候,經(jīng)??梢钥匆娨粋€東西在轉(zhuǎn),那個東西就是風(fēng)速傳感器。在這里我就選用三環(huán)式旋轉(zhuǎn)風(fēng)杯風(fēng)速傳感器。風(fēng)速傳感器是由一個直流發(fā)電機(jī)和一個三環(huán)式旋轉(zhuǎn)風(fēng)杯組成的。當(dāng)由風(fēng)流經(jīng)過三環(huán)式風(fēng)杯時,風(fēng)帶動風(fēng)杯轉(zhuǎn)動,風(fēng)杯再帶動直流發(fā)電機(jī)轉(zhuǎn)動,直流發(fā)電機(jī)的電機(jī)產(chǎn)生電壓,利用此信號電壓,進(jìn)行風(fēng)速檢測。步進(jìn)電機(jī)的選擇繼電器使用特點(diǎn)是用小電壓小電流控制大電壓大電流電路的通與斷,繼電器內(nèi)部對大電流和小電流進(jìn)行了隔離,所以在很多小電流控制大電流的場合都使用繼電器。通斷的實現(xiàn)原理是,內(nèi)部應(yīng)用小電流控制電磁線圈是否得電,如果得電則帶有鐵芯的線圈就會有磁性,會使繼電器的觸點(diǎn)動作,這樣就實現(xiàn)了小電流控制大電流。電動機(jī)也俗稱馬達(dá),它有直流馬達(dá)和交流馬達(dá)之別。一般的馬達(dá)是通過通電,使得馬達(dá)中心的線圈產(chǎn)生磁性,使得線圈和馬達(dá)壁上的磁鐵相互排斥,達(dá)到運(yùn)動的標(biāo)準(zhǔn)。物理課上學(xué)習(xí)的電磁鐵,也就運(yùn)用到這里面,通電線圈會產(chǎn)生磁性,形成一個磁鐵。光敏電阻元器件的選擇光敏電阻一般用于對光線的測量,光的轉(zhuǎn)換。光敏電阻是由一種半導(dǎo)體材料制成的,利用了光電效應(yīng)。一般的情況下光敏電阻在無光的情況下,能夠保持高額的電阻,并且光敏電阻對光十分敏感,在光照強(qiáng)度稍微改變,電阻阻力就會改變。光敏電阻器的光照特性在大多數(shù)情況下是非線性的,只有在微小的范圍內(nèi)呈線性,光敏電阻器的電阻值有較大的離散性。系統(tǒng)硬件的設(shè)計最小系統(tǒng)電路設(shè)計1、通過對書本知識的了解得知晶振電路的構(gòu)造簡單。本課題選用的晶振是11.0592M的無源晶振,將兩片30pF的電容連到晶振的兩端,使其運(yùn)行產(chǎn)生11.0592MHz的時鐘信號,傳輸?shù)絊TC89C52單片機(jī)中讓其執(zhí)行各種指令。2、復(fù)位電路也是最小電路的組成部分。復(fù)位電路主要作用是當(dāng)外界出現(xiàn)干擾時,實驗無法繼續(xù)進(jìn)行下去,我們可以通過復(fù)位按鈕來進(jìn)行相關(guān)操作,使其電路恢復(fù)至初始化。復(fù)位電路與單片機(jī)的REST引腳相連。當(dāng)電路通路時,此情況下電路進(jìn)行初始化,程序重新運(yùn)行。顯示電路設(shè)計LCD1602液晶顯示器是一款可以顯示2行16列的顯示屏。首先GND是電源負(fù)極,VCC是電源正極。其中VO引腳是LCD驅(qū)動電壓輸入端,RS引腳是指令和數(shù)據(jù)選擇信號。RW是讀寫選擇信號,EN是使能信號,數(shù)據(jù)信號是由DB0到DB7信號端口來控制的。LCD1602的顯示實驗是初學(xué)時期必須學(xué)習(xí)的實驗,因此開發(fā)設(shè)計資料也比較全。LCD1602內(nèi)部集成了HD44780控制方案和HD44100驅(qū)動方案,搭配常用電阻電容器件,對液晶顯示屏進(jìn)行控制。雖然不同品牌的LCD1602使用的集成芯片方案不同,但是在開發(fā)操作上是一樣的。由于有了驅(qū)動芯片的支持,在控制液晶顯示的時候只需要寫入對應(yīng)的字符即可,驅(qū)動芯片會將對應(yīng)顯示內(nèi)容的數(shù)據(jù)輸入到液晶屏進(jìn)行顯示。按鍵電路設(shè)計本課題的按鍵設(shè)計是由三個獨(dú)立的按鍵組合而成。通過不同的按鍵組合,來達(dá)到不同的效果顯示。我設(shè)計的電路中,第一個按鈕起到設(shè)置的作用,用來設(shè)置不同的數(shù)值顯示,例如:溫濕度的設(shè)定、風(fēng)速的設(shè)定,光照強(qiáng)度的設(shè)定以及定時設(shè)置等。由此以來可以模擬不同季節(jié)下對數(shù)值的要求。第二和第三個按鈕可以分為兩個作用,首先第一個作用是:當(dāng)界面調(diào)試為設(shè)置界面時,第二和第三個按鈕分別做為加減按鈕;第二個功能是:第二個按鈕可以作為切換界面按鍵,以觀察不同的狀態(tài),第三個按鈕作為手動切換按鈕,可以手動切換步進(jìn)電機(jī)的狀態(tài)。A/D轉(zhuǎn)換電路A/D轉(zhuǎn)換是將時間和數(shù)值上連續(xù)變化的模擬量轉(zhuǎn)換成時間和數(shù)值都是離散的數(shù)字量。A/D轉(zhuǎn)換需要經(jīng)過采樣、保持、量化、編碼這四個過程。其中CS,CLK,DO和DI是與STC89C52單片機(jī)的串口連接。DO,DI引腳由于是雙向的,所以DO,DI引腳可以并聯(lián)連接。當(dāng)進(jìn)行模數(shù)轉(zhuǎn)換時,CS端必須處于低電平的狀態(tài),否則該芯片將處于禁用狀態(tài)。系統(tǒng)軟件的設(shè)計C語言是一門面向過程、抽象化的通用程序設(shè)計語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產(chǎn)生少量的機(jī)器語言以及不需要任何運(yùn)行環(huán)境便能運(yùn)行的高效率程序設(shè)計語言。選用C語言有一下的幾種有點(diǎn):語言簡便,方便靈活;可移植性好;表達(dá)能力強(qiáng);表達(dá)方式靈活;可進(jìn)行結(jié)構(gòu)化程序設(shè)計;可以直接操作計算機(jī)硬件;生成的目標(biāo)代碼質(zhì)量高。、系統(tǒng)軟件整體設(shè)計首先我們對整個系統(tǒng)進(jìn)行初始化,初始化過后就是對整個系統(tǒng)的編輯了。開始我們需要對按鍵的判斷是否有變化,如果沒有,我們將直接獲取相關(guān)的數(shù)據(jù),例如溫度濕度,光照強(qiáng)度以及風(fēng)速等祥光的環(huán)境變量;如果按鍵變化,則需要我們對相關(guān)的數(shù)值設(shè)定以及界面切換,例如溫濕度界面與風(fēng)速數(shù)值顯示界面的切換,或者是對限定范圍的設(shè)置。接下來我們就是對檢測函數(shù)的編輯:通過我溫濕度模塊,光照檢測模塊以及風(fēng)速檢測模塊等相關(guān)模塊的檢測,來進(jìn)行相關(guān)的模塊設(shè)計。接下來就是顯示模塊的設(shè)計,該設(shè)計需要我們將各個模塊的檢測數(shù)據(jù),用此設(shè)計來具體顯現(xiàn)出來,以便我們更直觀的了解周圍環(huán)境的狀況,和對設(shè)定界面的顯示。最后一個函數(shù)的設(shè)計就是整個系統(tǒng)的綜合:我們需要用這個函數(shù)設(shè)計來進(jìn)行處理判斷。當(dāng)所設(shè)定的數(shù)值范圍內(nèi),各個檢測數(shù)據(jù)任意一個不在限定范圍內(nèi),則步進(jìn)電機(jī)強(qiáng)制收回,此狀態(tài)為晾衣架為收回狀態(tài),若數(shù)據(jù)測量都在設(shè)定范圍內(nèi),晾衣架為伸出狀態(tài),或者可以手動調(diào)整晾衣架的位置。緊接著就是定時設(shè)置,設(shè)置時間在此時間內(nèi)可進(jìn)行數(shù)據(jù)測量,不必要時可以關(guān)閉,以節(jié)約能源。主程序編碼如下:voidmain(){ Lcd1602_Init(); //LCD1602初始化 Delay_function(50); //延時50ms lcd1602_clean(); //清屏 Delay_function(50); //延時50ms while(DHT11_Init()); //DHT11初始化 Delay_function(50); //延時50ms Timer0_Init(); //定時器0初使化 Delay_function(50); //延時50ms、顯示函數(shù)軟件設(shè)計顯示函數(shù)顧名思義就是設(shè)計顯示屏的函數(shù),我們設(shè)計幾個界面:分別為溫濕度顯示界面,光照強(qiáng)度和風(fēng)速檢測顯示界面,定時界面的設(shè)計,以及溫度,濕度,光照強(qiáng)度,風(fēng)速,時間數(shù)值設(shè)置界面。因為我們只有三個按鍵,需要對這么多的數(shù)據(jù)進(jìn)行規(guī)劃設(shè)計,就需要我們統(tǒng)一規(guī)劃分類,因此我將顯示數(shù)值歸為一類,設(shè)置數(shù)值歸為一類。根據(jù)函數(shù)的設(shè)計,我們將會根據(jù)不同的按鍵來進(jìn)行相關(guān)的設(shè)定。其函數(shù)程序如下:voidDisplay_function(void){ switch(flag_display) //根據(jù)不同的顯示標(biāo)志位,顯示不同的設(shè)置界面 { case0: //界面0 switch(flag_display_change) //根據(jù)切換顯示標(biāo)志位,顯示不同的測量界面 { case0: lcd1602_display_str(1,0,"Temp:"); //顯示溫度 lcd1602_display_temp(1,5,temp_value);、按鍵電路軟件設(shè)計按鍵電路設(shè)計,三個按鍵都有獨(dú)立的作用。我們設(shè)計按鍵,首先掃描是否有按鍵改動,若沒有則直接結(jié)束該過程;若有按鍵改動,則需要我們判斷有哪個按鍵改動:我設(shè)計的電路中,第一個按鈕起到設(shè)置的作用,用來設(shè)置不同的數(shù)值顯示,例如:溫濕度的設(shè)定、風(fēng)速的設(shè)定,光照強(qiáng)度的設(shè)定以及定時設(shè)置等。由此以來可以模擬不同季節(jié)下對數(shù)值的要求。第二和第三個按鈕可以分為兩個作用,首先第一個作用是:當(dāng)界面調(diào)試為設(shè)置界面時,第二和第三個按鈕分別做為加減按鈕;第二個功能是:第二個按鈕可以作為切換界面按鍵,以觀察不同的狀態(tài),第三個按鈕作為手動切換按鈕,可以手動切換步進(jìn)電機(jī)的狀態(tài)。當(dāng)我們進(jìn)行第一個按鈕操作時,我們將進(jìn)行數(shù)據(jù)的設(shè)置,此時我們還將掃描其余的按鈕是否改動,當(dāng)其余的按鈕沒有改動時,此過程直接結(jié)束;當(dāng)發(fā)生改動時則需要我們判斷是哪一個按鍵改動,第二個和第三個按鍵此時分別的作用是進(jìn)行數(shù)值的加減運(yùn)行。其代碼程序如下:voidKey_function(void){ key_num=Chiclet_Keyboard_Scan(0); //按鍵掃描 if(key_num!=0) //有按鍵按下 { switch(key_num) { case1: //按鍵1 flag_display++; //顯示標(biāo)志位+1 if(flag_display>5) //一共6個模式 flag_display=0; lcd1602_clean(); //清屏 break;、處理子函數(shù)程序設(shè)計處理子函數(shù)的設(shè)計就是對整個函數(shù)的處理,判斷數(shù)值以及對步進(jìn)電機(jī)的控制。當(dāng)所設(shè)定的數(shù)值范圍內(nèi),各個檢測數(shù)據(jù)任意一個不在限定范圍內(nèi),則步進(jìn)電機(jī)強(qiáng)制收回,此狀態(tài)為晾衣架為收回狀態(tài),若數(shù)據(jù)測量都在設(shè)定范圍內(nèi),晾衣架為伸出狀態(tài),或者可以手動調(diào)整晾衣架的位置。緊接著就是定時設(shè)置,設(shè)置時間在此時間內(nèi)可進(jìn)行數(shù)據(jù)測量,不必要時可以關(guān)閉,以節(jié)約能源。當(dāng)所有的數(shù)值都在范圍內(nèi),我們便可以隨意的改變電機(jī)的狀態(tài)。程序如下所示:voidManage_function(void){ if(flag_display==0) //顯示標(biāo)志位為0時 { if((temp_value<(temp_min*10)||humi_value>(humi_max*10)||light_value<(light_min*10)||wind_value>(wind_max*10)||(time_value!=0&&time_all==0))&&motor_state==1) //溫度、濕度、光照、風(fēng)速、定時、電機(jī)狀態(tài)限定之外,強(qiáng)制電機(jī)反轉(zhuǎn),收回晾衣架 { Motor_Reversal(); //電機(jī)反轉(zhuǎn) motor_state=0; //電機(jī)狀態(tài)置0,代表晾衣架處于收回狀態(tài) flag_motor=0; //電機(jī)標(biāo)志位置0,手動控制下,晾衣架處于收回狀態(tài) }實物調(diào)試、軟件調(diào)試Keil5軟件調(diào)試Keil5是由美國KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。KeilC51生成的目標(biāo)代碼效率非常高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。本設(shè)計所使用的編程環(huán)境是Keil5,相對于其他軟件編程環(huán)境,Keil5更加的輕便快捷,操作更加的簡單,深受廣大嵌入式軟件開發(fā)者的喜愛。Keil5支持多種芯片,包括51單片機(jī)、STM32、HC32、NXP等,生成的HEX文件,可通過燒錄器直接燒錄到單片機(jī)中,非常方便。另外,Keil5編譯有三種,一種是單編,一種是部分編譯,還有一種是全部編譯,這樣給開發(fā)人員更多的選擇,并且編譯的結(jié)果,顯示在界面的最下方,供開發(fā)者查找錯誤。Poteus7.8軟件調(diào)試Proteus7.8官方版軟件是來自英國LabcenterElectronics公司的EDA工具軟件,Proteus軟件除了其具有和其它EDA工具一樣的原理布圖,PCB自動或人工布線及電路仿真的功能外,其革命性的功能是,他的電路仿真是互動的,針對微處理器的應(yīng)用,還可以直接在基于原理圖的虛擬原型上編程,并實現(xiàn)軟件源碼級的實時調(diào)試,如有顯示及輸出,還能看到運(yùn)行后輸入輸出的效果,配合系統(tǒng)配置的虛擬儀器如示波器,邏輯分析儀等,您不需要別的,Proteus為您建立了完備的電子設(shè)計開發(fā)環(huán)境。通過使用Proteus7.8軟件,我們可以模擬仿真實際情況,不需要通過實物來觀察實驗效果,從中尋找問題并解決問題以防在PCB板焊接時出現(xiàn)問題,從而浪費(fèi)實驗材料,節(jié)約時間精力。、實物組裝焊接前準(zhǔn)備工作:準(zhǔn)備工具:電烙鐵、錫絲、鑷子、斜口鉗、萬用表等必要工具;檢查與清理元器件;在單元電路焊接之前工作:根據(jù)電路板組裝原則,先高后低、先里后外、先小后大。按照課堂要求進(jìn)行。焊接時準(zhǔn)備工作:大多數(shù)的元器件都沒有正負(fù)極之分,焊接十分簡單,只需要注意焊接時不要虛焊,會影響實驗操作甚至出現(xiàn)故障。最需要注意的是二極管的焊接。用萬用表的歐姆檔,并選擇R*100或R*1K擋位。紅表筆所連接的是表內(nèi)電池的負(fù)極,黑表筆則連接的是表內(nèi)電池的正極。測量二極管的正反向電阻,黑表筆接陽極,紅表筆接陰極,指針偏角大正向電阻??;反之,指針偏角小電阻大。則此二極管是好的。實驗調(diào)試首先我們設(shè)定好溫度的最小值,濕度的最大值,光照強(qiáng)度的最小值,風(fēng)速的最大值。在這里我們分別設(shè)定為10℃,50%,40Lx,10m/s,如圖:我將發(fā)動機(jī)的此刻位置認(rèn)為是伸出狀態(tài),現(xiàn)在我將改變一些的變量來測試。首先我改變了光照強(qiáng)度,當(dāng)光照強(qiáng)度高于40Lx時,發(fā)動機(jī)不動,當(dāng)光照強(qiáng)度低于40Lx時,此刻模擬天黑,發(fā)動機(jī)將收回,如下圖所示:其次我改變了風(fēng)速,實驗結(jié)果是當(dāng)風(fēng)速高于10m/s時,發(fā)動機(jī)自動收回,如下圖所示:在整體實驗中,當(dāng)其中的任意一個變量改變時,在所設(shè)定的范圍之外,步進(jìn)電機(jī)就會隨之改變狀態(tài)??偨Y(jié)本實驗通過對一些成功案例參考,成功的實現(xiàn)基本的實驗要求。在11月份,在指導(dǎo)老師的幫助引導(dǎo)下,確定了論文的選題,讓我有了明確的目標(biāo),從茫然到思路清晰,經(jīng)歷了幾個月的努力通過上網(wǎng)查閱資料,翻閱書籍,,并在指導(dǎo)老師的指導(dǎo)下,終于完成了畢業(yè)設(shè)計,并按照要求完成論文的寫作。本設(shè)計是通過STC89C52單片機(jī)芯片,經(jīng)過程序指令編輯,使得它在各個模塊都能發(fā)揮其作用。然而在設(shè)計的過程中,最難的是系統(tǒng)的調(diào)試與運(yùn)行。此過程是需要在對軟件和硬件都完成設(shè)計后,進(jìn)行合并操作。調(diào)試過程中難免會遇到一些問題以及系統(tǒng)故障,一旦出現(xiàn)問題,很難察覺排查,無法找到快捷有效的解決方案,則需要我們從頭開始,一點(diǎn)一點(diǎn)的排查故障,翻閱資料,查看成功案例以及別人的解決辦法,直到排查解決出所有問題,適當(dāng)改進(jìn)和優(yōu)化方案。在指導(dǎo)老師一次次的指導(dǎo)下,我的論文也逐漸成型。在整個畢業(yè)論文設(shè)計的過程中,讓我所學(xué)過的知識得到鞏固和加強(qiáng)。此外還學(xué)到了許多課本以外的知識,整個寫作的過程中也是我再次學(xué)習(xí)的機(jī)會。參考文獻(xiàn)孫紹翔:基于單片機(jī)和傳感器的智能晾衣架系統(tǒng)設(shè)計[J],機(jī)械工程師,2013顏麗娜:基于DHT11溫濕度測控系統(tǒng)的設(shè)計[J],海南大學(xué)學(xué)報,2012周潤景,徐宏偉,丁莉:單片機(jī)電路設(shè)計、分析與制作[M],北京,機(jī)械工業(yè)出版社,2010.5姜志海,黃玉清,劉連鑫:單片機(jī)原理與應(yīng)用[M],北京,電子工業(yè)出版社,2013胡宴如:模擬電子技術(shù)[M],北京,高等教育出版社,2018范佳午,楊軍,張燦坤等:光明電阻響應(yīng)時間的研究實驗[J],物理實驗,2007年27期俞阿龍:傳感器原理及其應(yīng)用[M],南京:南京大學(xué)出版社,2010戴玉梅,戴玉潔:光傳感技術(shù)實驗研究[J],沈陽大學(xué)學(xué)報(自然科學(xué)版)2012年24期李慶亮.C語言程序設(shè)計實用教程[M],北京:機(jī)械工業(yè)出版社,2015邵立群:數(shù)字電子技術(shù)項目教程[J],北京:中國工信出版社集團(tuán),2017薛小鈴:單片機(jī)接口模塊應(yīng)用與開發(fā)實例詳解[M],北京北京航空大學(xué)出版社2010.5附件一元器件列表附錄二PCB原理圖附錄三程序#include"main.h"#include"lcd1602.h"#include"key.h"#include"adc.h"#include"dht11.h"#include"timer.h"#include"motor_bujin.h"/**********************************變量定義**********************************/ucharkey_num=0; //按鍵標(biāo)志位ucharflag_display=0; //顯示標(biāo)志位ucharflag_display_change=0; //切換顯示標(biāo)志位uinttime_num=0; //計時變量uintlight_value=0; //光照強(qiáng)度uintlight_min=30; //光照強(qiáng)度最小值uintwind_value=0; //風(fēng)速uintwind_max=10; //風(fēng)速最大值uinttemp_value=0; //溫度uinttemp_min=10; //溫度最小值uinthumi_value=0; //濕度uinthumi_max=60; //濕度最大值uinttime_value=0; //定時uinttime_all=0; //定時總時間ucharflag_motor=0; //電機(jī)標(biāo)志位ucharmotor_state=0; //電機(jī)狀態(tài)/**********************************函數(shù)聲明**********************************/voidDelay_function(uintx); //延時函數(shù)voidKey_function(void); //按鍵函數(shù)voidMonitor_function(void); //監(jiān)測函數(shù)voidDisplay_function(void); //顯示函數(shù)voidManage_function(void); //處理函數(shù)voidTime1_Init(void); //定時器1初使化函數(shù)/*********** 主函數(shù)*****/voidmain(){ Lcd1602_Init(); //LCD1602初始化 Delay_function(50); //延時50ms lcd1602_clean(); //清屏 Delay_function(50); //延時50ms DHT11_Init(); //DHT11初始化 Delay_function(50); //延時50ms Timer0_Init(); //定時器0初使化 Delay_function(50); //延時50ms while(1) { Key_function(); //按鍵函數(shù) Monitor_function(); //監(jiān)測函數(shù) Display_function(); //顯示函數(shù) Manage_function(); //處理函數(shù) Delay_function(10); //延時10ms time_num++; //計時變量+1 if(time_num>5000) { time_num=0; } }}/*********** 延時xms函數(shù)*****/voidDelay_function(uintx){ uintm,n; for(m=x;m>0;m--) for(n=110;n>0;n--);}/***********按鍵函數(shù)*****/voidKey_function(void){ key_num=Chiclet_Keyboard_Scan(0); //按鍵掃描 if(key_num!=0) //有按鍵按下 { switch(key_num) { case1: //按鍵1 flag_display++; //顯示標(biāo)志位+1 if(flag_display>5) //一共6個模式 flag_display=0; lcd1602_clean(); //清屏 break; case2: //按鍵2 switch(flag_display) //根據(jù)不同的顯示標(biāo)志位,改變不同的標(biāo)志位 { case0: //改變測量顯示界面 flag_display_change++; if(flag_display_change>2) flag_display_change=0; lcd1602_clean(); //清屏 break; case1: //改變溫度最小值,進(jìn)行+1 if(temp_min<99) temp_min++; break; case2: //改變濕度最大值,進(jìn)行+1 if(humi_max<99) humi_max++; break; case3: //改變光照最小值,進(jìn)行+1 if(light_min<99) light_min++; break; case4: //改變風(fēng)速最大值,進(jìn)行+1 if(wind_max<99) wind_max++; break; case5: //改變定時時間,進(jìn)行+1 if(time_value<24) { time_value++; time_all=time_value*60; } break; default: break; } break; case3: //按鍵3 switch(flag_display) //根據(jù)不同的顯示標(biāo)志位,改變不同的標(biāo)志位 { case0: //手動控制電機(jī)正轉(zhuǎn)、反轉(zhuǎn) flag_motor++; if(flag_motor>1) flag_motor=0; break; case1: //改變溫度最小值,進(jìn)行-1 if(temp_min>0) temp_min--; break; case2: //改變濕度最大值,進(jìn)行-1 if(humi_max>0) humi_max--; break; case3: //改變光照最小值,進(jìn)行-1 if(light_min>0) light_min--; break; case4: //改變風(fēng)速最大值,進(jìn)行-1 if(wind_max>0) wind_max--; break; case5: //改變定時時間,進(jìn)行-1 if(time_value>0) { time_value--; time_all=time_value*60; } break; default: break; } break; default: break; } }}/***********監(jiān)測函數(shù)*****/voidMonitor_function(void){ if(time_num%50==0) //500ms檢測一次 { wind_value=(40*((Adc0832_Get_Value(0)/256.0)*5))*10; //獲取風(fēng)速 light_value=(40*((Adc0832_Get_Value(1)/256.0)*5))*10; //獲取光照值 Dht11_Get_Temp_Humi_Value(&temp_value,&humi_value); //獲取溫濕度 }}/***********顯示函數(shù)*****/voidDisplay_function(void){ switch(flag_display) //根據(jù)不同的顯示標(biāo)志位,顯示不同的設(shè)置界面 { case0: //界面0 switch(flag_display_change) //根據(jù)切換顯示標(biāo)志位,顯示不同的測量界面 { case0: lcd1602_display_str(1,0,"Temp:"); //顯示溫度 lcd1602_display_temp(1,5,temp_value); lcd1602_display_str(2,0,"Humi:"); //顯示濕度 lcd1602_display_humi(2,5,humi_value); break; case1: lcd1602_display_str(1,0,"Light:"); //顯示光照強(qiáng)度 lcd1602_display_light(1,6,light_value); lcd1602_display_str(2,0,"Wind:"); //顯示風(fēng)速 lcd1602_display_wind(2,5,wind_value); break; case2: lcd1602_display_str(1,0,"Time:"); //顯示定時剩余時間 lcd1602_display_time(1,5,time_all); break; default: break; } break; case1: //設(shè)置界面1,設(shè)置溫度最小值 lcd1602_display_str(1,2,"SetTempMin"); if(time_num%20==0) { lcd1602_display_num(2,7,temp_min); } if(time_num%40==0) { lcd1602_display_str(2,7,""); } break; case2: //設(shè)置界面2,設(shè)置濕度最大值 lcd1602_display_str(1,2,"SetHumiMax"); if(time_num%20==0) { lcd1602_display_num(2,7,humi_max); } if(time_num%40==0) { lcd1602_display_str(2,7,""); } break; case3: //設(shè)置界面3,設(shè)置光照最小值 lcd1602_display_str(1,1,"SetLightMin"); if(time_num%20==0) { lcd1602_display_num(2,7,light_min); } if(time_num%40==0) { lcd1602_display_str(2,7,""); } break; case4: //設(shè)置界面4,設(shè)置風(fēng)速最大值 lcd1602_d

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論