基于STC89C52單片機(jī)的溫濕度檢測系統(tǒng)設(shè)計(jì)_第1頁
基于STC89C52單片機(jī)的溫濕度檢測系統(tǒng)設(shè)計(jì)_第2頁
基于STC89C52單片機(jī)的溫濕度檢測系統(tǒng)設(shè)計(jì)_第3頁
基于STC89C52單片機(jī)的溫濕度檢測系統(tǒng)設(shè)計(jì)_第4頁
基于STC89C52單片機(jī)的溫濕度檢測系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基于AT89C52單片機(jī)的溫濕度檢測系統(tǒng)設(shè)計(jì)PAGEPAGE38基于AT89C52單片機(jī)的溫濕度檢測系統(tǒng)設(shè)計(jì)基于STC89C52單片機(jī)的溫濕度檢測系統(tǒng)設(shè)計(jì)摘要隨著人們的生活及其生產(chǎn)水平的不斷提高,對生活環(huán)境和生產(chǎn)環(huán)境的要求就顯的尤為重要,溫濕度的控制就是一個(gè)典型的例子,因此溫濕度檢測系統(tǒng)就是現(xiàn)代生產(chǎn)生活中應(yīng)運(yùn)而生的一種智能、快捷、方便可靠的檢測系統(tǒng),特別是在工業(yè)生產(chǎn)中如果檢測得不準(zhǔn)確就會發(fā)生許多的生產(chǎn)事故。要為現(xiàn)代人工作、科研、生活提供更好的更方便的設(shè)施就需要從單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。本設(shè)計(jì)是以單片機(jī)為核心,配合溫濕度傳感器,以及相關(guān)的外圍電路組成的檢測系統(tǒng),可以接收所測環(huán)境的溫度和濕度信號,檢測人員可以通過LCD顯示的數(shù)據(jù),實(shí)時(shí)監(jiān)控環(huán)境的溫度和濕度情況。所有的測量操作都可以通過主機(jī)控制軟件來實(shí)現(xiàn),溫度和濕度傳感器得到的測量信號,經(jīng)電路轉(zhuǎn)換為電信號,然后通過轉(zhuǎn)換送到單片機(jī)進(jìn)行數(shù)據(jù)處理,經(jīng)軟件分析處理后送顯示裝置。本系統(tǒng)包括系統(tǒng)硬件和軟件設(shè)計(jì),可靠性高,結(jié)構(gòu)簡單,實(shí)現(xiàn)了對溫濕度的自動(dòng)調(diào)節(jié)。系統(tǒng)還應(yīng)用RS232與上位機(jī)相連接,可以設(shè)置自動(dòng)記錄溫度、濕度的相關(guān)的參數(shù),也可以設(shè)置每隔一定的時(shí)間自動(dòng)記錄,可用在氣象的觀察方面。關(guān)鍵詞:STC89C52單片機(jī),溫濕度傳感器,LCAspeoplelifelevelofproductionandimprovethelivingenvironmentandproductionenvironmenttothedemandsofthesignificantparticularlyimportant,controloftemperatureandhumidityisoneexample,sothetemperatureandhumiditydetectionsystemisthemodernproductionandlifeofakindofintelligencehaveemergedin,quick,convenientandreliabledetectionsystem,especiallyintheindustrialproduction,ifdetectionisnotaccuratewillhappenmanyproductionaccidents.Formodernpeopletowork,scientificresearch,andprovideabetterlifemoreconvenientfacilitieswillneedfromsinglechiptechnologyofdigitalcontroltoall,intelligentcontroldirection.Thisdesignisbasedonsinglechipmicrocomputerasthecore,withtemperatureandhumiditysensor,andrelatedperipheralcircuitcomposedofdetectionsystem,canreceivetheenvironmenttemperatureandhumiditysignal,testingpersonnelcanthroughtheLCDdisplaydata,real-timemonitoringofenvironmentaltemperatureandhumidityconditions.Thissystemincludingthesystemhardwareandsoftwaredesign,highreliability,simplestructure,realizetheautomaticadjustmentofthetemperatureandhumidity.SystemisusedRS232andsuperordinationmachineconnected,cansetupautomaticrecordingoftemperatureandhumidityinrelatedparameters,canalsoseteverycertaintimetobeautomaticrecords,canbeusedinmeteorologicalobservation.Keywords:STC89C52microcontroller,temperatureandhumiditysensor,LCDdisplay目錄第1章概述 21.1課題的研究背景 21.2溫濕度檢測的發(fā)展?fàn)顩r以及存在的問題 31.3本課程設(shè)計(jì)的主要內(nèi)容 4第2章系統(tǒng)總體方案設(shè)計(jì) 42.1溫濕度傳感器 51、DHT11產(chǎn)品概述 52接口說明 53、 電源引腳 64、串行接口(單線雙向) 65、DHT11引腳說明 66、焊接信息 67、注意事項(xiàng) 72.2RS232接口 72.3單片機(jī)STC89C52 72.4LCD1602 9第3章系統(tǒng)的硬件設(shè)計(jì)和連接 103.1主控模塊 103.2顯示模塊 123.3溫度和濕度采集模塊 123.4鍵盤設(shè)計(jì) 143.5與上位機(jī)相連電路的設(shè)計(jì) 153.6報(bào)警電路設(shè)計(jì) 15第4章系統(tǒng)軟件方案的設(shè)計(jì) 164.1程序流程圖 16第5章總結(jié)與展望 36參考文獻(xiàn) 37第1章概述1.1課題的研究背景工業(yè)生產(chǎn)中有些場合需要使用精密的機(jī)臺設(shè)備,這些設(shè)備的精密度高、價(jià)格高,因此為了保證產(chǎn)品的質(zhì)量及機(jī)臺的使用壽命,對其環(huán)境的要求也很高,尤其的是對溫度、濕度的控制。例如在我工作的生產(chǎn)發(fā)光二極管LED的工業(yè)現(xiàn)場,前面的兩道工序固晶片和焊線要求的精度非常高,晶片必須固到碗杯的中心點(diǎn),偏差不可超過1/5晶片的寬度,且對膠量的控制也有嚴(yán)格的要求,只有這道工序做好了,下一個(gè)工序焊線才會順利,否則焊線將會出現(xiàn)很多異常,不僅會降低產(chǎn)量也會造成質(zhì)量問題,因此要求每三個(gè)小時(shí)記錄一次室內(nèi)的溫濕度,且要保證其溫度在18℃--23隨著信息產(chǎn)業(yè)的發(fā)展及工業(yè)化的進(jìn)步,溫度和濕度不僅僅表現(xiàn)在以上幾個(gè)方面直接或間接影響著人類基本生活條件,還表現(xiàn)在對工生物制品、醫(yī)藥衛(wèi)生、科學(xué)研究、國防建設(shè)等方面的影響。針對以上情況,研制可靠且實(shí)用的溫濕度控制器顯得非常重要。常用溫濕度傳感器的非線性輸出及一致性較差,使溫濕度的測量方法和手段相對較復(fù)雜,且給電路的調(diào)試帶來很大的困難。傳統(tǒng)的溫濕度測量多采用模擬小信號傳感器,不僅信號調(diào)理電路復(fù)雜,且溫濕度值的標(biāo)定過程也極其復(fù)雜,并需要使用昂貴的標(biāo)定儀器設(shè)備。因此對于溫濕度控制器的設(shè)計(jì)有著很大的現(xiàn)實(shí)生產(chǎn)意義。本文設(shè)計(jì)的是基于單片機(jī)STC89C52的溫濕度檢測和控制系統(tǒng),主要以廣泛應(yīng)用的DHT11作為溫度和濕度的檢測,該儀器具有測量精度較高、硬件電路簡單、并能很好的進(jìn)行顯示,可測試不同環(huán)境溫濕度的特點(diǎn)。另外和控制電路相連,可以進(jìn)行加濕電路和除濕電路的控制,使溫度和濕度參數(shù)在預(yù)先設(shè)定的范圍內(nèi),不需要人的直接參與。本系統(tǒng)還通過RS232和上位機(jī)相連,可以設(shè)置每隔一定的時(shí)間進(jìn)行溫度和濕度的采集,上傳到上位機(jī),以供查詢。1.2溫濕度檢測的發(fā)展?fàn)顩r以及存在的問題傳統(tǒng)的溫度和濕度檢測系統(tǒng)主要有以下幾種:(1)水汽壓(e):是水汽在大氣總壓力中的分壓力。它表示了空氣中水汽的絕對含量的大小,以毫巴為單位。(2)相對濕度(rh):濕空氣中實(shí)際水汽壓e與同溫度下飽和水汽壓E的百分比,相對濕度的大小能直接表示空氣距離飽和的相對程度??諝馔耆稍飼r(shí),相對濕度為零。相對濕度越小,表示當(dāng)時(shí)空氣越干燥。當(dāng)相對濕度接近于100%時(shí),表示空氣很潮濕,越接近于飽和。(3)露點(diǎn)(或霜點(diǎn))溫度:指空氣在水汽含量和氣壓都不改變的條件下,冷卻到飽和時(shí)的溫度。(4)干濕球溫度表:用一對并列裝置的、形狀完全相同的溫度表,一支測氣溫,稱干球溫度表,另一支包有保持浸透蒸餾水的脫脂紗布,稱濕球溫度表。(5)發(fā)濕度表(計(jì)):利用脫脂人發(fā)(或牛的腸衣)具有空氣潮濕時(shí)伸長,干燥時(shí)縮短的特性,制成毛發(fā)濕度表或濕度自記儀器,它的測濕精度較差,毛發(fā)濕度表通常在氣溫低于-10℃(6)電阻式濕度片:利用吸濕膜片隨濕度變化改變其電阻值的原理,常用的有碳膜濕敏電阻和氯化鋰濕度片兩種。前者用高分子聚合物和導(dǎo)電材料碳黑,加上粘合劑配成一定比例的膠狀液體,涂覆到基片上組成的電阻片;后者是在基片上涂上一層氯化鋰酒精溶液,當(dāng)空氣濕度變化時(shí),氯化鋰溶液濃度隨之改變從而也改變了測濕膜片的電阻。(7)薄膜濕敏電容:是以高分子聚合物為介質(zhì)的電容器,因吸收(或釋放)水汽而改變電容值。它制作精巧,性能優(yōu)良,常用在探空儀和遙測中。隨著智能檢測系統(tǒng)的飛速發(fā)展,基于單片機(jī)的溫濕度檢測系統(tǒng)將多傳感器系統(tǒng)結(jié)合在一起。如何把多傳感器集中于一個(gè)檢測控制系統(tǒng),綜合利用來自多傳感器的信息,獲得對被測對象的可靠了解和解釋,以利于系統(tǒng)做出正確的響應(yīng)、決策和控制,是智能檢測控制系統(tǒng)中需要解決的首要問題。在溫濕度要求嚴(yán)格的場合,利用多傳感技術(shù)可以提高系統(tǒng)的可靠性和精度,亦可以提高系統(tǒng)的時(shí)間空間的覆蓋范圍。1.3本課程設(shè)計(jì)的主要內(nèi)容單片機(jī)是系統(tǒng)的控制核心,所以單片機(jī)的性能關(guān)系到整個(gè)系統(tǒng)的好壞。因此單片機(jī)的選擇,對所設(shè)計(jì)系統(tǒng)的實(shí)現(xiàn)以及功能的擴(kuò)展有著很大的影響。單片機(jī)種類很多,在眾多51系列單片機(jī)中,較為常用的是ATMEL公司的AT89C51和AT89S52單片機(jī),AT89C51片內(nèi)4KROM是Flash工藝的,使用專用的編程器自己就可以隨時(shí)對單片機(jī)進(jìn)行電擦除和改寫,片內(nèi)有128字節(jié)的RAM。而AT89S52含有在系統(tǒng)可編程的Flash存儲器,片內(nèi)有8K閃存,RAM的容量也較AT89C51大,為256字節(jié)。顯然這種單片機(jī)優(yōu)點(diǎn)更多,開發(fā)時(shí)間也大為縮短。在本次設(shè)計(jì)中選用了STC89C52單片機(jī)。鍵盤接口電路較為簡單,而顯示部分有兩種方案供選擇:一種為LCD,一種為LED。LCD液晶顯示的像素單元是整合在同一塊液晶版當(dāng)中分隔出來的小方格。通過數(shù)碼控制這些極小的方格進(jìn)行顯像。顯示非常細(xì)膩但是造價(jià)很高。而LED數(shù)碼顯示中每一個(gè)像素單元就是一個(gè)發(fā)光二極管,如果是單色,一般是紅色發(fā)光二極管。如果是彩色,一般是三個(gè)三原色小二極管組成的一個(gè)大二極管。這些二極管組成的矩陣由數(shù)碼控制實(shí)時(shí)顯示文字或圖象,造價(jià)相對低廉,顯示效果也較好。本設(shè)計(jì)中,最終選用的集成溫度傳感器DHT11,采集到的溫濕度信號送至單片機(jī),實(shí)現(xiàn)溫濕度的顯示與控制。系統(tǒng)主要由以上元器件組成,通過硬件電路和軟件程序的設(shè)計(jì),實(shí)現(xiàn)系統(tǒng)的基本功能。第2章系統(tǒng)總體方案設(shè)計(jì)本設(shè)計(jì)是基于單片機(jī)對數(shù)字信號的高敏感和可控性、溫濕度傳感器可以產(chǎn)生模擬信號,和A/D模擬數(shù)字轉(zhuǎn)換芯片的性能,此設(shè)計(jì)以STC89C52基本系統(tǒng)為核心的一套檢測系統(tǒng),其中包括單片機(jī)、復(fù)位電路、溫濕度檢測、鍵盤及顯示、報(bào)警電路、系統(tǒng)軟件等部分的設(shè)計(jì)。系統(tǒng)總體方框圖如圖2.1。鍵盤控制顯示電路系統(tǒng)晶振電平變換PC機(jī)報(bào)警電路溫濕度傳感器單片機(jī)鍵盤控制顯示電路系統(tǒng)晶振電平變換PC機(jī)報(bào)警電路溫濕度傳感器單片機(jī)系統(tǒng)重點(diǎn)及組成:溫濕度的檢測溫濕度的顯示單片機(jī)與PC機(jī)間的通信通過開關(guān)量控制實(shí)現(xiàn)溫濕度上下限調(diào)節(jié)圖2.1系統(tǒng)總體框圖2.1溫濕度傳感器1、DHT11產(chǎn)品概述DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC測溫元件,并與一個(gè)高性能8位單片機(jī)相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)、性價(jià)比極高等優(yōu)點(diǎn)。每個(gè)DHT11傳感器都在極為精確的濕度校驗(yàn)室中進(jìn)行校準(zhǔn)。校準(zhǔn)系數(shù)以程序的形式儲存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達(dá)20米以上,使其成為各類應(yīng)用甚至最為苛刻的應(yīng)用場合的最佳選則。產(chǎn)品為4針單排引腳封裝。連接方便,特殊封裝形式可根據(jù)用戶需求而提供。2接口說明建議連接線長度短于20米時(shí)用5K上拉電阻,大于20米時(shí)根據(jù)實(shí)際情況使用合適的上拉電阻3、 電源引腳DHT11的供電電壓為 3-5.5V。傳感器上電后,要等待1s以越過不穩(wěn)定狀態(tài)在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個(gè)100nF的電容,用以去耦濾波。4、串行接口(單線雙向)DATA用于微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時(shí)間4ms左右,用戶MCU發(fā)送一次開始信號后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,等待主機(jī)開始信號結(jié)束后,DHT11發(fā)送響應(yīng)信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分?jǐn)?shù)據(jù).從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集,如果沒有接收到主機(jī)發(fā)送開始信號,DHT11不會主動(dòng)進(jìn)行溫濕度采集.采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。5、DHT11引腳說明 Pin名稱注釋1VDD供電3-5.5VDC2DATA串行數(shù)據(jù),單總線3NC空腳,請懸空4GND接地,電源負(fù)極6、焊接信息手動(dòng)焊接,在最高260℃的溫度條件下接觸時(shí)間須少于107、注意事項(xiàng)(1)避免結(jié)露情況下使用。(2)長期保存條件:溫度10-40℃2.2RS232接口RS232接口是1970年由美國電子工業(yè)協(xié)會(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計(jì)算機(jī)終端生產(chǎn)廠家共同制定的用于串行通訊的標(biāo)準(zhǔn)。它的全名是“數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通訊設(shè)備(DCE)之間串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)”。該標(biāo)準(zhǔn)規(guī)定采用一個(gè)25個(gè)腳的DB25連接器,對連接器的每個(gè)引腳的信號內(nèi)容加以規(guī)定,還對各種信號的電平加以規(guī)定。隨著設(shè)備的不斷改進(jìn),出現(xiàn)了代替DB25的DB9接口,現(xiàn)在都把RS232接口叫做DB9。2.3單片機(jī)STC89C52STC89C52是一種低功耗、高性能CMOS八位微控制器,具有8K在系統(tǒng)可編程Flash存儲器,使用ATMEL公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許ROM在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使其為眾多嵌入式控制應(yīng)用系統(tǒng)提供靈活的解決方案。2.3(1)與MCS-51單片機(jī)產(chǎn)品兼容;(2)8K字節(jié)在系統(tǒng)可編程Flash存儲器;(3)1000次擦寫周期;(4)全靜態(tài)操作:0Hz~33Hz;(5)三級加密程序存儲器;(6)32個(gè)可編程I/O口線;(7)三個(gè)16位定時(shí)器/計(jì)數(shù)器;(8)八個(gè)中斷源;(9)全雙工UART串行通道;(10)低功耗空閑和掉電模式;(11)掉電后中斷可喚醒;圖2.3STC89C52芯片的引腳圖(12)看門狗定時(shí)器;(13)雙數(shù)據(jù)指針;(14)掉電標(biāo)識符。如圖2.3所示STC89C52芯片的引腳圖VCC:電源Vss:地P0口:8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對P0端口寫“1”P1口:具有內(nèi)部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對P1端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IILP2口:具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動(dòng)四個(gè)TTL邏輯電平。對P2端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在方位外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器時(shí),P2口送出高八位地址。P3口:P3口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動(dòng)四個(gè)TTL邏輯電平。對P3端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IILP3口亦作為STC89C52特殊功能(第二功能)使用RST:復(fù)位輸入。晶振工作時(shí),RST腳持續(xù)2個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。ALE/:控制信號(ALE)是訪問外部程序存儲器時(shí),鎖存低8位地址的輸出脈沖。在Flash編程時(shí),此引腳()也用作編程輸入脈沖。在一般情況下,ALE以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲器時(shí),ALE脈沖將會跳過。如果需要,通過將地址為8EH的SFR的第0位置“1”,ALE操作將無效。這一位置“1”,ALE僅在執(zhí)行MOVX或MOVC指令時(shí)有效。否則,ALE將被微弱拉高。這個(gè)ALE使能標(biāo)志位(地址為8EH的SFR的第0位)的設(shè)置對微控制器處于外部執(zhí)行模式下無效。:外部程序存儲器選通信號()是外部程序存儲器選通信號。當(dāng)89S52從外部程序存儲器執(zhí)行外部代碼時(shí),在每個(gè)機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時(shí),將不被激活。/VPP:訪問外部程序存儲器控制信號。為使能從0000H到FFFFH的外部程序存儲器讀取指令,必須接地。為執(zhí)行內(nèi)部程序指令,應(yīng)該接VCC。在Flash編程期間,也接收12伏VPP電壓。XTAL1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。XTAL2:振蕩器反相放大器的輸出端。2.4LCD1602工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符。(16列2行)1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全一樣,其中:引腳符號功能說明1VSS一般接地2VDD接電源(+5V)3V0液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地電源時(shí)對比度最高(對比度過高時(shí)會產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對比度)。4RSRS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。5R/WR/W為讀寫信號線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。6EE(或EN)端為使能(enable)端,下降沿使能。7DB0低4位三態(tài)、雙向數(shù)據(jù)總線0位(最低位)8DB1低4位三態(tài)、雙向數(shù)據(jù)總線1位9DB2低4位三態(tài)、雙向數(shù)據(jù)總線2位10DB3低4位三態(tài)、雙向數(shù)據(jù)總線3位11DB4高4位三態(tài)、雙向數(shù)據(jù)總線4位12DB5高4位三態(tài)、雙向數(shù)據(jù)總線5位13DB6高4位三態(tài)、雙向數(shù)據(jù)總線6位14DB7高4位三態(tài)、雙向數(shù)據(jù)總線7位(最高位)(也是busyflag)15BLA背光電源正極16BLK背光電源負(fù)極寄存器選擇控制表RSR/W操作說明00寫入指令寄存器(清除屏等)01讀busyflag(DB7),以及讀取位址計(jì)數(shù)器(DB0~DB6)值10寫入數(shù)據(jù)寄存器(顯示各字型等)11從數(shù)據(jù)寄存器讀取數(shù)據(jù)第3章系統(tǒng)的硬件設(shè)計(jì)和連接3.1主控模塊采用STC89C52單片機(jī)作為系統(tǒng)的控制器。Pl口控制數(shù)碼管顯示溫度和濕度值。P2口與DHT11連接.實(shí)現(xiàn)濕度模擬電壓量轉(zhuǎn)換為數(shù)字量便于單片機(jī)處理。鍵盤控制采用PO口.其中PO.O是溫度的設(shè)置,PO.1是濕度的設(shè)置,PO.2/PO.3是分別對溫度與濕度的上/下限值進(jìn)行設(shè)置。原理如下圖:圖3.1STC89C52單片機(jī)各引腳功能3.2顯示模塊3.3溫度和濕度采集模塊1.通訊過程如圖1所示圖1總線空閑狀態(tài)為高電平,主機(jī)把總線拉低等待DHT11響應(yīng),主機(jī)把總線拉低必須大于18毫秒,保證DHT11能檢測到起始信號。DHT11接收到主機(jī)的開始信號后,等待主機(jī)開始信號結(jié)束,然后發(fā)送80us低電平響應(yīng)信號.主機(jī)發(fā)送開始信號結(jié)束后,延時(shí)等待20-40us后,讀取DHT11的響應(yīng)信號,主機(jī)發(fā)送開始信號后,可以切換到輸入模式,或者輸出高電平均可,總線由上拉電阻拉高。 圖2總線為低電平,說明DHT11發(fā)送響應(yīng)信號,DHT11發(fā)送響應(yīng)信號后,再把總線拉高80us,準(zhǔn)備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都以50us低電平時(shí)隙開始,高電平的長短定了數(shù)據(jù)位是0還是1.格式見下面圖示.如果讀取響應(yīng)信號為高電平,則DHT11沒有響應(yīng),請檢查線路是否連接正常.當(dāng)最后一bit數(shù)據(jù)傳送完畢后,DHT11拉低總線50us,隨后總線由上拉電阻拉高進(jìn)入空閑狀態(tài)。 數(shù)字0信號表示方法如圖4所示圖4數(shù)字1信號表示方法.如圖5所示 圖53.4鍵盤設(shè)計(jì)用了幾個(gè)簡單的按鍵將它們拼成了一個(gè)簡易的鍵盤。為提高CPU的效率,鍵盤采用中斷方式。按鍵對單片機(jī)的接口電路圖如圖所示。

