智能澆花系統(tǒng)設(shè)計(jì)說(shuō)明書(shū)+51單片機(jī)+詳細(xì)C語(yǔ)言代碼_第1頁(yè)
智能澆花系統(tǒng)設(shè)計(jì)說(shuō)明書(shū)+51單片機(jī)+詳細(xì)C語(yǔ)言代碼_第2頁(yè)
智能澆花系統(tǒng)設(shè)計(jì)說(shuō)明書(shū)+51單片機(jī)+詳細(xì)C語(yǔ)言代碼_第3頁(yè)
智能澆花系統(tǒng)設(shè)計(jì)說(shuō)明書(shū)+51單片機(jī)+詳細(xì)C語(yǔ)言代碼_第4頁(yè)
智能澆花系統(tǒng)設(shè)計(jì)說(shuō)明書(shū)+51單片機(jī)+詳細(xì)C語(yǔ)言代碼_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

XXXX大學(xué)畢業(yè)設(shè)計(jì)論文題目:智能澆花控制系統(tǒng)學(xué)生:指導(dǎo)教師:專(zhuān)業(yè):電子信息工程〔電氣及其自動(dòng)化〕班級(jí):2013年5月畢業(yè)設(shè)計(jì)審閱評(píng)語(yǔ)指導(dǎo)教師評(píng)語(yǔ)該生在整個(gè)畢業(yè)設(shè)計(jì)過(guò)程中,態(tài)度端正,積極主動(dòng),能根本在每個(gè)階段完成相應(yīng)任務(wù),能按時(shí)上交論文,時(shí)間安排也十分合理。前期設(shè)計(jì)中出現(xiàn)的問(wèn)題及誤區(qū),老師指點(diǎn)后都細(xì)心更改,每次遇到阻礙都及時(shí)主動(dòng)與老師交流、溝通、討論論文出現(xiàn)的問(wèn)題。論文完成了任務(wù)書(shū)所規(guī)定的設(shè)計(jì)任務(wù),論文層次結(jié)構(gòu)安排科學(xué),語(yǔ)言表達(dá)流暢準(zhǔn)確,格式符合標(biāo)準(zhǔn)要求,到達(dá)預(yù)期結(jié)果,符合學(xué)士論文辯論的要求,同意該同學(xué)參加畢業(yè)辯論。是否同意辯論:同意辯論√不同意辯論□指導(dǎo)教師〔簽名〕職稱(chēng)2013年5月22日二、評(píng)閱人評(píng)語(yǔ)是否同意辯論:同意辯論□不同意辯論□評(píng)閱教師〔簽名〕職稱(chēng)年月日哈爾濱劍橋?qū)W院畢業(yè)設(shè)計(jì)辯論評(píng)語(yǔ)及成績(jī)?nèi)⑥q論委員會(huì)評(píng)語(yǔ)四、畢業(yè)設(shè)計(jì)成績(jī)簽字〔蓋章〕:五、辯論委員會(huì)主任單位:辯論委員會(huì)主任職稱(chēng):辯論委員會(huì)主任簽字:年月日畢業(yè)設(shè)計(jì)任務(wù)書(shū)題目名稱(chēng):智能澆花控制系統(tǒng)設(shè)計(jì)立題意義:隨著科學(xué)的不斷開(kāi)展和人們生活水平的不斷進(jìn)步,人們對(duì)于生活質(zhì)量的要求也越來(lái)越高,花草養(yǎng)殖成為了家庭生活中的一局部,人們養(yǎng)殖花草的目的大多是為了陶冶情操和提高室內(nèi)外的空氣質(zhì)量等等,但由于工作繁忙等原因,不能按時(shí)給花草澆水成為了花卉死亡的主要原因;因此設(shè)計(jì)一款定時(shí)澆花的系統(tǒng)便成為當(dāng)務(wù)之選。技術(shù)條件與要求:1.本產(chǎn)品實(shí)用性強(qiáng)。2.主要用于家庭和較小場(chǎng)所。3.本系統(tǒng)抗干擾能力強(qiáng),感應(yīng)靈敏、性?xún)r(jià)比擬高。任務(wù)內(nèi)容〔包括內(nèi)容、方案、時(shí)間安排、完成工作量與水平具體要求〕一、任務(wù)內(nèi)容:1.系統(tǒng)的總體設(shè)計(jì)方案。2.系統(tǒng)各局部硬件電路設(shè)計(jì)。3.系統(tǒng)各局部軟件電路設(shè)計(jì)。二、方案、時(shí)間安排:2012年11月26日~~2013年4月7日選題、撰寫(xiě)階段2013年4月8日~~5月12日中期檢查階段5月13日~~5月24日整理、辯論階段5月25日畢業(yè)論文〔設(shè)計(jì)〕辯論三、完成工作量與水平具體要求按照方案進(jìn)度、指導(dǎo)教師的要求完成預(yù)定的工作量、提高論文的設(shè)計(jì)水平。專(zhuān)業(yè)負(fù)責(zé)人意見(jiàn):簽名:年月日智能澆花控制系統(tǒng)設(shè)計(jì)摘要隨著科學(xué)的不斷開(kāi)展和人們生活水平的不斷進(jìn)步,人們對(duì)于生活質(zhì)量的要求也越來(lái)越高,花草養(yǎng)殖成為了家庭生活中的一局部,人們養(yǎng)殖花草的目的大多是為了陶冶情操和提高室內(nèi)外的空氣質(zhì)量等等,但由于工作繁忙等原因,不能按時(shí)給花草澆水成為了花卉死亡的主要原因。本文利用AT89C51單片機(jī)設(shè)計(jì)了一種自動(dòng)澆花控制系統(tǒng),此系統(tǒng)可為人們解決因工作等原因無(wú)法按時(shí)為花卉澆水的問(wèn)題,以便于花卉茁壯成長(zhǎng)。本設(shè)計(jì)采用匯編語(yǔ)言進(jìn)行編程,在LED液晶屏上實(shí)現(xiàn)小時(shí),分,秒的顯示;并利用單片機(jī)來(lái)實(shí)現(xiàn)計(jì)時(shí),定時(shí)功能,同時(shí)通過(guò)7個(gè)按鍵開(kāi)關(guān)和3個(gè)指示燈來(lái)實(shí)現(xiàn)參數(shù)設(shè)置和調(diào)節(jié)功能、澆花間隔時(shí)間的設(shè)定、澆水持續(xù)時(shí)間的設(shè)定、單片機(jī)對(duì)電磁閥的自動(dòng)控制。根據(jù)用戶(hù)設(shè)定的時(shí)間順利的完成澆花任務(wù)。關(guān)鍵詞:?jiǎn)纹瑱C(jī);控制;顯示;電磁閥IntelligentcontrolsystemforwateringtheflowersAbstractWiththecontinuousdevelopmentofscienceandthepeoplelifelevelofprogress,peoplefortherequirementsofthelifequalityismoreandmorerigorous,plantsbreedingbecomepartofthefamilylife.Thepurposesofpeoplebreedingplantsarefortheedifysentimentandimprovetheindoorandoutdoorairqualityandsoon.Becauseofthebusyjobsandotherfactors,theinabilitytowatertheflowersandplantsbecomethemaincauseofdeath.Inthispaper,AT89C51single-chipmicrocomputerdesignedakindofautomaticwateringtheflowerscontrolsystem.Thesystemcanworkforpeoplewhocannotwatertheflowersontime,sothattheflowerscangrowstrengthandhealthy.Thisdesignusestheassemblylanguagesprogramming,realizinghours,points,seconddisplayonLED;Andusingsinglechipcomputertorealizethetiming,timingfunction,andatthesametimethroughsevenbuttonswitchesandthreeindicatortoachieveparametersettingandadjustmentfunction,thewatertheflowersoftheintervaltimeset,thedurationofwaterwiththechipset,solenoidvalvetobeautomaticcontrol.Accordingtouserssettingtimedonesmoothlythetaskofwateringtheflowers.Keywords:MCS;control;display;solenoidvalve目錄摘要IAbstractII1.緒論12.系統(tǒng)設(shè)計(jì)方案32.1系統(tǒng)工作原理32.2系統(tǒng)方框圖設(shè)計(jì)32.3系統(tǒng)結(jié)構(gòu)32.3.1單片機(jī)模塊42.3.2顯示模塊42.3.3電磁閥模塊42.3.4按鍵模塊42.3.5指示燈模塊42.3.6復(fù)位電路模塊42.4系統(tǒng)人機(jī)界面設(shè)計(jì)52.5系統(tǒng)操作步驟63.關(guān)鍵器件的選型73.1單片機(jī)的選擇73.1.1AT89C51簡(jiǎn)介73.1.2AT89C51的主要性能73.1.3AT89C51的管腳說(shuō)明83.2繼電器的選擇103.3電磁閥的選擇103.4顯示器的選擇114.硬件電路設(shè)計(jì)124.1單片機(jī)最小系統(tǒng)124.1.1晶振電路設(shè)計(jì)124.1.2復(fù)位電路124.1.3單片機(jī)最小系統(tǒng)電路設(shè)計(jì)134.2按鍵電路設(shè)計(jì)144.3數(shù)碼管顯示電路設(shè)計(jì)154.4電磁閥電路設(shè)計(jì)164.5整體電路設(shè)計(jì)175.系統(tǒng)軟件設(shè)計(jì)185.1軟件架構(gòu)設(shè)計(jì)185.2主程序185.2初始化模塊195.3按鍵判別與處理模塊215.4按鍵消抖方法225.5數(shù)碼顯示模塊235.6工作時(shí)間計(jì)算模塊25結(jié)論26致謝27參考文獻(xiàn)28附錄29智能澆花控制系統(tǒng)設(shè)計(jì)1.緒論近年來(lái),人們的生活水平有了大幅度的提高,然后如何真正提高生活質(zhì)量,如何使生活產(chǎn)生質(zhì)的飛躍成為了大多數(shù)人們思考的問(wèn)題。種植花草是中國(guó)人千百年來(lái)的維持不變的喜好,故多數(shù)人選擇種植花草來(lái)陶冶情操,同時(shí),也把它作為一項(xiàng)業(yè)余的消遣活動(dòng),但由于人們生活節(jié)奏快和經(jīng)常出差等緣故,不能按時(shí)為花草澆水成為了花草死亡的主要原因。為了解決按時(shí)為花草澆水的問(wèn)題,人們會(huì)采取在中存?zhèn)渫浺约白龈鞣N備忘錄等方法,但這些方法始終存在很多缺陷,市場(chǎng)上的智能澆花系統(tǒng)儀器功能繁多但是價(jià)格過(guò)于昂貴,而且對(duì)于普通家庭而言,過(guò)于復(fù)雜的應(yīng)用和多功能是不必要的。智能澆花系統(tǒng)的出現(xiàn)正可以解決這一問(wèn)題,該系統(tǒng)其主要執(zhí)行裝置是一個(gè)電磁閥門(mén),其一端連接水管,另外一端連接外置的水管作為澆水口,澆水的水量主要由單片機(jī)控制。設(shè)備主要是通過(guò)控制澆水的時(shí)間間隔和澆水的持續(xù)時(shí)間來(lái)控制澆水量的。操作方便簡(jiǎn)便,這樣即實(shí)現(xiàn)了家庭生活的現(xiàn)代化又保證了植物的正常生長(zhǎng)。近年來(lái),以電子技術(shù)為代表的新技術(shù)促進(jìn)了電子行業(yè)的飛速增長(zhǎng),也極大地推動(dòng)了智能家電和智能家用設(shè)備的快速開(kāi)展。國(guó)外的智能家用設(shè)備市場(chǎng)儼然已經(jīng)做大做強(qiáng),鑒于中國(guó)在全球制造鏈和設(shè)計(jì)鏈的重要地位,使得這里成為全球各大生產(chǎn)智能家用設(shè)備廠商逐鹿的大戰(zhàn)場(chǎng),同時(shí),也帶動(dòng)了中國(guó)外鄉(xiāng)智能家用設(shè)備儀器研發(fā)與測(cè)試技術(shù)應(yīng)用的迅速開(kāi)展。智能澆花控制系統(tǒng)自然也包括在其中,近些年來(lái),國(guó)內(nèi)外出現(xiàn)了許多種智能澆花控制系統(tǒng),其功能與控制原理也存在著許多的不同,但根本目的均為方便人們的日常生活和保證花草的正常生長(zhǎng)。眾所周知,在二十世紀(jì),人類(lèi)跨越了三個(gè)“電”的時(shí)代,即電氣時(shí)代、電子時(shí)代和電腦時(shí)代。但這種電腦,通常指?jìng)€(gè)人計(jì)算機(jī),也就是我們平時(shí)所說(shuō)的PC機(jī)。它由主機(jī)、顯示器、鍵盤(pán)等組成。除此之外還有一類(lèi)計(jì)算機(jī),大多數(shù)人很不熟悉。這種計(jì)算機(jī)就是把智能賦予給各種機(jī)械的單片機(jī)〔微控制器〕。這種計(jì)算機(jī)最小的系統(tǒng)只用一片集成電路,就能進(jìn)行簡(jiǎn)單運(yùn)算和控制。因?yàn)槠潴w積小,通常都被放在被控機(jī)械的“肚子”里。在整個(gè)裝置中,他的作用有如人類(lèi)頭腦,假設(shè)它出了毛病,整個(gè)裝置也就癱瘓了。現(xiàn)如今,這種單片機(jī)的使用領(lǐng)域已開(kāi)展的十分廣泛,如智能儀表、導(dǎo)航系統(tǒng)、實(shí)時(shí)工控、通訊設(shè)備、家用電器等。各種家用產(chǎn)品用上了單片機(jī)以后,便能起到令產(chǎn)品換代升級(jí)的成效,通常都會(huì)在產(chǎn)品名稱(chēng)前加上形容詞——“智能型”,例如智能型洗衣機(jī)等等。而花卉養(yǎng)殖作為大多數(shù)人生活中的一局部,卻常常因?yàn)槿藗児ぷ鞯仍虮缓雎?,智能澆花控制系統(tǒng)可為人們解決這一問(wèn)題,與此同時(shí),智能澆花控制系統(tǒng)假設(shè)能走進(jìn)家庭,也是人們生活進(jìn)入智能化的標(biāo)志之一。2.系統(tǒng)設(shè)計(jì)方案2.1系統(tǒng)工作原理智能澆花控制系統(tǒng)的設(shè)計(jì),其主要執(zhí)行裝置是一個(gè)電磁閥門(mén),其一端連接水管,另外一端連接外置的水管作為澆水口,澆水的水量主要由單片機(jī)控制。設(shè)備主要是通過(guò)控制澆水的時(shí)間間隔和澆水的持續(xù)時(shí)間來(lái)控制澆水量的[1]。2.2系統(tǒng)方框圖設(shè)計(jì)系統(tǒng)主要是由單片機(jī)、電源、按鍵、顯示、指示燈、復(fù)位電路、電磁閥模塊等組成。方框圖如圖2-1所示:復(fù)位電路模塊電磁閥模塊復(fù)位電路模塊電磁閥模塊顯示模塊指示燈模塊單片機(jī)模塊按鍵模塊電源模塊圖2-1系統(tǒng)方框圖2.3系統(tǒng)結(jié)構(gòu)整個(gè)自動(dòng)澆花設(shè)備的結(jié)構(gòu)可以分為5大局部:中央處理單元(CPU),LED顯示局部,電磁閥局部,按鍵局部,指示燈局部等。2.3.1單片機(jī)模塊單片機(jī)模塊對(duì)整個(gè)系統(tǒng)進(jìn)行控制,實(shí)現(xiàn)以下功能:控制顯示模塊顯示工作參數(shù);根據(jù)按鍵的輸入做出正確的計(jì)算,并傳輸?shù)斤@示器件上實(shí)現(xiàn)時(shí)間的調(diào)整設(shè)置;控制LED的點(diǎn)亮和熄滅;實(shí)現(xiàn)電磁閥的控制。2.3.2顯示模塊數(shù)碼顯示模塊能夠?qū)⑿枰臅r(shí)間參數(shù)顯示出來(lái),提供了系統(tǒng)和操作者的交流窗口,是人機(jī)界面的重要組成局部之一。2.3.3電磁閥模塊電磁閥是本設(shè)備的執(zhí)行設(shè)備,系統(tǒng)通過(guò)電磁閥控制水的流通和截止,實(shí)現(xiàn)了電能到機(jī)械能的轉(zhuǎn)換。2.3.4按鍵模塊按鍵是人機(jī)界面的另一個(gè)重要組成局部,它是最主要的輸入設(shè)備。用戶(hù)通過(guò)按鍵將自己的要求告知單片機(jī),單片機(jī)根據(jù)用戶(hù)的設(shè)置進(jìn)行相應(yīng)的操作。2.3.5指示燈模塊指示燈是數(shù)碼顯示模塊以外的另一輸出設(shè)備,在數(shù)碼管的根底上起到輔助作用。2.3.6復(fù)位電路模塊復(fù)位模塊主要功能為在上電的一瞬間,電壓不是直接跳變到單片機(jī)可工作的電壓范圍。并且在外部輸入電壓較低的時(shí)候〔電壓在臨界范圍〕,這個(gè)時(shí)候單片機(jī)可能工作也可能不工作,故而會(huì)引起芯片內(nèi)程序道德無(wú)序執(zhí)行,復(fù)位電路需要確保在上電的時(shí)候暫時(shí)不讓單片機(jī)立刻進(jìn)入工作狀態(tài),即上電延時(shí)狀態(tài)。2.4系統(tǒng)人機(jī)界面設(shè)計(jì)操作界面如圖2-2所示,主要由2位數(shù)碼管、7個(gè)按鍵和3個(gè)發(fā)光二級(jí)管組成。圖中各局部介紹如下:數(shù)碼管:用于顯示工作持續(xù)時(shí)間和時(shí)間間隔,配合按鍵完成各項(xiàng)參數(shù)的設(shè)置。LED1:電源指示燈,當(dāng)通電以后就亮起,說(shuō)明系統(tǒng)已經(jīng)開(kāi)始工作。LED2和LED3:參數(shù)指示燈。當(dāng)LED2亮起以后,說(shuō)明目前數(shù)碼管上顯示的是工作間隔時(shí)間,可以通過(guò)按鍵對(duì)其設(shè)置。當(dāng)LED3亮起時(shí),說(shuō)明目前顯示的是工作持續(xù)時(shí)間。ON/OFF:電源開(kāi)關(guān),按下后電源指示燈LED1點(diǎn)亮,系統(tǒng)開(kāi)始工作。RESET:系統(tǒng)復(fù)位。當(dāng)遇到意外情況系統(tǒng)出現(xiàn)死機(jī),可通過(guò)此按鍵恢復(fù)正常工作。SWITCH:用于切換工作間隔時(shí)間和工作持續(xù)時(shí)間,按下以后LED2和LED3將依次點(diǎn)亮。UP和DOWN:增加和減少數(shù)碼管所顯示數(shù)字的值。OK:確定鍵,當(dāng)用戶(hù)使用UP和DOWN鍵設(shè)置好時(shí)間以后,按下OK鍵進(jìn)行保存和應(yīng)用。CLEAR:清零鍵,可通過(guò)此按鍵將當(dāng)前數(shù)碼管示數(shù)快速清零,重新進(jìn)行設(shè)置。ON/OFFON/OFFRESETOKDOWNUPCLEARSWITCHLED1LED2LED3圖2-2操作人機(jī)界面2.5系統(tǒng)操作步驟將入水管連接到自來(lái)水龍頭和電磁閥之間,用出水管連接電磁閥和花盆,這個(gè)過(guò)程中注意水管的密封性,也不要讓水濺到電路板上。將控制系統(tǒng)通電,按下電源開(kāi)關(guān)ON/OFF,LED1亮,表示一切正常。按下SWITCH鍵,LED2點(diǎn)亮,通過(guò)UP和DOWN設(shè)置工作間隔時(shí)間。按下CLEAR可清零。按下SWITCH鍵,LED2熄滅,LED3點(diǎn)亮,通過(guò)UP和DOWN設(shè)置工作持續(xù)時(shí)間,按下CLEAR可清零。按下OK鍵,LED3熄滅,系統(tǒng)按照設(shè)定的參數(shù)開(kāi)始工作。3.關(guān)鍵器件的選型3.1單片機(jī)的選擇AT89C51單片機(jī)是Atmel公司推出的一款產(chǎn)品,一般小芯片的價(jià)格都比擬低,同樣AT89C51作為一款小芯片產(chǎn)品其價(jià)格相對(duì)而言較為廉價(jià),并且其與MCS-51系列兼容行很好,所以本系統(tǒng)決定采用AT89C51作為芯片[2]。3.1.1AT89C51簡(jiǎn)介AT89C51是一種帶4K字節(jié)FLASH存儲(chǔ)器〔FPEROM—FlashProgrammableandErasableReadOnlyMemory〕的低電壓、高性能CMOS8位微處理器,俗稱(chēng)單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡(jiǎn)版本。AT89C5x單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案[3]。3.1.2AT89C51的主要性能(1)與MCS-51兼容;(2)4K字節(jié)可編程FLASH存儲(chǔ)器;(3)壽命:1000寫(xiě)/擦循環(huán);(4)數(shù)據(jù)保存時(shí)間:10年;(5)全靜態(tài)工作:0Hz-24MHz;(6)三級(jí)程序存儲(chǔ)器鎖定;(7)128×8位內(nèi)部RAM;(8)32可編程I/O線(xiàn);(9)兩個(gè)16位定時(shí)器/計(jì)數(shù)器;(10)5個(gè)中斷源;(11)可編程串行通道;(12)低功耗的閑置和掉電模式;(13)片內(nèi)振蕩器和時(shí)鐘電路。3.1.3AT89C51的管腳說(shuō)明AT89C51的引腳圖如圖3-1所示。圖3-1AT89C51的引腳圖VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P0口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須接上拉電阻。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為低八位地址接收。P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能存放器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)[4]。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流〔ILL〕,這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:表3-2P3管腳第二功能表P3口管腳備選功能P3.0RXD〔串行輸入口〕P3.1TXD〔串行輸出口〕P3.2INT0〔外部中斷0〕P3.3INT1〔外部中斷1〕P3.4T0〔計(jì)時(shí)器0外部輸入〕P3.5T1〔計(jì)時(shí)器1外部輸入〕P3.6/WR〔外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通〕P3.7/RD〔外部數(shù)據(jù)存儲(chǔ)器讀選通〕RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),那么在此期間外部程序存儲(chǔ)器〔0000H-FFFFH〕,不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源〔VPP〕。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來(lái)自反向振蕩器的輸出。3.2繼電器的選擇繼電器是一種電控制器件。它具有控制系統(tǒng)〔又稱(chēng)輸入回路〕和被控制系統(tǒng)〔又稱(chēng)輸出回路〕之間的互動(dòng)關(guān)系。通常應(yīng)用于自動(dòng)化的控制電路中,它實(shí)際上是用小電流去控制大電流運(yùn)作的一種“自動(dòng)開(kāi)關(guān)”。故在電路中起著自動(dòng)調(diào)節(jié)、平安保護(hù)、轉(zhuǎn)換電路等作用。本次設(shè)計(jì)過(guò)程中需要一個(gè)繼電器來(lái)控制電磁閥的工作。由于需要工作電壓在5V左右。所以選擇了型號(hào)為JZC-36F的繼電器,其工作電壓在4V~45V之間[5]。3.3電磁閥的選擇閥門(mén)是在流體系統(tǒng)中,用來(lái)控制流體的方向、壓力、流量的裝置。閥門(mén)是使配管和設(shè)備內(nèi)的介質(zhì)〔液體、氣體、粉末〕流動(dòng)或停止并能控制其流量的裝置。閥門(mén)是管路流體輸送系統(tǒng)中控制部件,它是用來(lái)改變通路斷面和介質(zhì)流動(dòng)方向,具有導(dǎo)流、截止、節(jié)流、止回、分流或溢流卸壓等功能。用于流體控制的閥門(mén),從最簡(jiǎn)單的截止閥到極為復(fù)雜的自控系統(tǒng)中所用的各種閥門(mén),其品種和規(guī)格相當(dāng)繁多。由于本設(shè)備采用單片機(jī)控制,并且電磁閥是由開(kāi)關(guān)信號(hào)控制的,與單片機(jī)控制電路連接十分的方便,所以決定采用電磁閥作為閥門(mén)[6]。電磁閥從原理上分為三大類(lèi):直動(dòng)式電磁閥:原理:通電時(shí),電磁線(xiàn)圈產(chǎn)生電磁力把關(guān)閉件從閥座上提起,閥門(mén)翻開(kāi);斷電時(shí),電磁力消失,彈簧把關(guān)閉件壓在閥座上,閥門(mén)關(guān)閉。特點(diǎn):在真空、負(fù)壓、零壓時(shí)能正常工作,但通徑一般不超過(guò)25mm。分步直動(dòng)式電磁閥:原理:它是一種直動(dòng)和先導(dǎo)式相結(jié)合的原理,當(dāng)入口與出口沒(méi)有壓差時(shí),通電后,電磁力直接把先導(dǎo)小閥和主閥關(guān)閉件依次向上提起,閥門(mén)翻開(kāi)。當(dāng)入口與出口到達(dá)啟動(dòng)壓差時(shí),通電后,電磁力先導(dǎo)小閥,主閥下腔壓力上升,上腔壓力下降,從而利用壓差把主閥向上推開(kāi);斷電時(shí),先導(dǎo)閥利用彈簧力或介質(zhì)壓力推動(dòng)關(guān)閉件,向下移動(dòng),使閥門(mén)關(guān)閉。特點(diǎn):在零壓差或真空、高壓時(shí)亦可動(dòng)作,但功率較大,要求必須水平安裝。先導(dǎo)式電磁閥:原理:通電時(shí),電磁力把先導(dǎo)孔翻開(kāi),上腔室壓力迅速下降,在關(guān)閉件周?chē)纬缮系拖赂叩膲翰?,流體壓力推動(dòng)關(guān)閉件向上移動(dòng),閥門(mén)翻開(kāi);斷電時(shí),彈簧力把先導(dǎo)孔關(guān)閉,入口壓力通過(guò)旁通孔迅速腔室在關(guān)閥件周?chē)纬上碌蜕细叩膲翰?,流體壓力推動(dòng)關(guān)閉件向下移動(dòng),關(guān)閉閥門(mén)。特點(diǎn):流體壓力范圍上限較高,可任意安裝〔需定制〕但必須滿(mǎn)足流體壓差條件。由于直動(dòng)式電磁閥結(jié)構(gòu)較為簡(jiǎn)單,動(dòng)作可靠,而且設(shè)備需要在斷電條件下鐵芯始終保持在關(guān)閉狀態(tài),所以選用常閉型的直動(dòng)式電磁閥。具體為YCSM31系列的二位二通直動(dòng)式電磁閥〔常閉型〕。3.4顯示器的選擇在顯示器的選擇上,雖然LED數(shù)碼管消耗電力比液晶顯示器多一點(diǎn),但是LED數(shù)碼管顯示更加清晰,更加適合在白天等強(qiáng)光條件下顯示。液晶顯示極其省電,但是使用有溫度范圍限制,且因是反光式的,在外界光線(xiàn)很明亮的情況下很容易看不清楚。另外,LED數(shù)碼管的價(jià)格與液晶顯示器相比擬為低廉,故本次設(shè)計(jì)采用LED數(shù)碼管[7]。4.硬件電路設(shè)計(jì)4.1單片機(jī)最小系統(tǒng)4.1.1晶振電路設(shè)計(jì)AT89C51單片機(jī)芯片內(nèi)部設(shè)有一個(gè)反相放大器所構(gòu)成的振蕩器,XTAL1和XTAL2分別為振蕩電路的輸入端和輸出端。在XTAL1和XTAL2引腳上外接定時(shí)元件,內(nèi)部振蕩電路就產(chǎn)生自激振蕩。定時(shí)元件常常是用石英晶體和電容組成的并聯(lián)諧振回路。系統(tǒng)選擇了12MHz的晶振片,兩個(gè)30pF的電容C7和C8。晶振電路如圖4-1所示。圖4-1晶振電路4.1.2復(fù)位電路本設(shè)計(jì)采用的按鍵復(fù)位電路,當(dāng)要系統(tǒng)自動(dòng)復(fù)位時(shí),只需要按住S7按鍵,此時(shí)電源Vcc經(jīng)過(guò)電阻R1、R2分壓,并且在RST端產(chǎn)生一個(gè)復(fù)位的高電平。同樣,只要保證RST端保持高電壓的時(shí)間大于兩個(gè)機(jī)器周期時(shí),系統(tǒng)自動(dòng)能實(shí)現(xiàn)正常復(fù)位。復(fù)位電路如圖4-2所示:圖4-2AT89C51單片機(jī)的復(fù)位電路4.1.3單片機(jī)最小系統(tǒng)電路設(shè)計(jì)單片機(jī)最小系統(tǒng)設(shè)計(jì)電路如圖4-3所示:圖4-3單片機(jī)最小系統(tǒng)如下圖,AT89C5單片機(jī)的RST引腳連接復(fù)位電路,P2.7引腳連接電磁閥電路,P1.0~P1.7引腳連接按鍵電路,XTAL1和XTAL2引腳連接晶振電路,P2.0和P2.1引腳連接指示燈電路,P2.5~P2.7引腳連接放大電路那么與P0.0~P0.7引腳一起控制LED顯示電路[8]。4.2按鍵電路設(shè)計(jì)系統(tǒng)采用非編碼鍵盤(pán),按鍵電路主要由5個(gè)按鍵S1~S5組成,采用獨(dú)立式的按鍵形式。各按鍵的功能見(jiàn)表4-4:表4-4按鍵功能對(duì)照表按鍵編號(hào)功能連接端口S1SWITCHP1.1S2UPP1.2S3DOWNP1.3S4CLEARP1.4S5OKP1.5按鍵電路如圖4-5所示,按照?qǐng)D中的電路連接方法,判斷是否有鍵按下的方法是:查詢(xún)每一根接按鍵的I/O口線(xiàn)的輸入電平,如果是低電平那么說(shuō)明這個(gè)接口線(xiàn)連接的按鍵處于按下?tīng)顟B(tài)。相反,假設(shè)為高電平那么說(shuō)明按鍵處于非按下?tīng)顟B(tài)。圖4-5按鍵電路4.3數(shù)碼管顯示電路設(shè)計(jì)系統(tǒng)采用兩個(gè)七段發(fā)光數(shù)碼顯示器HS-3461BS2,HS-3461BS2它是共陽(yáng)極的數(shù)碼顯示器。處于工作狀態(tài)的數(shù)碼管,其顯示情況由單片機(jī)的P0.0~P0.6七個(gè)接線(xiàn)口決定,其七個(gè)口分別連接著數(shù)碼管的七個(gè)筆畫(huà)。例如要在數(shù)碼管DS1中顯示1,而數(shù)碼管DS2處于非工作狀態(tài),那么需要將P2.6接線(xiàn)口置為1,P2.5接線(xiàn)口置為0,并且使P0.1和P0.2接線(xiàn)口置為1,而P0.0,P0.3~P0.6接線(xiàn)口置為0。字形段碼表如表4-6所示:表4-6數(shù)碼管段碼表顯示字符共陰極字型碼五班03FHC0H106HF9H25BHA4H34FHB0H466H99H56DH92H67DH82H707HF8H87FH80H96FH90H根據(jù)上面的7段字形碼表可以進(jìn)行編碼,從而控制數(shù)碼管的顯示。LED顯示電路如圖4-7所示圖4-7數(shù)碼管顯示電路4.4電磁閥電路設(shè)計(jì)如下列圖所示Q3為一個(gè)PNP三極管,D1為普通二極管,K1為JZC-36F繼電器,M電動(dòng)機(jī)符號(hào)來(lái)表示電磁閥。在繼電器失電的狀態(tài)下,動(dòng)合觸點(diǎn)斷開(kāi),動(dòng)斷觸點(diǎn)閉合,當(dāng)繼電器得電后,動(dòng)合觸點(diǎn)閉合,動(dòng)斷觸點(diǎn)斷開(kāi),利用繼電器的觸電開(kāi)關(guān)作用可以控制設(shè)備或者傳送邏輯電平信號(hào)。動(dòng)合觸點(diǎn)是指繼電器(或功能電器)中有預(yù)定鼓勵(lì)時(shí)閉合,無(wú)鼓勵(lì)時(shí)斷開(kāi)的觸點(diǎn),而動(dòng)斷觸點(diǎn)那么是繼電器(或功能電器)中有規(guī)定的鼓勵(lì)時(shí)斷開(kāi),無(wú)規(guī)定的鼓勵(lì)時(shí)閉合的觸點(diǎn)。在本次系統(tǒng)設(shè)計(jì)中選用了動(dòng)合觸電開(kāi)關(guān),使繼電器在失電狀態(tài)下保持?jǐn)嚅_(kāi)的狀態(tài),然而在得電的狀態(tài)下保持閉合狀態(tài)。即當(dāng)Q3基極得到一個(gè)低電平那么繼電器開(kāi)關(guān)立即閉合,在處于高電平時(shí)繼電器開(kāi)關(guān)保持?jǐn)嚅_(kāi)狀態(tài)[9]。當(dāng)繼電器的開(kāi)關(guān)閉合時(shí),電磁閥那么處于一個(gè)通路的狀態(tài)下,進(jìn)而電磁閥開(kāi)始工作,系統(tǒng)設(shè)備開(kāi)始澆水。相反,當(dāng)繼電器的開(kāi)關(guān)斷開(kāi)時(shí),電磁閥處于一個(gè)斷路的狀態(tài)下,那么電磁閥不工作,從而系統(tǒng)設(shè)備也不工作。電磁閥電路如圖4-8所示。圖4-8電磁閥電路4.5整體電路設(shè)計(jì)總電路主要由:晶振電路,復(fù)位電路,按鍵設(shè)置電路,LED顯示電路,電磁閥電路,以及電源電路等幾個(gè)局部。通過(guò)這幾個(gè)分電路的分工合作,能夠使得系統(tǒng)具有顯示功能,并且具備鍵盤(pán)調(diào)整功能,同時(shí)能夠?qū)﹄姶砰y進(jìn)行有效的控制。從而使設(shè)備順利的進(jìn)行工作。整體電路圖見(jiàn)附錄1。5.系統(tǒng)軟件設(shè)計(jì)5.1軟件架構(gòu)設(shè)計(jì)在編寫(xiě)程序代碼之前,必須先對(duì)系統(tǒng)通盤(pán)考慮,事先設(shè)計(jì)好系統(tǒng)的軟件架構(gòu)。軟件架構(gòu)是指在一定的設(shè)計(jì)原那么根底上,從不同角度對(duì)組成系統(tǒng)的各局部進(jìn)行搭配和安排,形成系統(tǒng)的多個(gè)結(jié)構(gòu)而組成架構(gòu),它包括該系統(tǒng)的各個(gè)組件,組件的外部可見(jiàn)屬性及組件之間的相互關(guān)系。對(duì)本系統(tǒng)而言,就是要設(shè)計(jì)好每一個(gè)功能最合理的實(shí)現(xiàn)方法,不要等到代碼寫(xiě)到一半才發(fā)現(xiàn)某個(gè)功能難以實(shí)現(xiàn),導(dǎo)致全部重寫(xiě)或是迫不得已采用有隱患的的實(shí)現(xiàn)方法。一般而言,軟件架構(gòu)設(shè)計(jì)要到達(dá)如下的目標(biāo):可靠性〔Reliable〕、平安性〔Secure〕、可擴(kuò)展性〔SCAlable〕、可定制化〔CuSTomizable〕、可擴(kuò)展性〔Extensible〕和可維護(hù)性〔MAIntainable〕等[10]。在本系統(tǒng)中,主要的局部有按鍵處理、數(shù)碼管的動(dòng)態(tài)顯示和工作時(shí)間的計(jì)算。這三個(gè)任務(wù)都是必須連續(xù)工作的。如果按鍵處理相關(guān)程序暫停運(yùn)行,用戶(hù)按下按鍵時(shí)就沒(méi)有反響;如果數(shù)碼管相關(guān)的程序暫停運(yùn)行,顯示的數(shù)字就會(huì)出現(xiàn)異常。為了實(shí)現(xiàn)系統(tǒng)軟件架構(gòu)要求的目標(biāo)〔主要是可靠性、可擴(kuò)展性和可維護(hù)性〕,采用了這樣的軟件結(jié)構(gòu):在主程序中讀取按鍵輸入以及進(jìn)行相應(yīng)按鍵的處理;用定時(shí)器TIMER0定時(shí)出發(fā)中斷,在定時(shí)器的終端效勞程序中進(jìn)行數(shù)碼管的動(dòng)態(tài)掃描顯示;另一個(gè)定時(shí)器TIMER1用來(lái)計(jì)算工作間隔時(shí)間和工作持續(xù)時(shí)間。5.1.1主程序主程序指的是單片機(jī)上電以后就開(kāi)始運(yùn)行的程序,與中斷效勞程序相區(qū)分。主程序進(jìn)行了兩個(gè)操作,首先對(duì)系統(tǒng)進(jìn)行初始化設(shè)置,然后進(jìn)入一個(gè)循環(huán)結(jié)構(gòu),掃描按鍵是否被按下,當(dāng)有鍵按下以后就執(zhí)行相應(yīng)的按鍵處理程序[11]。流程圖見(jiàn)圖5-1。單片機(jī)復(fù)位以后〔無(wú)論上電復(fù)位還是按鍵復(fù)位〕將從程序存儲(chǔ)器的0000H地址開(kāi)始運(yùn)行程序。在這里必須寫(xiě)一條跳轉(zhuǎn)指令,引導(dǎo)程序跳轉(zhuǎn)到主程序的起始地址。為了使程序更清晰,提高可讀性,采用了模塊化的思想來(lái)指導(dǎo)程序的編寫(xiě)。也就是將各功能封裝成子程序,在使用時(shí)直接調(diào)用。在主程序中調(diào)用了兩個(gè)子程序,分別是初始化子程序和按鍵判別與處理子程序,在接下來(lái)的幾節(jié)中將會(huì)依次介紹。圖5-SEQ圖4_-\*ARABIC圖5-SEQ圖4_-\*ARABIC1主程序流程圖程序開(kāi)始初始化按鍵判別與處理程序結(jié)束5.2初始化模塊在本系統(tǒng)中,初始化的操作要實(shí)現(xiàn)兩個(gè)目標(biāo),一是對(duì)單片機(jī)本身的特殊功能存放器〔ISR〕進(jìn)行賦值,是單片機(jī)內(nèi)部集成的各功能正常工作,比方定時(shí)器;二是對(duì)單片機(jī)外圍的輸出設(shè)備的狀態(tài)進(jìn)行設(shè)置,防止出現(xiàn)不希望的輸出,比方電磁閥控制的水管。單片機(jī)內(nèi)部的設(shè)置主要集中在定時(shí)器相關(guān)的存放器。將定時(shí)器0設(shè)為10ms溢出一次,用于數(shù)碼管的動(dòng)態(tài)顯示;定時(shí)器1也設(shè)為10ms溢出一次,通過(guò)軟件計(jì)100個(gè)數(shù)實(shí)現(xiàn)1秒的定時(shí)時(shí)間[12]。外部設(shè)備方面,電磁閥驅(qū)動(dòng)端口P2.7需要設(shè)為高電平,讓電磁閥不通電,保持關(guān)閉狀態(tài);LED2驅(qū)動(dòng)端口P2.0設(shè)為高電平,讓其點(diǎn)亮;LED3驅(qū)動(dòng)端口P2.1要設(shè)為低電平,讓它不亮;數(shù)碼管段碼選擇端口P0設(shè)為0C0H,讓其顯示“00”,稍后將由定時(shí)器0中斷控制它顯示正確的數(shù)字;按鍵輸入端口P1.1~P1.2均設(shè)為高電平,否那么將無(wú)法正確讀取按鍵狀態(tài)。初始化子程序見(jiàn)附錄二。初始化子程序流程圖見(jiàn)5-2。圖5-2初始化子程序流程圖程序開(kāi)始配置定時(shí)器0存放器圖5-2初始化子程序流程圖程序開(kāi)始配置定時(shí)器0存放器配置定時(shí)器1存放器輸入端口設(shè)為高電平設(shè)置LED2亮LED3滅數(shù)碼管顯示“00”設(shè)置電磁閥關(guān)閉程序結(jié)束5.3按鍵判別與處理模塊P1.1=0?P1.1=0?P1.2=0?P1.3=0?P1.5=0?P1.4=0?程序開(kāi)始讀取P1消抖處理程序結(jié)束切換顯示當(dāng)前數(shù)加1當(dāng)前數(shù)減1當(dāng)前數(shù)=0保存數(shù)值YYYYYNNNNN圖5-3按鍵判別處理子程序流程圖圖5-3按鍵判別處理子程序流程圖上圖5-3按鍵判別處理子程序流程圖在這個(gè)子程序內(nèi),首先讀取P1口的輸入狀態(tài),經(jīng)過(guò)消抖處理以后依次判斷P1.1~P1.5的電平是否由1變?yōu)?,哪一位變?yōu)?了,就說(shuō)明其對(duì)應(yīng)的按鍵已經(jīng)被按下,可以跳轉(zhuǎn)到相應(yīng)的按鍵處理程序。按鍵具體的操作連鎖關(guān)系如下[12]:1.當(dāng)指示燈LED2亮,數(shù)碼管1選中時(shí),經(jīng)過(guò)“UP”,“DOWN”調(diào)節(jié)按鍵調(diào)節(jié)過(guò)的顯示數(shù)字存儲(chǔ)與(41)H,其相應(yīng)的P0值存儲(chǔ)與〔40〕H。2.當(dāng)指示燈LED2亮起,數(shù)碼管2選中時(shí),經(jīng)過(guò)“UP”,“DOWN”調(diào)節(jié)按鍵調(diào)節(jié)過(guò)的顯示數(shù)字存儲(chǔ)與(61)H,其相應(yīng)的P0值存儲(chǔ)與〔61〕H。3.當(dāng)指示燈LED3亮起,數(shù)碼管1選中時(shí),經(jīng)過(guò)“UP”,“DOWN”調(diào)節(jié)按鍵調(diào)節(jié)過(guò)的顯示數(shù)字存儲(chǔ)與(51)H,其相應(yīng)的P0值存儲(chǔ)與〔51〕H。4.當(dāng)指示燈LED3亮起,數(shù)碼管2選中時(shí),經(jīng)過(guò)“UP”,“DOWN”調(diào)節(jié)按鍵調(diào)節(jié)過(guò)的顯示數(shù)字存儲(chǔ)與(71)H,其相應(yīng)的P0值存儲(chǔ)與〔71〕H。5.4按鍵消抖方法為了確保CPU對(duì)一次按鍵動(dòng)作只確定一次,系統(tǒng)采用軟件消除抖動(dòng)的方法。具體為:假設(shè)CPU檢測(cè)到有鍵按下時(shí),先執(zhí)行一段延時(shí)程序后再檢測(cè)此按鍵,假設(shè)仍為按下?tīng)顟B(tài),那么CPU認(rèn)為此按鍵確實(shí)按下。同樣,在鍵從按下到再次松開(kāi)時(shí),假設(shè)CPU檢測(cè)到有鍵松開(kāi),并在延時(shí)一段時(shí)間后仍檢測(cè)到鍵在松開(kāi)狀態(tài),那么認(rèn)為此鍵確實(shí)松開(kāi)了[13]。消抖流程圖如圖5-4所示。主程序開(kāi)始主程序開(kāi)始讀鍵盤(pán)有鍵按下否?用延時(shí)程序確定鍵是否按下鍵按下是否有效?按鍵處理初始化NNYY圖5-4按鍵消抖方法流程圖圖5-4按鍵消抖方法流程圖5.5數(shù)碼顯示模塊數(shù)碼管顯示程序是基于定時(shí)器0的中斷功能實(shí)現(xiàn)的。定時(shí)器溢出時(shí)間是10ms,每次溢出中斷選中一位數(shù)字,下一次中斷再選中另一位數(shù)字。有研究證實(shí),當(dāng)圖畫(huà)變換速度大于每秒24幀以后,人眼就看不出閃爍[14]。按照剛剛的計(jì)算,數(shù)碼管刷新的速度是每秒50幀,大大超過(guò)24幀的最低限度,所以肉眼看不出掃描時(shí)的閃爍。在用按鍵修改工作參數(shù)后,將參數(shù)存入一個(gè)指定的內(nèi)存地址單元,在定時(shí)器0中斷中,讀取這個(gè)單元內(nèi)的數(shù)據(jù)并顯示出來(lái)。程序開(kāi)始程序開(kāi)始i=0?選中十位i=1P0輸出十位數(shù)碼i=0P0輸出個(gè)位斷碼選中個(gè)位程序結(jié)束NY圖5-5數(shù)碼管顯示程序〔定時(shí)器0中斷效勞程序〕流程圖圖5-5數(shù)碼管顯示程序〔定時(shí)器0中斷效勞程序〕流程圖5.6工作時(shí)間計(jì)算模塊工作間隔時(shí)間的計(jì)算是基于定時(shí)器1的中斷功能實(shí)現(xiàn)的。定時(shí)器1的溢出時(shí)間為10ms,當(dāng)溢出100次以后,即為1秒。每次計(jì)數(shù)到達(dá)一秒,就將預(yù)存的工作間隔時(shí)間減去1秒,當(dāng)工作間隔時(shí)間減到0時(shí),說(shuō)明已經(jīng)到了澆花時(shí)間,開(kāi)啟繼電器,讓水流通[15]。圖5-6工作時(shí)間計(jì)算程序〔定時(shí)器1中斷效勞程序〕流程圖程序開(kāi)始圖5-6工作時(shí)間計(jì)算程序〔定時(shí)器1中斷效勞程序〕流程圖程序開(kāi)始i=i+1i>=100?i=0間隔時(shí)間減1秒間隔時(shí)間=0?開(kāi)始澆花程序結(jié)束NNYY結(jié)論本次畢業(yè)論文所設(shè)計(jì)的智能澆花控制系統(tǒng)的主要特點(diǎn)為系統(tǒng)的兩大功能,即定時(shí)澆花和定量澆花,系統(tǒng)的主要控制器件為AT89C51單片機(jī)、繼電器、電磁閥以及LED數(shù)碼管,通過(guò)軟硬件的共同控制,完成澆水過(guò)程。通過(guò)本次畢業(yè)設(shè)計(jì),讓我進(jìn)一步了解了微電腦控制的智能系統(tǒng),更扎實(shí)關(guān)于單片機(jī)AT89C51的相關(guān)知識(shí)。也使我真正接觸到了檢測(cè)控制系統(tǒng)的設(shè)計(jì),讓我了解到設(shè)計(jì)中不僅要考慮到技術(shù)方面的問(wèn)題,還有實(shí)用性、實(shí)際操作性等很多細(xì)節(jié)需要注意。通過(guò)對(duì)智能澆花系統(tǒng)的設(shè)計(jì),我擺脫了單純的理論知識(shí)學(xué)習(xí)狀態(tài),理論和實(shí)際的結(jié)合鍛煉了我綜合運(yùn)用所學(xué)的專(zhuān)業(yè)根底知識(shí)來(lái)解決實(shí)際工程問(wèn)題的能力,同時(shí)也提高我查閱文獻(xiàn)資料、設(shè)計(jì)手冊(cè)以及電腦制圖等專(zhuān)業(yè)能力水平,而且通過(guò)對(duì)整體的掌控,對(duì)局部的取舍,以及對(duì)細(xì)節(jié)的斟酌處理,都使我的能力得到了鍛煉。在我的設(shè)計(jì)中也許還有好多缺乏的地方,但是正是這些缺乏才給了我們研究單片機(jī)的巨大動(dòng)力,只有發(fā)現(xiàn)問(wèn)題,面對(duì)問(wèn)題,才有可能解決問(wèn)題,缺乏和遺憾不會(huì)給我打擊只會(huì)更好的鞭策我前行,今后我會(huì)更加關(guān)注這些新技術(shù)新設(shè)備,并爭(zhēng)取盡快的掌握這些先進(jìn)的技術(shù)知識(shí),更好的為自己努力,為自己奮斗。致謝通過(guò)這一階段的努力,我的畢業(yè)論文終于完成了。論文的順利完成,我要由衷地感謝翟淑霞老師。在整個(gè)設(shè)計(jì)期間,翟老師傾注了大量的時(shí)間和精力,從論文選題、開(kāi)展調(diào)研到論文的軟硬件設(shè)計(jì)階段一直給予指導(dǎo)與啟發(fā),并為我提供了許多有用的想法和設(shè)計(jì)思路,在我寫(xiě)作論文的過(guò)程中,翟老師給我提供了許多資料,并對(duì)電路設(shè)計(jì)中出現(xiàn)的問(wèn)題給予耐心解答,完稿之后在百忙之中仔細(xì)閱讀,給出修改意見(jiàn),在此對(duì)她表示感謝。與此同時(shí),還要感謝身邊的同學(xué)們對(duì)我的幫助,在我寫(xiě)本論文的過(guò)程中,他們給予我大量的指導(dǎo)和建議,對(duì)我不解的地方進(jìn)行耐心的講解,我才能順利的完成論文的寫(xiě)作。參考文獻(xiàn)[1]郭天祥.51單片機(jī)C語(yǔ)言教程——入門(mén)、提高、開(kāi)發(fā)、拓展全攻略[M].北京:電子工業(yè)出版社,2009:67-87.[2]王玉鳳,劉湘黔.電子設(shè)計(jì)從零開(kāi)始[M].北京:清華大學(xué)出版社,2010:123-134.[3]譚浩強(qiáng).C程序設(shè)計(jì)教程學(xué)習(xí)輔導(dǎo)[M].北京:清華大學(xué)出版社,2011:23-26.[4]童詩(shī)白.模擬電子技術(shù)根底[M].成都:高等教育出版社,2010:45-48.[5]趙克中.磁力驅(qū)動(dòng)技術(shù)與設(shè)備[M].北京:化學(xué)工業(yè)出版社,2008:134-156.[6]林伸茂.8051單片機(jī)徹底研究[M].北京:中國(guó)電力出版社,2007:56-67.[7]吳磊.8051微控制器[M].北京:清華大學(xué)出版社,2008:98-111.[8]郭英濤.LCD背光驅(qū)動(dòng)電路與應(yīng)用實(shí)例[M].北京:人民郵電出版社,2009:245-256.[9]張煒.LCD驅(qū)動(dòng)電路、驅(qū)動(dòng)程序與典型應(yīng)用[M].北京:人民郵電出版社,2009:256-265.[10]SDGroup.SDMemoryCardSpecifications[Z].USA:TechnicalCommitteeSDAssociation,2008:456-467.[11]Teayon.HardwareWhitePaper[Z].USA:MicrosoftCorporation,2011:46-57.[12]張琳.調(diào)節(jié)閥的應(yīng)用[M].北京:化學(xué)工業(yè)出版社,2009:76-89.[13]徐賢.新一代綠色光源LED及其應(yīng)用技術(shù)[M].北京:人民郵電出版社,2009:47-76.[14]崔雪莉.單片機(jī)原理及應(yīng)用[M].北京:電子工業(yè)出版社,2010:36-48.[15]唐緒軍.報(bào)業(yè)經(jīng)濟(jì)與報(bào)業(yè)經(jīng)營(yíng)[M].北京:新華出版社,1999:117-121.附錄附錄1整體電路圖附錄2澆花程序#include<reg51.h>#include<intrins.h>//內(nèi)部函數(shù),包含_nop_()空函數(shù)指令#define ucharunsignedchar#defineuintunsignedintsbit RS =P1^0;//定義LCD模塊控制引腳sbit RW =P1^1;sbit E=P1^2;#defineDataPortP2 //定義LCD模塊數(shù)據(jù)端口#defineBusy 0x80//忙標(biāo)志,D7位為1說(shuō)明忙ucharXpos; //列方向地址指針ucharYpos; //行方向地址指針//以下是短延時(shí)函數(shù)voidDelay5Ms(void){ uinti=5552; while(i--);}voidDelay400Ms(void){ unsignedcharTempCycA=5; unsignedintTempCycB; while(TempCycA--) { TempCycB=7269; while(TempCycB--); };}//以下是讀忙狀態(tài)函數(shù)//功能:在正常讀寫(xiě)操作之前檢測(cè)LCD模塊的忙狀態(tài),//D7=0:LCD控制器空閑;D7=1:LCD控制器忙voidCheckBusy(void){ DataPort=0xff;//P1口寫(xiě)1 RS=0;//選擇指令存放器 RW=1;//選擇讀模式 _nop_(); E=1;//使能LCD _nop_(); _nop_(); while(DataPort&Busy);//假設(shè)D7=1,那么DataPort&Busy=1,說(shuō)明忙,等待 E=0;//假設(shè)D7=0,說(shuō)明不忙,令E=0} //以下是寫(xiě)入IR存放器命令函數(shù)//功能:向LCD模塊寫(xiě)入命令字符CMD//假設(shè)AttribC=1檢測(cè)忙信號(hào),假設(shè)AttribC=0不檢測(cè)忙信號(hào)voidWriteIR(ucharCMD,ucharAttribC){ if(AttribC)CheckBusy();//假設(shè)AttribC=1,那么檢測(cè)忙信號(hào),否那么,順序執(zhí)行 RS=0;//選擇指令存放器 RW=0;//選擇寫(xiě)模式 _nop_(); DataPort=CMD;//將命令送數(shù)據(jù)端口 _nop_(); E=1;//使能LCD _nop_(); _nop_(); E=0;//禁止LCD}//以下是寫(xiě)入DDR存放器函數(shù)//功能:在當(dāng)前光標(biāo)位置顯示一個(gè)字符voidWriteDDR(charc){ CheckBusy(); //檢測(cè)忙信號(hào) RS=1;//選擇數(shù)據(jù)存放器 RW=0;//選擇寫(xiě)模式 _nop_();DataPort=c;//將顯示字符送往數(shù)據(jù)口 _nop_(); E=1;//寫(xiě)使能 _nop_(); _nop_(); E=0; //禁止LCD}//以下是光標(biāo)定位函數(shù)voidLcdPos(ucharXpos,ucharYpos){ uchartmp;//定義tmp為指令碼 Xpos&=0x0f; //16xx型液晶的范圍是0~15 Ypos&=0x01; //Y的范圍是0~1 tmp=Xpos; if(Ypos==1) tmp|=0xc0;//假設(shè)Ypos為1(顯示第2行),地址碼+0xc0 tmp|=0x80;//假設(shè)Ypos為0(顯示第1行),地址碼+0x80 WriteIR(tmp,0);}//以下是初始化函數(shù)//功能:向LCD模塊寫(xiě)入不同命令,完成必要的初始化過(guò)程voidLcdReset(void){ Delay400Ms(); WriteIR(0x30,0);//設(shè)為8位接口模式,顯示2行字符,busy=0不檢測(cè)忙信號(hào) Delay5Ms(); WriteIR(0x30,0); Delay5Ms(); WriteIR(0x30,0); Delay5Ms(); WriteIR(0x30,1); //設(shè)置顯示模式(以后均檢測(cè)忙信號(hào))WriteIR(0x08,1); //顯示開(kāi)關(guān)控制指令,顯示關(guān)閉 WriteIR(0x01,1); //清屏指令,將DDRAM數(shù)據(jù)全部填入"空白" WriteIR(0x06,1); //輸入方式設(shè)置指令,字符不動(dòng),光標(biāo)自動(dòng)右移一格 WriteIR(0x0f,1); //顯示開(kāi)關(guān)控制指令,顯示器開(kāi),光標(biāo)開(kāi),光標(biāo)閃爍}//以下是在指定行列顯示字符函數(shù)voidWriteChar(ucharXpos,ucharYpos,charc){ LcdPos(Xpos,Ypos); WriteDDR(c);}//以下是顯示字符串函數(shù)voidWriteString(ucharXpos,ucharYpos,chars[]){ ucharp=0; for(;;) { WriteChar(Xpos,Ypos,s[p]); p++; if(s[p]==0) break; if(++Xpos>=15) //每行最多顯示16個(gè)字符 { Xpos=0;//如果一行顯示不完,那么轉(zhuǎn)到下一行或上一行的第一個(gè)字符 Ypos^=1;}//如果一行顯示不完,那么轉(zhuǎn)到下一行或上一行顯示 }}/**************************************************************************************///Filename:SHT10.c//Author:ChenFen//Date:2008-8-26//SHT10數(shù)字溫濕度傳感器的讀寫(xiě)程序/**************************************************************************************/#include<intrins.h>#defineuintunsignedintucharwendu,shidu,air,wendugao,wendudi,shidugao,shidudi,Mgao,Mdi;//定義要發(fā)送的溫度和濕度 空氣質(zhì)量/*********************************************************//*********************************************************//************SHT10模塊********************************//*********************************************************//*********************************************************///SHT10interfacesbitSCK=P3^4;//defineclockinterfacesbitDATA=P3^0;//definedatainterfacesbittem=P1^3;sbitwet=P1^4;sbitset=P1^5;sbitadd=P1^6;sbitsub=P1^7;typedefunion{unsignedinti;//definetwounionfloatf;}value;enum{TEMP,HUMI};//TEMP=0,HUMI=1#definenoACK0//用于判斷是否結(jié)束通訊#defineACK1//結(jié)束數(shù)據(jù)傳輸//adrcommandr/w#defineSTATUS_REG_W0x06//00000110#defineSTATUS_REG_R0x07//00000111#defineMEASURE_TEMP0x03//00000011#defineMEASURE_HUMI0x05//00000101#defineRESET0x1e//00011110voids_transstart(void);//啟動(dòng)傳輸函數(shù)voids_connectionreset(void);//連接復(fù)位函數(shù)chars_write_byte(ucharvalue);//DHT90寫(xiě)函數(shù)chars_read_byte(ucharack);//DHT90讀函數(shù)chars_measure(uchar*p_value,uchar*p_checksum,ucharmode);//測(cè)量溫濕度函數(shù)voidcalc_dht90(float*p_humidity,float*p_temperature);//溫濕度補(bǔ)償voidGet_TH();/**************************************************************************************/voidGet_TH(){ valuehumi_val,temp_val;ucharerror,checksum; s_connectionreset(); error=0;error+=s_measure((uchar*)&humi_val.i,&checksum,HUMI);//measurehumidityerror+=s_measure((uchar*)&temp_val.i,&checksum,TEMP);//measuretemperatureif(error!=0)s_connectionreset();//incaseofanerror:connectionresetelse{humi_val.f=(float)humi_val.i;//convertsintegertofloattemp_val.f=(float)temp_val.i;//convertsintegertofloatcalc_dht90(&humi_val.f,&temp_val.f);//calculatehumidity,temperature wendu=temp_val.f; shidu=humi_val.f; }}/*********************************************************/voids_transstart(void)//generatesatransmissionstart//DATA://SCK:{DATA=1;SCK=0;//Initialstate_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0;}/*********************************************************/voids_connectionreset(void)//communicationreset:DATA-line=1andatleast9SCKcyclesfollowedbytransstart//DATA://SCK:{uchari;DATA=1;SCK=0;//Initialstatefor(i=0;i<9;i++)//9SCKcycles{SCK=1;SCK=0;}s_transstart();//transmissionstart}/*********************************************************/chars_write_byte(ucharvalue)//writesabyteontheSensibusandcheckstheacknowledge{uchari,error=0;for(i=0x80;i>0;i/=2)//shiftbitformasking{if(i&value)DATA=1;//maskingvaluewithi,writetoSENSI-BUSelseDATA=0;SCK=1;//clkforSENSI-BUS_nop_();_nop_();_nop_();//pulswithapprox.5usSCK=0;}DATA=1;//releaseDATA-lineSCK=1;//clk#9forackerror=DATA;//checkack(DATAwillbepulleddownbyDHT90),DATA在第9個(gè)上升沿將被DHT90自動(dòng)下拉為低電平。_nop_();_nop_();_nop_();SCK=0;DATA=1;//releaseDATA-linereturnerror;//error=1incaseofnoacknowledge//返回:0成功,1失敗}/*********************************************************/chars_read_byte(ucharack)//readsabyteformtheSensibusandgivesanacknowledgeincaseof"ack=1"{uchari,val=0;DATA=1;//releaseDATA-linefor(i=0x80;i>0;i/=2)//shiftbitformasking{SCK=1;//clkforSENSI-BUSif(DATA)val=(val|i);//readbit_nop_();_nop_();_nop_();//pulswithapprox.5usSCK=0;}if(ack==1)DATA=0;//incaseof"ack==1"pulldownDATA-LineelseDATA=1;//如果是校驗(yàn)(ack==0),讀取完后結(jié)束通訊_nop_();_nop_();_nop_();//pulswithapprox.5usSCK=1;//clk#9forack_nop_();_nop_();_nop_();//pulswithapprox.5usSCK=0;_nop_();_nop_();_nop_();//pulswithapprox.5usDATA=1;//releaseDATA-linereturnval;}/*********************************************************/chars_measure(uchar*p_value,uchar*p_checksum,ucharmode)//makesameasurement(humidity/temperature)withchecksum{unsignederror=0;unsignedinti;s_transstart();//transmissionstartswitch(mode){//sendcommandtosensorcaseTEMP:error+=s_write_byte(MEASURE_TEMP);break;caseHUMI:error+=s_write_byte(MEASURE_HUMI);break;default:break;}for(i=0;i<65535;i++)if(DATA==0)break;//waituntilsensorhasfinishedthemeasurementif(DATA)error+=1;//ortimeout(~2sec.)isreached*(p_value)=s_read_byte(ACK);//readthefirstbyte(MSB)*(p_value+1)=s_read_byte(ACK);//readthesecondbyte(LSB)*p_checksum=s_read_byte(noACK);//readchecksumreturnerror;}/*********************************************************/voidcalc_dht90(float*p_humidity,float*p_temperature)//calculatestemperature[C]andhumidity[%RH]//input:humi[Ticks](12bit)//temp[Ti

溫馨提示

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

評(píng)論

0/150

提交評(píng)論