智能溫室參數(shù)無線監(jiān)控系統(tǒng)設計本科論文_第1頁
智能溫室參數(shù)無線監(jiān)控系統(tǒng)設計本科論文_第2頁
智能溫室參數(shù)無線監(jiān)控系統(tǒng)設計本科論文_第3頁
智能溫室參數(shù)無線監(jiān)控系統(tǒng)設計本科論文_第4頁
智能溫室參數(shù)無線監(jiān)控系統(tǒng)設計本科論文_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

題目智能溫室參數(shù)無線監(jiān)控系統(tǒng)設計學生姓名學號所在學院專業(yè)班級電子1203班指導教師完成地點物理與電信工程學院實驗室2016年5月20日頁5系統(tǒng)分析與調試本設計是在KeilC環(huán)境下開發(fā)的,KeilC軟件支持C語言的編程及調試,運用方便,是做C語言畢業(yè)設計者的首選。設計的首要任務是安裝和學習使用這個軟件,在簡單的學習和了解KeilC后,我們便可在此環(huán)境下開始了對帶錄音功能的電子琴的設計工作。在編譯完KeilC后,再運用STC_ISP_V480軟件燒錄到開發(fā)板上,實現(xiàn)實物與程序的連接。在燒錄前要對STC_ISP_V480進行一些必要的設置。第一步:設置MCUType為STC89C52RC;第二步:打開編寫好并編譯的程序文件,它是以.hex為后綴的文件;第三步:選擇對應的COM端口,(可在我的電腦的設備管理處查看COM選項);第四步:點擊Download/下載,等提示請給MCU上電時,打開開發(fā)板上的開關,它就自行燒錄了。KeilC程序運行如圖5.1所示,下載圖如圖5.2所示:圖5.1keilC運行圖圖5.2程序燒錄運行圖在完成對程序的調試及燒錄之后,還需要對其進行演示,把開發(fā)板與電腦連上,設置好對應的接口,完成供電及下載。開始供電后、稍帶幾秒等1602液晶屏能正常顯示當前溫濕度了之后。觀察當前溫濕度的變化。并且針對與自己設定的限值相比較。若當前溫度沒有超標,即沒有超過限值??梢杂檬治孀HT11傳感器,令其溫度的顯示超標。測試能否達到報警。經(jīng)過測試。完全可行。因而簡單的實現(xiàn)了對溫度的控制,繼電器也可以控制風扇的轉動。結論本系統(tǒng)以單片機為核心部件的控制系統(tǒng),利用軟件編程,最終基本上實現(xiàn)了各項要求。雖然系統(tǒng)還存在一些不足,比如溫濕度測量不夠精確,特別是濕度,波動較大。嘗試了各種改進方法。仍然不太理想。不過大體能反映出設計的目的和要求。與預期的結果相差不多。經(jīng)過近兩個月的奮斗,從確定題目,到后來查找資料,理論學習,實驗編程調試,這一切都使我的理論知識和動手能力有了很大的提高。了解了單片機的硬件結構和軟件編程方法,對單片機的工作方式有了很大的認知。同時,對一些外圍設備比如傳感器、液晶屏、鍵盤、蜂鳴器等有了一定的了解!學會了對一項工程如何設計:首先,要分析需要設計的系統(tǒng)要實現(xiàn)什么功能,需要什么器件;然后,針對設計購買相應的硬件,選用硬件時不僅要選用經(jīng)濟的,更重要的是如何能更精確更方便的完成系統(tǒng)的要求;再次,對各個硬件的軟件實現(xiàn)要弄清楚,如何更好的實現(xiàn)各個硬件的協(xié)調,更好的通過主控制器件實現(xiàn)硬件的功能。最后,通過各種測試與調試,讓設計更好的完成系統(tǒng)要求。但因為我們的水平有限,此設計中也存在一定的不足。就比如說對溫濕度下限的設定與控制,應用就更加廣泛。溫濕度控制已經(jīng)成為了21世紀熱門研究話題之一。無論是從生產(chǎn)還是生活,與我們人類都是息息相關的。而智能化的控制溫濕度已經(jīng)發(fā)展成為一種必然。隨著世界經(jīng)濟的發(fā)展,人們生活水平的提高以及社會的進步。我們不可能一直墨守陳規(guī),不能在恪守以前利用人力資源來控制溫濕度的方法。不僅浪費大量的人力資源、財力資源,并且控制系統(tǒng)也更加單一化。而采用自動控制的辦法、既節(jié)省了人力資源,更體現(xiàn)了與時俱進的思想、世界在進步、而這種進步就該體現(xiàn)在各個方面。致謝在這次畢業(yè)設計中,最應該感謝的是我的指導老師梁芳老師,本次溫室大棚環(huán)境參數(shù)監(jiān)控系統(tǒng)的成功設計與梁老師的幫助是息息相關的。還有就是應該感謝我校陜西理工學院圖書館的相關圖書及文獻,以及網(wǎng)上前輩們的優(yōu)秀研究成果,通過對這些資料的學習與借鑒,完成和豐富了本次畢業(yè)設計的內容。再加上自己的思考和領悟才能預期成功地完成的本次目標。梁老師在論文前期、中期、后期都對我的想法及設計經(jīng)行了獨特地分析,這深深的影響了我對學習的態(tài)度,也大大促進了本次設計的順利進行。參考文獻[1]高職富.溫室環(huán)境控制技術的現(xiàn)狀及發(fā)展前景[J].中國市場,2007年第35期:106-107.[2]吉紅.自動控制在國外設施農(nóng)業(yè)中的應用[J].農(nóng)業(yè)環(huán)境與發(fā)展,2007(5):52-54.[3]陳桂友,柴遠斌.單片機應用技術[M].北京:機械工業(yè)出版社,2008,10-88.[4]范薇薇.基于無線傳感器網(wǎng)絡的溫室控制系統(tǒng)研究[D].中國知網(wǎng),2010.[5]王中心.溫室土壤溫濕度無線信息采集與監(jiān)控系統(tǒng)的設計與實現(xiàn).中國知網(wǎng),2010.[6]李文仲,段朝玉.短距離無線數(shù)據(jù)通信入門與實戰(zhàn)[M],北京航空航天大學出版社,2006.[7]熊詩波.機械工程測試技術基礎(第4版)[M].北京:機械工業(yè)出版社,2008,60-102.[8]徐愛鈞.單片機原理實用教程.電子工業(yè)出版社,2011,3.[9]張新榮.基于單片機的多路溫度監(jiān)測系統(tǒng)設計[J].工業(yè)控制計算機,2010(7):13-21.[10]孫育才.MCS-51系列單片微型計算機及其應用(第四版)[M].南京:東南大學出版社,2004,56-58.[11]馬靖善,秦玉平.C語言程序設計[M].北京:清華大學出版社,2005,11-15.[12]LEWISR.ModelingcontrolsystemusingIEC61499[M].InstitutionofElectricalEngineers,2001.[13]CHRISTENSENJH.BasicconceptofIEC61499[C].FachtagungVerteilteAutomatisierung,MagdeburgDE,2000:22-23.[14]IEC65/240/CD,Functionblocksforindustrial-processmeasurementandcontrolsystems-Part1:Architecture[S].1999.附錄ABasedonSingle-ChipMicrocomputerTemperatureandHumidityDataAcquisitionSystemDesignAbstract-Intheacturalproductionoflifeinmanycasesaretoconsidertheinfluenceoftemperatureandhumidityenvironmentandprecisecontrol,Thencamethedataacquisitionsystem.BecausetheCANbuscanimproveantijammingabilityandreliabilityofthedata,correctiveabilityetc.Therefore,usetheCANbusinterfacetotransferdatathenmonitoredbytheuppermachine.Thisarticleintroduceddataacquisitionsystemdesigncomposedoftemperatureandhumiditysensor,theSCMsystem,computer,thecanbus.AfterSHT75digitaltemperatureandhumiditysensorscollectthetemperatureandhumiditymeasurementdatainwarehouseroom,tosenddatatoC8051F060SCMsystemthroughthebusinterface.C8051F060SCMdosimplerapidprocessingofdatathroughtheCANbusinterfacetothecomputerforreal-timemonitoring.Throughtesting,thesystemcanrealizedataacquisition,processingandcommunication.Keywords-temperatureandhumiditysensor,C8051F060,dataacquisition,CANbus)I.INTRODUCTIONBecauseofICmanufacturingtechnologyunceasingenhancement,Theemergenceofahighperformance,highreliabilitysingle-chipDASdataacquisitionsystem.Datacollectiontechnologyhasbecomeaspecializedtechnical,intheindustrialfieldshavebeenextensivelyapplied,dataacquisitionsystemUSESmoreadvancedmoduletypestructure,accordingtothedifferentapplicationrequirementsthroughsimpleincreaseandchangedmodule,andcombiningwiththesystemprogramming,canexpandormodifYsystem,quicklycomposedanewsystem.Temperatureandhumiditydataacquisitionsystemisalwaysrelevantscientificresearchunitsandthecompanycommittedtodevelopingproject,itsearlysysteminmonolithiccomputer8031core,usingthermistorsandwetsensitivecapacitanceastemperaturesensorandhumiditysensors,thewholesystem,whilelowcost,butthelargesizeandlowaccuracy,communicationdistancerestricted,pooruniversality,Toovercometheshortcomings,thispaperstudiesbasedonsingle-chipprocessoroftemperatureandhumiditydataacquisitionsystem,realizetowarehouseroomsceneoftemperatureandhumiditymonitoring,hasthegoodreal-time,highprecision,simpleandconvenient,signaltransceivereasymaintenanceanduseofadvantages.II.BASEDONSINGLE-CHIPMICROCOMPUTERTEMPERATUREANDHUMIDITYDATAACQUISITIONThroughCS051F060single-chipmicrocomputercontrolSHT75digitaltemperatureandhumiditysensorsmeasuringstorehouseroomtemperatureandhumidity,andwillsenddatathroughbusinterfaceCS051F060SCMsystem,aftermicrocontrollersimplerapidprocessinginthroughaCANbusinterfaceteleporttoPCmonitor.A.TheCANtransmitdrivermodulesTheCANtransmitdrivermodulebymicrocontrollerhardwareCS051F060,high-speedlightTLP113andisolationTJAI050high-speedTheCANtransceiverdevicessuchascomposition.Amongthem,CS051F060realizeTheCANbusofapplicationlayerfunction,TJAI050realizeTheCANbusphysicallayerandthedatalinklayerfunction.Thismodulemainlyusedtoupwardplacemachinetosendtemperatureandhumiditydataandacceptcontrolcommand.TJAI050CANprovidedifferentialforbussendingfunction,CANprovidedifferentialacceptcontrollerfunction,andfullycomplywith"ISOl1S9S"standard,highrate,lowelectromagneticradiation,widerangeofdifferentialreceiverinput,CANfightelectromagneticinterference,notonelectricityforbusnodesarenotcausedbyinterference,sendingdata(TXD)controlovertimefunction,intransientautomaticallytobuspinsforprotection,theinputstageand3.3Vdevicecompatible,andthermalprotectionforpowerandland,topreventtheshort-circuitfunction.B.PowersupplycircuitThewholesystemisstable,reliableworkisthebasisofastablepowersupply,switchingisbypowerconversionchipMAX165SandelectricalisolationchipB0505Sdevicessuchascomposition.5Vturn3.3VpowersupplymodulethroughexternalpowersupplyMAX165Swillconvert5V3.3V,forCS051F060single-chipmicrocomputerandSHT75digitaltemperatureandhumiditysensorspowersupply.5Vpowerisolatingmodulethroughwill5Vpowerisolatingintotwoparts,respectivelyforeverylightonbothendsofthedevices.PowerisolatingchipB0505Shastheconstantpressureinput,thesingleoutputvoltageisolationefficiencyhighpowersupplymodule(SO%),smallvolume,lowprice,highreliability,highimpact,isolationcharacteristics,temperaturescopewidth(40°C—+S5°C),etc.Inordertoensureefficientandreliableoperationofthemodulecanberatedload,andtheoutputof5%—100%loadbetween,shouldavoidlong-termworkinno-loadcondition.C.TemperatureandhumiditydataacquisitionandprocessingTemperatureandhumiditydataacquisitionsystemismadeupofthefollowingparts,1)andhumiditysensorSHT75;2)CS051F60microcontroller,3)TheCANbusinterfacecircuit4)Pc.Thesystemframeasshowninfigure1.UsingCS051F060MCUP2.6mouthtovirtualDATA,usingOATAP2.0mouthtovirtualclocklines,thusdirectlywithSHT75digitaltemperatureandhumiditysensorsconnectedandcarriesonthecontrol,afterpowerupSHT75after10mstimecameintosleepmode,beforethisshouldnottransmitanyorders.WhenmakeOATAlineatahighlevels,triggeringSCKninetimesabove(containninetimes),andthensenda"transmissionstart"commandtoactivateSHT75,chipisevocation.Thenanmeasurementcommand(measuringtemperaturecommandfor00000011,measuringrelativehumidityordersfor00000101),I1CwillstartSCKuntilcompletemeasurement.Willthenentersdrawnintoalowlevel,I1CagainrestartSCI(,thentransmittwomeasurementdatabytes.I1Cdatamustbedrawnintoalowlevel,abilityforeachbyteproduceresponsesignal.Transmissionorderfromhighestbits(MSB)tobyte-aligned(LSB).Whensensorelectricityreattachment,programwillenterwaitingoutsideinstructionscycle[51.Ifacceptedtoletsensor'sinstructions,sensor,andmeasurementprocesswillstartoftemperatureorhumidityreal-timedataacquisitionandstorage,waitingforPCtakeseveralorders.BecauseofthetemperatureandhumidityoftheSHT75collecteddatamustnonlinearcompensationtogettheactualenvironmenttemperatureandhumidity.Tocompensateforthenonlinearhumiditysensorstogainaccuratedata,usethefollowingtype(1)correctionoutputvalue:RH1=C1+C2*SORH+C3S0RH2(1)Amongthem:forRH1compensatedforSORHhumidityvalue,SHT75outputof8bitsor12bitshumiditysensorvalue;C1,C2andC2value,asshownintableIandoutputhumiditydataabout.MedianWhenmeasuringtemperaturewith25Clargedifference,inordertocompensatefortemperatureofhumiditymeasurementimpact,usetype(2)correctionoutputvalue:RHtrue=(T-25)(tl+t2*SORH)+RH1(2)Amongthem:forRHtrueRH1compensationtemperatureinfluenceafterthehumidityvalue,tlandt2valuesasshowninchart2,andoutputHumiditydatadigitsareconcernedIII.TESTANDANALYSISOFTHERESULTSThepaperintroducedebugginggoodsystemhasbeenconducted,andseparatelycarriedonthestaticanddynamictests,collectedexperimentaldata.Fromthemicrocontrollermemoryreadoutdatafig.3shows,thissystemcanaccomplishoftemperatureandhumiditydataacqUIsItIon,processing,andcanbetomonitorenvironmentmonitorinrealtime.Willmicrocontrollerhardwaresystemandregulatecircuitandhumiditysensorsignaltothewholedebugging,temperatureandhumiditydataacquisitionsystemhavebeentested.IV.CONCLUSIONThispaperismainlyusedC8051F060single-chipmicrocomputercontrolSHT75digitaltemperatureandhumiditysensorstocollectstorehouseroomtemperature,andhumidityCANbuspassdatalosetoPCmonitorinrealtime.Indatacommunicationsaspects,adoptingCANbus,soCANeffectivelyimprovethemeasurementprecision,temperatureandhumiditysensorisusedawholeanddigitaloutput,sothatthecircuitissimple,highprecisionmeasurement.基于單片機溫濕度數(shù)據(jù)采集系統(tǒng)設計摘要:在實際生產(chǎn)生活中,很多情況下我們都需要考慮溫度和濕度對環(huán)境的影響以及對其的精確控制,然后是數(shù)據(jù)采集系統(tǒng)的設計。由于CAN總線可以提高抗干擾能力、可靠性高、糾正能力強等,因此,使用CAN總線接口傳輸數(shù)據(jù)的上位機監(jiān)控。本文介紹了數(shù)據(jù)采集系統(tǒng)的設計,它是由溫濕度傳感器,單片機系統(tǒng),計算機,CAN總線構成的。SHT75數(shù)字溫濕度傳感器采集的溫度和濕度的測量數(shù)據(jù)倉庫空間,通過總線interface,C8051F060單片機使用CAN總線接口與電腦進行實時的簡單快速的數(shù)據(jù)處理,并發(fā)送數(shù)據(jù)到C8051F060單片機系統(tǒng)監(jiān)控。經(jīng)過測試,該系統(tǒng)可實現(xiàn)數(shù)據(jù)采集,處理和通信。關鍵詞:溫濕度傳感器,C8051F060,數(shù)據(jù)采集,CAN總線一、引言由于集成電路制造技術的不斷提高,高性能、高可靠性的單片機DAS數(shù)據(jù)采集系統(tǒng)出現(xiàn)了。數(shù)據(jù)采集技術已經(jīng)成為一種專業(yè)的技術,在工業(yè)領域得到了廣泛的應用。數(shù)據(jù)采集系統(tǒng)采用更先進的模塊式結構,可根據(jù)不同的應用需求,通過簡單的增加和改變模塊,并與系統(tǒng)編程相結合,可以擴大或修改系統(tǒng),迅速組成一個新的系統(tǒng)。溫濕度數(shù)據(jù)采集系統(tǒng)一直是有關科研單位和公司致力于的開發(fā)項目,其早期的系統(tǒng)在8031單片機核心采用熱敏電阻和濕敏電容作為溫度傳感器和濕度傳感器,整個系統(tǒng),雖然成本低,但體積大、精度低,通信距離的限制,通用性較差,為了克服上述的缺點上,本文研究了基于單片機的溫濕度數(shù)據(jù)采集系統(tǒng),實現(xiàn)對倉庫的溫濕度監(jiān)控,具有實時性好,精度高,操作簡單方便,信號收發(fā)器的維修方便的優(yōu)點。二、基于單片機溫濕度數(shù)據(jù)采集通過CS051F060單片機控制SHT75數(shù)字溫濕度傳感器來測量倉庫室內溫度和濕度,并將通過總線接口cs051f060單片機系統(tǒng)發(fā)送數(shù)據(jù),單片機簡單快速的處理后通過CAN總線接口傳送給上位機監(jiān)控。A.CAN傳輸驅動模塊可通過單片機硬件CS051F060傳輸驅動模塊,高速光TLP113和隔離TJAI050高速CAN收發(fā)器設備實現(xiàn)。其中,CS051F060實現(xiàn)CAN總線的應用層功能,TJAI050實現(xiàn)CAN總線的物理層和數(shù)據(jù)鏈路層的功能。該模塊主要用于向上位機發(fā)送的溫度和濕度數(shù)據(jù),并接受控制指令。TJAI050CAN總線發(fā)送功能提供差分,可以提供差分接收器的功能,并完全符合“ISOl1S9S”的標準,高速率,低電磁輻射,差分接收器的輸入范圍寬,可以對抗電磁干擾,沒有電總線節(jié)點不會造成干擾,自動發(fā)送數(shù)據(jù)(TXD)控制的附加功能,自動保護總線引腳,輸入級和3.3V設備兼容,以及電源和土地的過熱保護,以防止短路的作用。B.電源供電電路整個系統(tǒng)運行穩(wěn)定、可靠工作是在穩(wěn)定的電力供應基礎上的,它是通過電源轉換芯片MAX165S和電氣隔離芯片B0505S設備組成的。5V轉3.3V的電源轉換模塊是通過外部電源MAX165S將5V轉換為3.3V,為CS051F060單片機和SHT75數(shù)字溫濕度傳感器提供電源。5V電源通過將5V電源隔離成兩個部分,分別加在每一個光器件兩端。電源隔離芯片B0505S具有恒壓輸入,單輸出電壓隔離效率高的電源模塊,體積小,價格低,可靠性高,耐沖擊,隔離特性,溫度范圍寬等等。為了確保模塊的有效性和可靠性操作額定負荷,并輸出5%-100%的負載,應該避免在無負載條件下長期工作。C.溫濕度數(shù)據(jù)采集與處理溫濕度數(shù)據(jù)采集系統(tǒng)是由以下幾部分組成:1)溫濕度傳感器SHT75;2)CS051F60的單片機;3)CAN總線接口電路;4)在PC機的系統(tǒng)框架。圖1系統(tǒng)框圖使用CS051F060單片機P2.6口為虛擬數(shù)據(jù)口,采用OATP2.0口來虛擬時鐘線,從而直接與SHT75數(shù)字溫濕度傳感器連接,并進行控制。開機后10ms的時間SHT75進入睡眠模式,在此之前不應發(fā)送任何命令。當OATA線是高電平時,觸發(fā)SCK9次以上(含9次),然后發(fā)送一個“傳輸啟動”命令來激活SHT75,芯片是招魂。然后,一個測量命令(測量溫度命令00000011,測量相對濕度命令00000101),I1C將啟動SCK,直到完成測量。然后當OATA線是低電平時,I1C再次重啟SCI,然后發(fā)送兩個測量數(shù)據(jù)字節(jié)。I1C數(shù)據(jù)必須被置為一個低電平,這樣每個字節(jié)產(chǎn)生響應信號的能力才能從最高位(MSB)到最低位(LSB)。當傳感器復位后,程序將進入指令周期。如果接受程序指示,傳感器和測量程序將啟動溫度和濕度的實時數(shù)據(jù)采集和存儲,等待電腦的幾個命令。因為SHT75采集的溫濕度數(shù)據(jù)必須非線性補償,以獲得實際的環(huán)境溫度和濕度。為了補償非線性濕度傳感器來獲得精確的數(shù)據(jù),使用下列類型式(1)來校正濕度輸出值:RH1=C1+C2*SORH+C3S0RH2(1)其中:RH1為SORH濕度值的補償,8位或12位濕度傳感器SHT75輸出值;C1,C2和C3的值,C3是C1和C2輸出濕度數(shù)據(jù)的中間數(shù)表1濕度變換系數(shù)當測量溫度與25℃相差較大時,為了補償濕度測量的影響,利用式(2)校正溫度輸出值:RHtrue=(T-25)(TL+T2*SORH)+RH1(2)其中:RHtrue為RH1補償溫度影響的濕度值,T1和T2的值和輸出數(shù)據(jù)的數(shù)字濕度有關,如表2所示:表2溫度補償系統(tǒng)三、測試和結果本文已經(jīng)對系統(tǒng)進行了調試,并分別對靜態(tài)和動態(tài)電路進行測試,收集得到的實驗數(shù)據(jù)。從單片機的存儲器中讀出的數(shù)據(jù)圖表明,該系統(tǒng)可以實現(xiàn)溫濕度數(shù)據(jù)采集,處理,并可以實時監(jiān)測環(huán)境。圖2接收數(shù)據(jù)接口將單片機的硬件系統(tǒng)和控制電路、溫濕度傳感器信號用于整體測試,然后確保溫濕度數(shù)據(jù)采集系統(tǒng)已完成檢測。圖3溫濕度數(shù)據(jù)采集實驗數(shù)據(jù)收集。四、結論本文主要用于C8051F060單片機控制SHT75數(shù)字式溫濕度傳感器采集倉庫室內溫濕度,然后CAN總線將數(shù)據(jù)傳輸?shù)絇C機實時監(jiān)控。在數(shù)據(jù)通信方面,采用CAN總線,這樣可以有效地提高測量精度,溫度和濕度傳感器使用一個數(shù)字輸出,使電路簡單,測量精度高。附錄B#include<reg52.h>#include<intrins.h>#include<absacc.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedint//定義四個輸出端口sbitLed_jiashi=P3^4; //加濕sbitLed_qushi=P3^3; //去濕sbitLed_jiangwen=P3^1; //降溫sbitLed_shengwen=P3^2; //升溫//定義三個設置按鍵sbitKey_SET=P2^0;sbitKey_ADD=P2^1;sbitKey_SUB=P2^2;sbitKey_OK=P2^3;//定義24C02數(shù)據(jù)口sbitSCL=P1^0;sbitSDA=P1^1;//定義DHT11數(shù)據(jù)口sbitDATA=P1^7;sbitbuzz=P3^5;//定義LCD1602端口sbitE=P1^3; //1602使能引腳//sbitRW=P2^6; //1602讀寫引腳 sbitRS=P1^2; //1602數(shù)據(jù)/命令選擇引腳//定義全局變量ucharU8FLAG,U8temp,U8comdata,U8RH_data_H_temp,U8RH_data_L_temp,U8T_data_H_temp,U8T_data_L_temp,U8checkdata_temp;ucharU8RH_data_H,U8RH_data_L,U8T_data_H,U8T_data_L,U8checkdata;ucharMode,humidity,temperature;charTH,TL,HH,HL;bitbdataFlagStartRH,hot,cold,humid,dry,BJ;//定時器0初始化voidTimer0_Init(){ ET0=1;//允許定時器0中斷 TMOD=0x11;//定時器工作方式選擇 TL0=0xFF; TH0=0x4B;//定時器賦予初值 TR0=1;//啟動定時器}//定時器0中斷voidTimer0_ISR(void)interrupt1using0{ ucharRHCounter; TL0=0xFF; TH0=0x4B;//定時器賦予初值 RHCounter++; if(RHCounter%10==0&&BJ==1) buzz=!buzz; elseif(BJ==0) buzz=1; //每2秒鐘啟動一次溫濕度轉換if(RHCounter>=40){FlagStartRH=1; RHCounter=0;}}/*********************************BASEDRIVE**********************************/voidDELAY(unsignedintt){ while(t!=0) t--;}/******************************IICDRIVE******************************/voidIICStart(void){SCL=0; DELAY(1);SDA=1;SCL=1;DELAY(1);SDA=0;DELAY(1);SCL=0;}voidIICStop(void){ SDA=0;SCL=1;DELAY(1);SDA=1;DELAY(1);SCL=0; }voidSEND0(void){ SDA=0; SCL=1; DELAY(1); SCL=0;}voidSEND1(void){ SDA=1; DELAY(1); SCL=1; DELAY(1); SCL=0;}bitCheck_Ack(void){ unsignedcharerrtime=250; DELAY(1); SCL=1; DELAY(1); CY=SDA; while(CY) { errtime--; CY=SDA; if(!errtime) { IICStop(); return1; } } DELAY(1); SCL=0; return0;}voidWrite_byte(unsignedchardat){unsignedchari; for(i=0;i<8;i++) { if((dat<<i)&0x80) SEND1(); else SEND0(); }}unsignedcharRead_byte(void){ unsignedchari,temp=0; for(i=0;i<8;i++) {SDA=1; SCL=1; DELAY(1); if(SDA==1) { temp=temp<<1; temp=temp|0x01; } else temp=temp<<1; SCL=0; } returntemp;}/************************************EEPROMDRIVE Addr:from0x00-->*************************************/unsignedcharrdeeprom(unsignedcharaddr){unsignedchartemp=0; bitflag=0; IICStart(); Write_byte(0xa0);Check_Ack(); Write_byte(addr); Check_Ack(); IICStart(); Write_byte(0xa1); Check_Ack(); temp=Read_byte(); SEND1(); IICStop(); returntemp;}voidwrteeprom(unsignedcharaddr,unsignedchardat){ IICStart(); Write_byte(0xa0); Check_Ack(); Write_byte(addr); Check_Ack(); Write_byte(dat); Check_Ack(); IICStop();}voidDelay1(uintj){uchari;for(;j>0;j--){ for(i=0;i<27;i++);}}voidDelay_10us(void){uchari;i--;i--;i--;i--;i--;i--;} voidCOM(void){uchari;for(i=0;i<8;i++) { U8FLAG=2; while((!DATA)&&U8FLAG++); Delay_10us(); Delay_10us(); Delay_10us(); U8temp=0;if(DATA)U8temp=1; U8FLAG=2; while((DATA)&&U8FLAG++); //超時則跳出for循環(huán) if(U8FLAG==1)break; //判斷數(shù)據(jù)位是0還是1 //如果高電平高過預定0高電平值則數(shù)據(jù)位為1 U8comdata<<=1; U8comdata|=U8temp;//0}//rof}////溫濕度讀取子程序////以下變量均為全局變量//溫度高8位==U8T_data_H//溫度低8位==U8T_data_L//濕度高8位==U8RH_data_H//濕度低8位==U8RH_data_L//校驗8位==U8checkdata//調用相關子程序如下//Delay();,Delay_10us();,COM();//ucharRH(void){//主機拉低18msDATA=0; Delay1(180);//原來為5 DATA=1; //總線由上拉電阻拉高主機延時20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); //主機設為輸入判斷從機響應信號 DATA=1; //判斷從機是否有低電平響應信號如不響應則跳出,響應則向下運行 if(!DATA) //T! { U8FLAG=2; //判斷從機是否發(fā)出80us的低電平響應信號是否結束 while((!DATA)&&U8FLAG++); U8FLAG=2; //判斷從機是否發(fā)出80us的高電平,如發(fā)出則進入數(shù)據(jù)接收狀態(tài) while((DATA)&&U8FLAG++); //數(shù)據(jù)接收狀態(tài) COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; DATA=1; //數(shù)據(jù)校驗 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp==U8checkdata_temp) { U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; } return1; } else//傳感器不響應 { return0; }}/*********************************************************************文件名:液晶1602顯示.c*描述:該程序實現(xiàn)了對液晶1602的控制。***********************************************************************//*********************************************************************名稱:delay()*功能:延時,延時時間大概為140US。*輸入:無*輸出:無***********************************************************************/voiddelay(){ inti,j; for(i=0;i<=10;i++) for(j=0;j<=2;j++);} /*********************************************************************名稱:enable(uchardel)*功能:1602命令函數(shù)*輸入:輸入的命令值*輸出:無***********************************************************************/voidenable(uchardel){ P0=del; RS=0; E=1; delay(); E=0; delay();}/*********************************************************************名稱:write(uchardel)*功能:1602寫數(shù)據(jù)函數(shù)*輸入:需要寫入1602的數(shù)據(jù)*輸出:無***********************************************************************/voidwrite(uchardel){ P0=del; RS=1; E=1; delay(); E=0; delay();}/*********************************************************************名稱:L1602_init()*功能:1602初始化,請參考1602的資料*輸入:無*輸出:無***********************************************************************/voidL1602_init(void){ enable(0x38); enable(0x0c); enable(0x06); enable(0x01);//清屏要放在最后}/*********************************************************************名稱:L1602_char(ucharhang,ucharlie,charsign)*功能:改變液晶中某位的值,如果要讓第一行,第五個字符顯示"b",調用該函數(shù)如下 L1602_char(1,5,'b')*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無***********************************************************************/voidL1602_char(ucharhang,ucharlie,charsign){ uchara; if(hang==1)a=0x80; if(hang==2)a=0xc0; a=a+lie-1; enable(a); write(sign);}/*********************************************************************名稱:L1602_string(ucharhang,ucharlie,uchar*p)*功能:改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"abcdef",調用該函數(shù)如下 L1602_string(1,5,"abcdef;")*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無***********************************************************************/voidL1602_string(ucharhang,ucharlie,uchar*p){ uchara; if(hang==1)a=0x80; if(hang==2)a=0xc0; a=a+lie-1; enable(a); while(1) { if(*p=='\0')break; write(*p); p++; }}//顯示整型的溫濕度數(shù)據(jù)用,共占用4位,其中一位符號位voidL1602_int(ucharhang,ucharlie,intnum){uinttemp;uintgewei,shiwei,baiwei,sign;if(num>=0)sign=0;elsesign=1;temp=abs(num);baiwei=temp/100;temp=temp-baiwei*100;shiwei=temp/10;gewei=temp-shiwei*10;num=abs(num);if(num>=100){//L1602_char(hang,lie+1,baiwei+48); L1602_char(hang,lie+2,shiwei+48); L1602_char(hang,lie+3,gewei+48);}elseif(num>=10){if(sign==1) L1602_char(hang,lie+1,'-'); L1602_char(hang,lie+2,shiwei+48);L1602_char(hang,lie+3,gewei+48);}else{if(sign==1) L1602_char(hang,lie+2,'-'); else L1602_char(hang,lie+2,'');L1602_char(hang,lie+3,gewei+48);}}voiddisplay(){ if(Mode==0) { L1602_int(1,3,temperature); L1602_char(1,7,0xdf); L1602_int(1,12,humidity); if(hot==1&&cold==0&&humid==0&&dry==0) {L1602_string(2,1,"It'sveryhot!");BJ=1;} elseif(hot==1&&cold==0&&humid==1&&dry==0) {L1602_string(2,1,"Hotandhumid!");BJ=1;} elseif(hot==1&&cold==0&&humid==0&&dry==1) {L1602_string(2,1,"Hotanddry!");BJ=1;} elseif(hot==0&&cold==1&&humid==0&&dry==0) {L1602_string(2,1,"It'sverycold!");BJ=1;} elseif(hot==0&&cold==1&&humid==1&&dry==0) {L1602_string(2,1,"Coldandhumid!");BJ=1;} elseif(hot==0&&cold==1&&humid==0&&dry==1) {L1602_string(2,1,"Coldanddry!");BJ=1;} elseif(hot==0&&cold==0&&humid==1&&dry==0) {L1602_string(2,1,"It'sveryhumid!");BJ=1;} elseif(hot==0&&cold==0&&humid==0&&dry==1) {L1602_string(2,1,"It'sverydry!");BJ=1;} elseif(hot==0&&cold==0&&humid==0&&dry==0) {L1602_string(2,1,"Goodenvironment");BJ=0;} } }/***按鍵函數(shù)***/voidKEY(){ if(Key_SET==0) { Delay1(200); if(Key_SET==0) { Mode++; if(Mode==1) { L1602_string(1,1,"TH:CHH:%"); L1602_char(1,8,0xdf); L1602_string(2,1,"TL:CHL:%"); L1602_char(2,8,0xdf); L1602_int(1,4,TH); L1602_int(1,12,HH); L1602_int(2,4,TL); L1602_int(2,12,HL); enable(0x80+6); enable(0x0f); } elseif(Mode==2) { enable(0x80+0x40+6); enable(0x0f); } elseif(Mode==3) { enable(0x80+14); enable(0x0f); } elseif(Mode==4) { enable(0x80+0x40+14); enable(0x0f); } elseif(Mode>=5) { Mode=1; enable(0x80+6); enable(0x0f); } while(!Key_SET); } } elseif(Key_ADD==0) { Delay1(200); if(Key_ADD==0) { if(Mode==1) { TH++; if(TH>=100) TH=99; L1602_int(1,4,TH); enable(0x80+6); } elseif(Mode==2) { TL++; if(TL>=TH) TL=TH-1; L1602_int(2,4,TL); enable(0x80+0x40+6); } elseif(Mode==3) { HH++; if(HH>=100) HH=99; L1602_int(1,12,HH); enable(0x80+14); } elseif(Mode==4) { HL++; if(HL>=HH) HL=HH-1; L1602_int(2,12,HL); enable(0x80+0x40+14); } while(!Key_ADD); } } elseif(Key_SUB==0) { Delay1(200); if(Key_SUB==0) { if(Mode==1) {

溫馨提示

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

評論

0/150

提交評論