行信號(KEY)接到高電平,當(dāng)沒有鍵按時(shí),行線與列線(KEYSCAN)是斷開的,且行線都是高電平(1111),行信號作為的輸入端、列信號作為的輸出端。可以設(shè)置列線初始狀態(tài)為低電平(0000)。信號為從上到下的順序

當(dāng)有鍵按下時(shí),假如是K1按下,行信號與列信號接通,這時(shí)相應(yīng)的行線(KEY0)變?yōu)榈碗娖剑?1111),可以肯定第一行(K1,5,9,13)有鍵按下。

下面就要運(yùn)用掃描的原理了:

1、因?yàn)橹恢赖谝恍杏墟I按下,不知道是那個(gè),可以設(shè)置列信號為0111,這時(shí)行信號變?yōu)椋?111)(注:假設(shè)時(shí)鐘周期很短,手還沒松開,即鍵還在按下的狀態(tài))

2、設(shè)置列信號為1011,行信號也變成(1111)

3、設(shè)置列信號為1101,行信號也變成(1111)

4、設(shè)置列信號為1110,行信號也變成(0111),這時(shí)就可以肯定是第一個(gè)鍵按下。

3.5與上位機(jī)相連電路的設(shè)計(jì)通過和MAX232和上位機(jī)相連接,如圖3-9所示。在大氣氣候的檢測中需要做記錄時(shí),可以通過設(shè)置單片機(jī)的參數(shù),每隔一定的時(shí)間進(jìn)行自動(dòng)的做記錄,省去人工的記錄麻煩。Max232的T1IN和單片機(jī)的P3.2相連,R1OUT和單片機(jī)的P3.1相連。圖3.5單片機(jī)系統(tǒng)與上位機(jī)的連接3.6報(bào)警電路設(shè)計(jì)NPN5.6K3.3K+5VP3.2AT89S52PB2130UPNPN5.6K3.3K+5VP3.2AT89S52PB2130UP002A圖3.6三極管驅(qū)動(dòng)的峰鳴音報(bào)警電路第4章系統(tǒng)軟件方案的設(shè)計(jì)溫度控制主程序的設(shè)計(jì)應(yīng)考慮以下問題:(1)溫濕度采樣,數(shù)字濾波;(2)越限報(bào)警和處理;(3)溫度標(biāo)度轉(zhuǎn)換;(4)溫濕度顯示。通常,符合上述功能的溫度控制程序由主程序和T0中斷服務(wù)程序兩部分組成。在該軟件系統(tǒng)中,定時(shí)器T0為工作方式1,定時(shí)周期為125ms,8次定時(shí)器中斷為1S,由于實(shí)際環(huán)境溫度和濕度變化是連續(xù)和平緩的,故這里采用分段定值平緩濾波算法處理每次測得的溫度和濕度值,有效防止了突發(fā)干擾使測得值波動(dòng)很大,導(dǎo)致反饋系統(tǒng)關(guān)啟工作,影響系統(tǒng)的穩(wěn)定,提高了系統(tǒng)的抗干擾性。4.1程序流程圖LCD1602頭文件#ifndef__LCD_1602_CLIMBERWIN__#define__LCD_1602_CLIMBERWIN__#defineucharunsignedchar#defineuintunsignedint#include<intrins.h>#include"lcd1602define.h"/******PortDefinitions*****/#defineLCD_DataP0//LCD的數(shù)據(jù)口sbitLCD_BF=LCD_Data^7;//LCD忙信號位sbitLCD_RS=P2^7;sbitLCD_RW=P2^6;sbitLCD_EN=P2^5;unsignedchardis_buf[3];//數(shù)值顯示緩沖區(qū)unsignedchartable[11]="0123456789";//字碼/*定義子程序*/voidLCD_ClrAll(void);//清屏voidJudge_LCD_busy(void);//檢測是否忙碌voidLCD_Write(ucharWriteData);//寫控制字voidLCD_write_data(ucharLCD_data);//寫數(shù)據(jù)顯示voidLCD_cursor(ucharx);//光標(biāo)起始地址voidLCD_printc(unsignedcharlcd_data);//輸出一個(gè)字符voidLCD_prints(unsignedchar*lcd_string);//輸出字符串voiddelay_ms(unsignedchari);//1ms延時(shí)//************************************************************************/*LCD1602忙碌判斷子程序*/voidJudge_LCD_busy(void)//判斷LCD1602是否忙狀態(tài){while(1){LCD_EN=0;LCD_RS=0;LCD_RW=1;LCD_Data=0xff;LCD_EN=1;//EN是1—0使能if(!LCD_BF)break;//LCD_BF=1表示忙碌,需要等待。}LCD_EN=0;}/******LCD清屏***************/voidLCD_ClrAll(void){Judge_LCD_busy();//判斷是否忙碌LCD_RS=0;LCD_RW=0;LCD_Data=0x01;LCD_EN=1;LCD_EN=0;}/*******LCD寫數(shù)據(jù)定義各種模式*********/voidLCD_Write(ucharWriteData)//寫指令到LCD{Judge_LCD_busy();LCD_RS=0;LCD_RW=0;LCD_Data=WriteData;//把WriteData的數(shù)據(jù)送到數(shù)據(jù)口LCD_EN=1;LCD_EN=0;}/********LCD顯示數(shù)據(jù)***********/voidLCD_write_data(ucharLCD_data)//輸出一個(gè)字節(jié)數(shù)據(jù)到LCD{Judge_LCD_busy();LCD_RS=1;LCD_RW=0;LCD_Data=LCD_data;LCD_EN=1;LCD_EN=0;}/****光標(biāo)位置的確定***/voidLCD_cursor(ucharx)//LCD光標(biāo)定位到x處{LCD_Write(0x80+x);//第一行地址是0x80}/*輸出一個(gè)字符*/voidLCD_printc(unsignedcharlcd_data){LCD_write_data(lcd_data);}/*輸出字符串*/voidLCD_prints(unsignedchar*lcd_string){unsignedchari=0;while(lcd_string[i]!=0x00){LCD_write_data(lcd_string[i]);i++;}}/*顯示整數(shù)*/voidLCD_ints(unsignedcharnum){signedchari=0;for(i=0;i<3;i++)//拆分bcd{dis_buf[i]=num%10;;num=num/10;}for(i=2;i>0;i--)//滅零{if(dis_buf[i]==0)dis_buf[i]=10;elsebreak;}for(i=2;i>=0;i--)//逐個(gè)顯示{LCD_write_data(table[dis_buf[i]]);}}/*初始化程序*/voidLCD_initial(void)//初始化LCD{LCD_Write(LCD_AC_AUTO_INCREMENT|LCD_MOVE_DISENABLE);LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_OFF);LCD_Write(LCD_DISPLAY_DOUBLE_LINE);LCD_ClrAll();}#endifUART頭文件bitflag_uart=0; //字符串接受完成后標(biāo)志位置位,須軟件復(fù)位unsignedcharS_LEN=4;unsignedcharRes_buf[20]={0};voidUart_init(){ ES=1; //setES SCON=0x52; //setSM1、RENandTI; TMOD=0x20; //setM1,方式2; TH1=0xf3; TL1=0xf3; //baudrate2400b/s TR1=1; //計(jì)數(shù)使能}voidUart_sc(unsignedcharbyte)//發(fā)送單字符{ while(!TI); SBUF=byte; TI=0;}voidUart_ss(unsignedchar*p,bitflag) //發(fā)送字符串{ while(*p) { Uart_sc(*p++); } if(flag==1) { Uart_sc(0x0D); Uart_sc(0x0A);//結(jié)尾發(fā)送回車換行 }}KEY頭文件unsignedcharcoderow_scan[4]={0xef,0xdf,0xbf,0x7f};voiddelay_1ms(unsignedinti)//1ms延時(shí){ unsignedcharx,j; for(j=0;j<i;j++) for(x=0;x<=40;x++); }unsignedcharkey_scan(){ unsignedchari,j; unsignedchartemp,key_vaul; for(i=0;i<4;i++) { P1=row_scan[i]; temp=0x01; for(j=0;j<4;j++) { if(!(P1&temp)) { key_vaul=i*4+j+1; while(!(P1&temp)); returnkey_vaul; } temp<<=1; } }}bitkey_check() //檢測有無鍵按下{ bitkey_flag=0; //鍵標(biāo)志。有鍵按下時(shí)為1 P1=0x0f; if(P1!=0x0f) { delay_1ms(1); if(P1!=0x0f) { key_flag=1; //有鍵按下 } elsekey_flag=0;//為抖動(dòng) } returnkey_flag;}DHT11頭文件#ifndef__DHT11_H__#define__DHT11_H__sbit DT0 = P2^0;sbit DT1 = P2^1;sbitBEEP=P2^3;#defineOK1#defineERROR0#defineNUMBER20#defineSIZE5staticunsignedcharstatus;//存放五字節(jié)數(shù)據(jù)的數(shù)組staticunsignedcharvalue_array_0[SIZE];staticunsignedcharvalue_array_1[SIZE];inthumi_value0,temp_value0,humi_value1,temp_value1;voiddelay_ms(unsignedchari)//ms延時(shí){ unsignedcharx,j; for(j=0;j<i;j++) for(x=0;x<=140;x++); }voiddelay(unsignedcharx)//x*0.14MS{ unsignedchari; while(x--) { for(i=0;i<13;i++){} }}voiddelay_1(unsignedcharx)//x*1.4MS{ unsignedchari; while(x--) { for(i=0;i<130;i++){} }}voidbeep(){ unsignedchari; BEEP=0; for(i=0;i<6;i++) { BEEP=!BEEP; delay_1(5000); delay_1(5000); } }voiddelay_10us(){unsignedchari;i--;i--;i--;i--;i--;i--;}voidNode_sensor_0(unsignedintTEP,unsignedintDAM,intflag_send){ unsignedchari,j,N=0; unsignedcharbuf[5]={0}; unsignedchartem,teml=10,temh=40; DT0=0; delay_ms(30); DT0=1; delay_10us(); delay_10us(); delay_10us(); delay_10us(); DT0=1; if(DT0==0) //是否響應(yīng)信號 { while(DT0==0); //跳過80usDHT響應(yīng)信號 while(DT0==1); //跳過80usDHT拉高信號 //準(zhǔn)備接受溫濕度數(shù)據(jù) for(i=0;i<5;i++) { for(j=0;j<8;j++) { N=0; while(DT0==0);//bit數(shù)據(jù)頭 while(DT0==1) { delay_10us();//適當(dāng)延時(shí) N++; } buf[i]<<=1; if(N>3)buf[i]++; } } DT0=1; //接受完成,準(zhǔn)備校驗(yàn)數(shù)據(jù) tem=buf[0]+buf[1]+buf[2]+buf[3]; if(tem==buf[4]) { //buf[2]=buf[2]-5; LCD_cursor(0); LCD_prints(""); LCD_cursor(0); LCD_prints("N1"); LCD_prints("T:"); LCD_cursor(0x04); LCD_ints(buf[2]); LCD_cursor(0x07); LCD_write_data(0xDF); LCD_write_data(0x43); LCD_cursor(0x0A); LCD_prints("HU:%"); LCD_cursor(0x0C); LCD_ints(buf[0]); if(flag_send==1) { LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_ON|LCD_CURSOR_BLINK_ON); Uart_ss("N1:",0); Uart_ss("Tem:",0); Uart_sc(buf[2]/10+48); Uart_sc(buf[2]%10+48); Uart_ss("度",0); Uart_ss("Hum:",0); Uart_sc(buf[0]/10+48); Uart_sc(buf[0]%10+48); Uart_sc(0xA3); Uart_sc(0xA5); Uart_sc(0x0D); Uart_sc(0x0A);//結(jié)尾發(fā)送回車換行 LCD_cursor(0x40); } else { LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_OFF|LCD_CURSOR_BLINK_OFF); } teml=TEP; temh=TEP>>8; if((buf[2]<teml)||(buf[2]>temh))//溫度低于于10度或高于40度時(shí)候報(bào)警 { beep();LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_ON); } else { BEEP=1;LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_OFF); } teml=DAM; temh=DAM>>8; if((buf[0]<teml)||(buf[0]>temh))//濕度低于15%或高于60%度時(shí)候報(bào)警 { beep();LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_ON); } else { BEEP=1;LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_OFF); } } } } voidNode_sensor_1(unsignedintTEP,unsignedintDAM,intflag_send){ unsignedchari,j,N=0; unsignedcharbuf[5]={0}; unsignedcharteml,temh; DT1=0; delay_ms(30); DT1=1; delay_10us(); delay_10us(); delay_10us(); delay_10us(); DT1=1; if(DT1==0) //是否響應(yīng)信號 { while(DT1==0); //跳過80usDHT響應(yīng)信號 while(DT1==1); //跳過80usDHT拉高信號 //準(zhǔn)備接受溫濕度數(shù)據(jù) for(i=0;i<5;i++) { for(j=0;j<8;j++) { N=0; while(DT1==0);//bit數(shù)據(jù)頭 while(DT1==1) { delay_10us();//適當(dāng)延時(shí) N++; } buf[i]<<=1; if(N>3)buf[i]++; } } DT1=1; //接受完成,準(zhǔn)備校驗(yàn)數(shù)據(jù) teml=buf[0]+buf[1]+buf[2]+buf[3]; if(teml==buf[4]) { //buf[2]=buf[2]-5; LCD_cursor(0x40); LCD_prints(""); LCD_cursor(0x40); LCD_prints("N2"); LCD_prints("T:"); LCD_cursor(0x44); LCD_ints(buf[2]); LCD_cursor(0x47); LCD_write_data(0xDF); LCD_cursor(0x48); LCD_write_data(0x43); LCD_cursor(0x4A); LCD_prints("HU:%"); LCD_cursor(0x4C); LCD_ints(buf[0]); if(flag_send==1) { LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_ON|LCD_CURSOR_BLINK_ON); Uart_ss("N2:",0); Uart_ss("Tem:",0); Uart_sc(buf[2]/10+48); Uart_sc(buf[2]%10+48); Uart_ss("度",0); Uart_ss("Hum:",0); Uart_sc(buf[0]/10+48); Uart_sc(buf[0]%10+48); Uart_sc(0xA3); Uart_sc(0xA5); Uart_sc(0x0D); Uart_sc(0x0A);//結(jié)尾發(fā)送回車換行 Uart_sc(0x0D); Uart_sc(0x0A);//結(jié)尾發(fā)送回車換行 } else { LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_OFF|LCD_CURSOR_BLINK_OFF); } teml=TEP; temh=TEP>>8; if((buf[2]<teml)||(buf[2]>temh))//溫度低于于10度或高于40度時(shí)候報(bào)警 { beep();LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_ON); } else { BEEP=1;LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_OFF); } teml=DAM; temh=DAM>>8; if((buf[0]<teml)||(buf[0]>temh))//濕度低于15%或高于60%度時(shí)候報(bào)警 { beep();LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_ON); } else { BEEP=1;LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_OFF); } } } } #endif主程序#include<reg51.h>#include"LCD1602.h"#include"LCD1602define.h"#include"uart.h"#include"KEY.h"#include"dht11.h"#defineucharunsignedchar#defineuintunsignedintuintTEP1=10250,TEP2=10250;uintDAM1=15375,DAM2=15375;//15375=60*256+10(60可以在高八位10在低八位)uchartemx[2],humx[2];uinttem_down=10,tem_up=40,hum_down=10,hum_up=60,number,t;intflag_true=0;voidDelay1ms(unsignedintcount);//延時(shí)程序voidshow_tem_hum();voidset_tem_up();voidset_tem_down();voidcomper_tem();voidset_hum_up();voidset_hum_down();voidcomper_hum();voidup_com();voidset_chose(uintflag,uintnum);voidshow_tem_hum(uintflag);intset_tem_key();intset_tem_key()//輸入鍵值{uintflag1=0;uchari;while(1) { while(key_check()!=0) { i=key_scan(); switch(i) { case2:set_chose(flag1,1);flag1++;break; case3:set_chose(flag1,2);flag1++;break; case4:set_chose(flag1,3);flag1++;break; case6:set_chose(flag1,4);flag1++;break; case7:set_chose(flag1,5);flag1++;break; case8:set_chose(flag1,6);flag1++;break; case10:set_chose(flag1,7);flag1++;break; case11:set_chose(flag1,8);flag1++;break; case12:set_chose(flag1,9);flag1++;break; case15:set_chose(flag1,0);flag1++;break; default:break; } if(flag1==2)return1; } }}voidset_tem_down(){uintflag_down=0;LCD_ClrAll();while(1) { LCD_cursor(0); LCD_prints("settemdown:"); tem_down=0; while(1) { if(flag_down==0) { set_tem_key(); flag_down++; tem_down=number; LCD_cursor(0x40); LCD_prints("numberis:"); LCD_ints(tem_down); LCD_cursor(0x4d); LCD_write_data(0xDF); LCD_write_data(0x43); } if(key_scan()==16)break; } break; } comper_tem();}voidset_tem_up(){uintflag_up=0; LCD_ClrAll();while(1) { LCD_cursor(0); LCD_prints("settemup:"); tem_up=0; while(1) { if(flag_up==0) { set_tem_key(); flag_up++; tem_up=number; LCD_cursor(0x40); LCD_prints("numberis:"); LCD_ints(tem_up); LCD_cursor(0x4d); LCD_write_data(0xDF); LCD_write_data(0x43); } if(key_scan()==16)break; } break; }comper_tem();}voidcomper_tem(){ if(tem_up<tem_down) { LCD_ClrAll(); LCD_cursor(0); LCD_prints("YOUSETTHE"); LCD_cursor(0X40); LCD_prints("WRONGNUMBER"); LCD_cursor(0); for(t=0;t<50;t++)//延時(shí)1.5S左右 { delay_1ms(255); } LCD_prints("SYSTEMTHEN"); LCD_cursor(0x40); LCD_prints("RESTART"); for(t=0;t<50;t++)//延時(shí)1.5S左右 { delay_1ms(255); } TEP1=10250;TEP2=10250; tem_up=10;tem_down=40;} else { TEP1=tem_up*256+tem_down;TEP2=TEP1; LCD_cursor(0); LCD_prints(""); LCD_cursor(0X40); LCD_prints("");}}voidset_hum_down(){uintflag_down=0;LCD_ClrAll();while(1) { LCD_cursor(0); LCD_prints("sethumdown:"); hum_down=0; while(1) { if(flag_down==0) { set_tem_key(); flag_down++; hum_down=number; LCD_cursor(0x40); LCD_prints("numberis:"); LCD_ints(hum_down); LCD_cursor(0x4d); LCD_prints("%"); } if(key_scan()==16)break; } break; } comper_hum();}voidset_hum_up(){uintflag_up=0;LCD_ClrAll();while(1) { LCD_cursor(0); LCD_prints("sethumup:"); hum_up=0; while(1) { if(flag_up==0) { set_tem_key(); flag_up++; hum_up=number; LCD_cursor(0x40); LCD_prints("numberis:"); LCD_ints(hum_up); LCD_cursor(0x4d); LCD_prints("%"); } if(key_scan()==16)break; } break; } comper_hum();}voidcomper_hum(){ if(hum_up<hum_down) { LCD_ClrAll(); LCD_cursor(0); LCD_prints("YOUSETTHE"); LCD_cursor(0X40); LCD_prints("WRONGNUMBER"); LCD_cursor(0); for(t=0;t<50;t++)//延時(shí)1.5S左右 { delay_1ms(255); } LCD_prints("SYSTEMTHEN"); LCD_cursor(0x40); LCD_prints("RESTART"); for(t=0;t<50;t++)//延時(shí)1.5S左右 { delay_1ms(255); } DAM1=15375;DAM2=15375; hum_up=60;hum_down=10; } else { DAM1=hum_up*256+hum_down;DAM2=DAM1; LCD_cursor(0); LCD_prints(""); LCD_cursor(0X40); LCD_prints("");}}voidset_chose(uintflag,uintnum){ if(flag==0) number=10*num; if(flag==1) number+=num; }voidshow_tem_hum(uintflag){ if(flag==1) { LCD_ClrAll(); LCD_cursor(0); LCD_prints("temup:"); LCD_ints(tem_up); LCD_cursor(0x0c); LCD_write_data(0xDF); LCD_write_data(0x43); LCD_cursor(0x40); LCD_prints("temdown:"); LCD_ints(tem_down); LCD_cursor(0x4c); LCD_write_data(0xDF); LCD_write_data(0x43); for(t=0;t<100;t++) { delay_1ms(255); } } if(flag==2){ LCD_ClrAll(); LCD_cursor(0); LCD_prints("humup:"); LCD_ints(hum_up); LCD_cursor(0x0c); LCD_prints("%"); LCD_cursor(0x40); LCD_prints("humdown:"); LCD_ints(hum_down); LCD_cursor(0x4c); LCD_prints("%"); for(t=0;t<100;t++) { delay_1ms(255); } } }main(){uintflag_key=0; uchari=0;Uart_init();LCD_initial();//LCD初始化LCD_ClrAll();//LCD清屏LCD_cursor(0);//光標(biāo)起始地址,第一行地址是0x00~0x0F,第二行地址是0x40~0x4fLCD_prints("MYSYSTEMBEGIN");LCD_cursor(0x40);LCD_prints("HAPPYNEWYEAR");for(t=0;t<50;t++)// { delay_1ms(255); }while(1) { Node_sensor_0(TEP1,DAM1,flag_true); Node_sensor_1(TEP2,DAM2,flag_true); for(t=0;t<25;t++) { delay_1ms(255); } if(key_check()!=0) { i=key_scan(); switch(i) { case1:set_tem_up();break; case2:set_tem_down();break; case5:set_hum_up();break; case6:set_hum_down();break; case9:flag_true=1;break; case10:flag_true=0;break; case14:show_tem_hum(1);break; case16:show_tem_hum(2);break; default:break; } } }} 第5章總結(jié)與展望本次專業(yè)課程設(shè)計(jì):基于STC89C52單片機(jī)的溫濕度檢測系統(tǒng)的設(shè)計(jì),已經(jīng)基本完成。通過這次畢業(yè)設(shè)計(jì),我掌握了一些實(shí)踐性質(zhì)的設(shè)計(jì)的基本步驟:首先,明確設(shè)計(jì)任務(wù),并且要對市場上溫濕度控制器要有初步了解,還要知道前人做了哪些工作,本設(shè)計(jì)方案的可利用程度等等。其次,要對整個(gè)設(shè)計(jì)系統(tǒng)做深入的方案論證、計(jì)算并且結(jié)合現(xiàn)有實(shí)際條件,確立自己的設(shè)計(jì)方案,進(jìn)而,就是對自己確立的方案進(jìn)行硬件實(shí)現(xiàn),包括所用原器件選型,以及控制部分整個(gè)單片機(jī)系統(tǒng)的硬件選型與設(shè)計(jì),并用Protel繪制出整個(gè)系統(tǒng)總體電路圖。接著我們就進(jìn)入到軟件編程設(shè)計(jì)了,要畫出各部分的大體流程圖,弄清楚各個(gè)部分實(shí)現(xiàn)的功能,最后對整個(gè)系統(tǒng)進(jìn)行軟件編程實(shí)現(xiàn)。到此為止,這個(gè)系統(tǒng)的設(shè)計(jì)基本上已經(jīng)完成了,最后就是要經(jīng)過生產(chǎn)實(shí)踐的檢驗(yàn),確定我們的設(shè)計(jì)是否符合實(shí)際要求,具有可利用價(jià)值。在總結(jié)前人的基礎(chǔ)上,利用當(dāng)前最新的傳感器技術(shù)和數(shù)字傳感器件。基于單片機(jī)的溫濕度檢測系統(tǒng)實(shí)現(xiàn)了自動(dòng)采集:數(shù)字傳感器將外界環(huán)境溫度和濕度的數(shù)據(jù)直接送給單片機(jī)無需經(jīng)過A/D轉(zhuǎn)換和專門的數(shù)據(jù)采集部分。實(shí)時(shí)監(jiān)測:在24小時(shí)內(nèi)是實(shí)時(shí)地檢測出外界環(huán)境的溫度和濕度的數(shù)據(jù)。自動(dòng)顯示:有數(shù)碼管自動(dòng)地顯示。綜合以上的分析可知,基于單片機(jī)的溫濕度檢測系統(tǒng)比起傳統(tǒng)的溫度計(jì)和濕度計(jì)有著非常明顯的優(yōu)勢。首先在測量精度方面比起傳統(tǒng)的溫度計(jì)和濕度計(jì)大大地提高了其測量精度。在測量準(zhǔn)度方面比起傳統(tǒng)的溫度計(jì)和濕度計(jì)有著抗干擾的能力。在顯示方面基于單片機(jī)的溫濕度檢測系統(tǒng)是實(shí)時(shí)的自動(dòng)顯示而傳統(tǒng)的溫度計(jì)和濕度計(jì)還必須從儀器上面用肉眼讀出。由于個(gè)人的能力有限,系統(tǒng)肯定存在不完善的地方,還有值得改進(jìn)和優(yōu)化的地方。如其中本設(shè)計(jì)的初步設(shè)計(jì)思路系統(tǒng)是要存在與上位機(jī)相連接的硬件電路及其軟件的編寫,但是因本人能力有限,加上初步設(shè)計(jì)中遇到這個(gè)方面的問題不能解決,故此設(shè)計(jì)中只實(shí)現(xiàn)了與上位機(jī)相連接部分的電路設(shè)計(jì)而忽略了軟件的設(shè)計(jì);另外未能全部完成的是軟件部分,因?yàn)樵谡{(diào)試中,有部分軟件的編寫系統(tǒng)總是不能實(shí)現(xiàn),所以軟件程序僅僅附錄部分程序。這些方面的問題會在以后的學(xué)習(xí)和工作中逐步加強(qiáng)與完善。本系統(tǒng)采用的單片機(jī)控制,實(shí)現(xiàn)對室內(nèi)溫濕度的智能控制,單片機(jī)可完成室內(nèi)的數(shù)據(jù)采集、傳送預(yù)處理和控制任務(wù)。用單片機(jī)匯編語言編程,采用模塊化的結(jié)構(gòu)設(shè)計(jì),提高了可靠性和可擴(kuò)展性。把單片機(jī)控制理論與技術(shù)應(yīng)用在監(jiān)控中,能夠?qū)崿F(xiàn)智能化的控制要求。整個(gè)設(shè)計(jì)過程同時(shí)也是一個(gè)很好的學(xué)習(xí)機(jī)會,例如運(yùn)用Proteus繪圖,經(jīng)過這次設(shè)計(jì)后自己在這方面有很大地進(jìn)步,畫圖的熟練度有了明顯的提高;在查找資料方面,認(rèn)識到:圖書資料、網(wǎng)絡(luò)資料和期刊等都很有價(jià)值,以后做設(shè)計(jì)的時(shí)候要注意查找完整的資料,不要只偏重一個(gè)方面。當(dāng)然整個(gè)設(shè)計(jì)過程學(xué)到的知識和經(jīng)驗(yàn)遠(yuǎn)遠(yuǎn)比運(yùn)用Protel、學(xué)會查找多方資料多得多,這些對于自己以后的學(xué)習(xí)和工作將受益匪淺。但必須認(rèn)識到的是,在設(shè)計(jì)中也存在著不足之處,例如單片機(jī)控制系統(tǒng)在可靠性方面相對于可編程控制器(PLC)控制系統(tǒng)略為欠缺,并且自己深入實(shí)踐不夠,所做的系統(tǒng)也不是很完善。但是我想通過以后的學(xué)習(xí)和努力一定會有所提高,能夠做出更好的設(shè)計(jì)。所設(shè)計(jì)系統(tǒng)不僅適用于室內(nèi)濕度環(huán)境的控制,對軟件進(jìn)行一定的擴(kuò)展后也可用于實(shí)驗(yàn)室、醫(yī)療室、儲藏保鮮、組織培養(yǎng)等生物環(huán)境和糧庫等環(huán)境的控制,具有較強(qiáng)的通用性和適應(yīng)性。雖然到現(xiàn)在為止,有些東西我還是不懂和不理解,但我學(xué)會了面對問題,自己盡量解決,先分析,然后解決,一條道通不過然后嘗試著其它的方法,最終把問題克服掉。最重要的是鍛煉了和同學(xué)的協(xié)作完成任務(wù),提高了合作能力。我感覺這是這次設(shè)計(jì)過程中收獲最大的,這將是我未來的工作中用之不盡寶貴的經(jīng)驗(yàn)。感謝那些幫助過我的同學(xué),感謝他們在自己做畢業(yè)設(shè)計(jì)的情況下還幫我找資料并對我的設(shè)計(jì)提出寶貴的意見??傮w來說,經(jīng)過這次課程設(shè)計(jì),我受益良多,也得到了很多經(jīng)驗(yàn)。我明白了只有自己真正接觸嘗試了,才知道自己的真實(shí)水平。也使我看清了自己的知識水平與各種綜合能力,找出了自己的不足和差距。我將明確自己在今后要奮斗的目標(biāo)與方向,勇往直前。參考文獻(xiàn)1.周潤景,張麗娜.基于PROTEUS的電路及單片機(jī)系統(tǒng)設(shè)計(jì)與仿真.北京航空航天大學(xué)出版社,20062.李朝青.單片機(jī)原理及接口技術(shù).北京航空航天大學(xué)出版社.20093.王忠民.微型計(jì)算機(jī)原理.西安電子科技大學(xué)出版社.20084.李建民.單片機(jī)在溫度控制系統(tǒng)中的應(yīng)用.江漢大學(xué)學(xué)報(bào).19965.沈德金,陳粵初.MCS-51系列單片機(jī)接口電路與應(yīng)用程序?qū)嵗本┖娇蘸教齑髮W(xué)出版社.19906.童詩白.模擬電子技術(shù)基礎(chǔ).高等教育出版社.2001.7.劉篤仁,韓保君.傳感器原理及應(yīng)用技術(shù).機(jī)械工業(yè)出版社.20038.胡漢才.單片機(jī)原理及接口技術(shù).清華大學(xué)出版社.1996.9.孫建軍,吳太虎基于電力線通信技術(shù)的遠(yuǎn)程溫濕度數(shù)據(jù)采集200410.趙修良于LabVIEW的多路溫濕度測量系統(tǒng)湖南科技學(xué)院學(xué)報(bào)200911.何利民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,200112.李杏春,徐平,李華,趙嘉蔚編.8098單片機(jī)原理及實(shí)用接口技術(shù)[M].北京航空航天大學(xué)出版社,199613.李華,孫曉民,李紅青.MCS-51系列單片機(jī)實(shí)用接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1993HYPERLIN

溫馨提示

  • 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

提交評論