基于SHT1x的溫濕度采集單元的軟件設(shè)計_第1頁
基于SHT1x的溫濕度采集單元的軟件設(shè)計_第2頁
基于SHT1x的溫濕度采集單元的軟件設(shè)計_第3頁
基于SHT1x的溫濕度采集單元的軟件設(shè)計_第4頁
基于SHT1x的溫濕度采集單元的軟件設(shè)計_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

本科生畢業(yè)設(shè)計(論文)基于SHT1x的溫濕度采集單元的軟件設(shè)計SoftwareDesignoftheTemperatureandHumidityCollectingUnitBasedonSHT1x總計:20頁表格:1個插圖:10幅學(xué)院(系):電子與電氣工程專業(yè):電子信息工程[摘要]本課題是基于單片機(jī)的集中顯示主機(jī)通過RS485總線構(gòu)成的一個溫濕度數(shù)據(jù)采集顯示系統(tǒng)。系統(tǒng)采用主從式協(xié)議實現(xiàn)對多點(diǎn)溫濕度數(shù)據(jù)采集和集中顯示,以單片機(jī)AT89C51為核心,數(shù)據(jù)采集、存儲、顯示以及上傳至主機(jī)進(jìn)行數(shù)據(jù)處理都要通過單片機(jī)。數(shù)據(jù)采集通過單總線的智能溫濕度傳感器SHT11完成,數(shù)據(jù)處理在從機(jī)完成,數(shù)據(jù)顯示在主機(jī)中完成。在整個系統(tǒng)中采用了多種總線、協(xié)議技術(shù),如智能溫濕度傳感器SHT11的單總線技術(shù)、從機(jī)和主機(jī)連接的RS485協(xié)議技術(shù)等。[關(guān)鍵詞]單片機(jī);溫濕度傳感器;485總線技術(shù);通信協(xié)議SoftwareDesignoftheTemperatureandHumidityCollectingUnitBasedonSHT1xAbstract:Thistopicisbasedontheconcentrationofsingle-chipdisplayhostthroughtheRS485bus,itconsistsofadisplayoftemperatureandhumiditydataacquisitionsystem.Itusesmaster-slaveprotocolonthemulti-pointtemperatureandhumiditydataacquisitionandcentralizeddisplay.ThecoreisAT89C51single-chipmicrocomputersystem.ThetemperatureandhumiditysensorSHT11completesdataacquisition.Theslavecompletesdataprocessing,andthehostdisplaysdata.Throughoutthesystemitusesavarietyofbusprotocoltechnologies,suchasthetemperatureandhumiditysensorSHT11intelligentsingle-bustechnology,andtheRS485protocoltechnologybetweentheslaveandhost.Keywords:Single-chipMicrocomputer;TemperatureandHumiditySensors;485BusTechnology;CommunicationProtocol目錄1引言 11.1設(shè)計背景及目的 11.2本課題主要工作 12系統(tǒng)軟件設(shè)計流程圖 32.1主機(jī)軟件設(shè)計流程圖 32.2從機(jī)軟件設(shè)計流程圖 33主機(jī)軟件設(shè)計 43.1數(shù)碼管顯示軟件設(shè)計 43.1.1數(shù)碼管數(shù)據(jù)顯示方法 43.1.2顯示程序流程圖 53.2看門狗電路軟件設(shè)計 63.2.1X5045工作原理 63.2.2X5045看門狗軟件設(shè)計 64從機(jī)軟件設(shè)計 74.1溫濕度采集軟件設(shè)計 74.1.1SHT11簡介 74.1.2SHT11通信協(xié)議 84.1.3SHT11通信軟件包設(shè)計 94.1.3溫濕度采集程序流程圖 105RS485主從式通信軟件設(shè)計 105.1通信協(xié)議 115.2通信規(guī)則 125.3主機(jī)通信軟件設(shè)計 125.4從機(jī)通信軟件設(shè)計 13結(jié)束語 14參考文獻(xiàn) 15附錄 15致謝 201引言1.1設(shè)計背景及目的目前我國農(nóng)業(yè)正處于從傳統(tǒng)農(nóng)業(yè)向以優(yōu)質(zhì)、高產(chǎn)、高效益為目標(biāo)的現(xiàn)代農(nóng)業(yè)轉(zhuǎn)化的新階段。環(huán)境控制工程作為農(nóng)業(yè)生物速生、優(yōu)質(zhì)、高產(chǎn)的手段,是農(nóng)業(yè)現(xiàn)代化的重要標(biāo)志。溫室大棚中的環(huán)境由多個因子組成,如溫度、光照、濕度及二氧化碳濃度等。時下我國溫室環(huán)境控制目前仍靠人工經(jīng)驗來管理,嚴(yán)重影響了農(nóng)業(yè)生產(chǎn)的效益,阻礙了農(nóng)業(yè)生產(chǎn)的發(fā)展。因此,采用先進(jìn)的人工智能技術(shù),科學(xué)合理地控制影響作物的環(huán)境因子,通過計算機(jī)控制設(shè)備進(jìn)行環(huán)境控制,以便給作物生長創(chuàng)造一個最佳的環(huán)境條件,做到既提高產(chǎn)品的質(zhì)量、產(chǎn)量、經(jīng)濟(jì)價值和社會效益,同時盡量降低生產(chǎn)成本,這對溫室環(huán)境施行自動檢測和控制是非常必要的。溫室設(shè)施的關(guān)鍵技術(shù)是環(huán)境控制,其目的是提高控制及作業(yè)精度。本文將信息采集技術(shù)、信息傳輸技術(shù)、信息存儲技術(shù)及信息處理技術(shù)等相互融合,將溫室環(huán)境多種參數(shù)監(jiān)測和單片機(jī)控制理論相結(jié)合,提出一種切實可行的溫室環(huán)境監(jiān)測系統(tǒng),可以全面、實時、自動地對監(jiān)測數(shù)據(jù)進(jìn)行自動記錄、存儲和處理,并將有關(guān)信息根據(jù)現(xiàn)場實際情況,采用最有效方式送入單片機(jī)進(jìn)行處理,并可對監(jiān)測系統(tǒng)進(jìn)行遠(yuǎn)程控制。1.2本課題主要工作本課題擬研究的主要問題包括:(1)溫度和濕度數(shù)據(jù)的數(shù)字化采集;(2)主機(jī)對溫濕度數(shù)據(jù)的處理和顯示;(3)溫濕度數(shù)據(jù)的遠(yuǎn)程傳輸。重點(diǎn)和難點(diǎn)是系統(tǒng)的軟件設(shè)計方案的確定及數(shù)據(jù)的處理和傳輸?shù)能浖O(shè)計。圖1系統(tǒng)總體結(jié)構(gòu)圖如圖1所示,各個從機(jī)都可以獨(dú)立的采集數(shù)據(jù)。每一個從機(jī)的工作互不影響。通過RS485總線與主機(jī)連接。主機(jī)通過智能控制分時處理各個從機(jī)上傳的數(shù)據(jù)。因此可以完成多點(diǎn)采集的功能。為了實現(xiàn)該系統(tǒng)的實時性,主機(jī)是循環(huán)向各從機(jī)發(fā)出溫濕度數(shù)據(jù)采集命令,傳送回來的溫濕度數(shù)據(jù)以動態(tài)刷新的形式直觀的顯示在主機(jī)的數(shù)碼管上。為了保證傳輸數(shù)據(jù)的可靠性,所有的命令和數(shù)據(jù)傳輸都制定了嚴(yán)格的通信協(xié)議。如圖2所示,主機(jī)部分由看門狗、數(shù)碼管顯示和MAX485三個模塊構(gòu)成。主機(jī)主機(jī)數(shù)碼管顯示看門狗看門狗MAX485MAX485圖2主機(jī)結(jié)構(gòu)框圖系統(tǒng)中每臺從機(jī)都有一個唯一且固定的地址編碼。由于系統(tǒng)的主機(jī)與從機(jī)之間采用半雙工的RS485通信標(biāo)準(zhǔn),所以主機(jī)采用問答式的通信方式,通過不同的地址編碼逐一同從機(jī)通信。作為主機(jī)以命令的方式對下層的從機(jī)統(tǒng)一管理,從機(jī)上傳采集到的溫濕度數(shù)據(jù),被主機(jī)選中的從機(jī)要求上傳溫濕度數(shù)據(jù)。主機(jī)把采集到的溫濕度值通過數(shù)碼管顯示給用戶。如圖3所示,從機(jī)以單片機(jī)為核心,外圍主要包括以下幾個單元電路:SHT11接口電路;看門狗電路;采集器地址選擇開關(guān)電路;RS485總線接口電路。圖3從機(jī)結(jié)構(gòu)框圖本系統(tǒng)中從機(jī)主要完成以下一系列的工作:接收通過RS485總線下傳的命令,啟動傳感器進(jìn)行溫濕度數(shù)據(jù)轉(zhuǎn)換命令,上傳采集到的溫濕度數(shù)據(jù)命令。2系統(tǒng)軟件設(shè)計流程圖2.1主機(jī)軟件設(shè)計流程圖上電初始化發(fā)出采集第一個節(jié)點(diǎn)數(shù)據(jù)命令上電初始化發(fā)出采集第一個節(jié)點(diǎn)數(shù)據(jù)命令若返回數(shù)據(jù)無效,則最多發(fā)三次采集此節(jié)點(diǎn)命令,三次若無效,則采集下一個節(jié)點(diǎn)數(shù)據(jù)有效則顯示采集完所有節(jié)點(diǎn)后重新從第一個節(jié)點(diǎn)開始圖4主機(jī)軟件流程圖主機(jī)軟件編程的基本思路:先對主機(jī)上電初始化,包括看門狗電路,并將波特率設(shè)置為9600bps,然后主機(jī)對第一個節(jié)點(diǎn)發(fā)出數(shù)據(jù)采集命令,若返回數(shù)據(jù)無效,則最多發(fā)三次采集此節(jié)點(diǎn)命令,三次若無效,則采集下一個節(jié)點(diǎn)。當(dāng)所采集的數(shù)據(jù)有效時則通過數(shù)碼管顯示出來。當(dāng)采集完所有節(jié)點(diǎn)后重新從第一個節(jié)點(diǎn)開始采集。流程圖如圖4所示。2.2從機(jī)軟件設(shè)計流程圖從機(jī)軟件編程的基本思路:先對從機(jī)上電初始化,包括看門狗電路,并將波特率設(shè)置為9600bps。然后等待主機(jī)數(shù)據(jù)采集命令,當(dāng)接收到主機(jī)命令后,通過通信協(xié)議發(fā)送數(shù)據(jù)給主機(jī),流程圖如圖5所示。下幾章分別介紹上述每個單元軟件相關(guān)詳細(xì)設(shè)計。3主機(jī)軟件設(shè)計本部分包括數(shù)碼管顯示軟件設(shè)計、看門狗電路軟件設(shè)計及與從機(jī)通信軟件設(shè)計。其中,與從機(jī)通信軟件設(shè)計詳見第五章RS485主從式通信軟件設(shè)計中的主機(jī)部分。3.1數(shù)碼管顯示軟件設(shè)計數(shù)碼管需要顯示的數(shù)據(jù)包括:節(jié)點(diǎn)編號兩位、溫度數(shù)據(jù)三位和濕度數(shù)據(jù)三位。上電初始化等待主機(jī)數(shù)據(jù)采集命令接收到命令后判斷是否是現(xiàn)有節(jié)點(diǎn)發(fā)送數(shù)據(jù)給主機(jī)YN上電初始化等待主機(jī)數(shù)據(jù)采集命令接收到命令后判斷是否是現(xiàn)有節(jié)點(diǎn)發(fā)送數(shù)據(jù)給主機(jī)YN圖5從機(jī)軟件流程圖3.1.1數(shù)碼管數(shù)據(jù)顯示方法用單片機(jī)驅(qū)動LED數(shù)碼管有很多方法,按顯示方式分,有靜態(tài)顯示和動態(tài)顯示。靜態(tài)顯示就是顯示驅(qū)動電路具有輸出鎖存功能,單片機(jī)將所有要顯示的數(shù)據(jù)送出后就不再控制LED,直到下一次顯示時再傳送一次新的顯示數(shù)據(jù)。靜態(tài)顯示的數(shù)據(jù)穩(wěn)定,占用的CPU時間少。靜態(tài)顯示中,每一個顯示器都要占用單獨(dú)的具有鎖存功能的I/O接口,該接口用于筆劃段字型代碼。這樣單片機(jī)只要把要顯示的字形代碼發(fā)送到接口電路,該字段就可以顯示發(fā)送的字形。要顯示新的數(shù)據(jù)時,單片機(jī)在發(fā)送新的字形碼。另一種方法是動態(tài)掃描顯示。動態(tài)掃描方法是用其接口電路把所有顯示器的8個筆畫段A-H同名端連在一起,而每一個顯示器的公共極COM各自獨(dú)立的受I/O線控制。CPU向字段輸出口送出字形碼時,所有顯示器接收到相同的字形碼,但究竟是哪個顯示器亮,則取決于COM段,而這一段是由I/O控制的,由單片機(jī)決定何時顯示哪一位了。動態(tài)掃描用分時的方法輪流控制各個顯示器的COM端,使各個顯示器輪流點(diǎn)亮。在輪流點(diǎn)亮掃描過程中,每位顯示器的點(diǎn)亮?xí)r間極為短暫,但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù)。靜態(tài)顯示雖然數(shù)據(jù)顯示穩(wěn)定,占用很少的CPU時間,但每個顯示單元都需要單獨(dú)的顯示驅(qū)動電路,使用的電路硬件較多;動態(tài)顯示需要CPU時刻對顯示器件進(jìn)行數(shù)據(jù)刷新,顯示數(shù)據(jù)有閃爍感,占用的CPU時間多,但使用的硬件少,能節(jié)省線路板空間。按照硬件電路設(shè)計,數(shù)碼管顯示采用軟件譯碼的動態(tài)掃描方法實現(xiàn)顯示。3.1.2顯示程序流程圖當(dāng)數(shù)字信號送到單片機(jī)后,把溫濕度數(shù)據(jù)通過P0口送給數(shù)碼管,同時,通過P2口輸出動態(tài)掃描碼實現(xiàn)節(jié)點(diǎn)溫濕度數(shù)據(jù)的顯示。其流程圖如圖6所示。DIS指向顯示緩沖區(qū)地址7FHDIS指向顯示緩沖區(qū)地址7FH先點(diǎn)亮最左邊的數(shù)碼管送位控制信號取顯示數(shù)據(jù)查表取字形碼送出一位顯示延時1ms指向下一個緩沖單元最右邊一位顯示嗎?位控制號右移一位圖6顯示程序流程圖3.2看門狗電路軟件設(shè)計本系統(tǒng)采用硬件看門狗,選用X5045。3.2.1X5045工作原理X5045是一種集上電復(fù)位、看門狗、電壓監(jiān)控和串行EEPROM四種功能于一身的可編程控制電路,它有助于簡化應(yīng)用系統(tǒng)的設(shè)計,減少電路板的占用面積,提高可靠性。(1)上電復(fù)位X5045加電時會激活其內(nèi)部的上電復(fù)位電路,從而使RESET引腳有效。該信號可避免系統(tǒng)微處理器在電壓不足或振蕩器未穩(wěn)定的情況下工作。當(dāng)VCC超過器件的限值時,電路將在200ms(典型)延時后釋放RESET以允許系統(tǒng)開始工作。(2)低電壓檢測工作時,X5045對VCC電平進(jìn)行監(jiān)測,若電源電壓跌落至預(yù)置的最小以下時,系統(tǒng)即確認(rèn)RESET,從而避免微處理器在電源失效或斷開的情況下工作。當(dāng)RESET被確認(rèn)后,該RESET信號將一直保持有效,直到電壓跌到低于1V。而當(dāng)VCC返回并超過限值達(dá)200ms時,系統(tǒng)重新開始工作。(3)看門狗定時器看門狗定時器的作用是通過監(jiān)視WDI輸入來監(jiān)視微處理器是否激活。由于微處理器必須周期性的觸發(fā)CS/WDI引腳以避免RESET信號激活而使電路復(fù)位,所以CS/WDI引腳必須在看門狗超時時間終止之前受到由高至低信號的觸發(fā)。3.2.2X5045看門狗軟件設(shè)計X5045芯片內(nèi)包含有一個看門狗定時器,可通過軟件預(yù)置系統(tǒng)的監(jiān)控時間??撮T狗定時器的預(yù)置時間是通過X5045的狀態(tài)寄存器的相應(yīng)位來設(shè)定的。X5045狀態(tài)寄存器共有6位有含義,其中WD1、WD0和看門狗電路有關(guān),其余位和EEPR0M的工作設(shè)置有關(guān)。WD1=0,WD0=0,預(yù)置時間為1.4s。WD1=0,WD0=1,預(yù)置時間為0.6s。WD1=1,WD0=0,預(yù)置時間為0.2s。WD1=1,WD0=1,禁止看門狗工作。硬件看門狗的流程如圖7所示。圖7看門狗喂狗程序流程圖實踐證明,采用該電路的數(shù)據(jù)采集的性能穩(wěn)定可靠。X5045看門狗電路具有多功能、反應(yīng)速度快、抗干擾能力強(qiáng)等特點(diǎn)??梢哉fX5045是一種性價比較高的電路芯片,非常適用于智能儀器、實時控制、微型化等場合。4從機(jī)軟件設(shè)計從機(jī)軟件設(shè)計包括溫濕度采集軟件設(shè)計、看門狗軟件設(shè)計及與主機(jī)通信軟件設(shè)計。其中看門狗軟件設(shè)計同主機(jī)看門狗軟件設(shè)計,與主機(jī)通信軟件設(shè)計見第五章RS485主從式通信軟件設(shè)計中的從機(jī)軟件設(shè)計。4.1溫濕度采集軟件設(shè)計4.1.1SHT11簡介SHT11是個芯片,它由標(biāo)準(zhǔn)數(shù)字輸出的濕度和溫度傳感器模塊組成。該芯片包括兩個已校準(zhǔn)的微型溫度和濕度傳感器,14位的A/D轉(zhuǎn)換器,放大器,線性校準(zhǔn)電路和數(shù)字串行接口。一體化的結(jié)構(gòu)使它具有質(zhì)量好,反應(yīng)快,抗干擾,價格低等特點(diǎn)。(1)I/O腳(雙向2線接口):串行時鐘輸入(SCK):串行時鐘輸入應(yīng)用于母機(jī)與子機(jī)(SHT11)之間的同步通訊,串行數(shù)據(jù)(DATA)串行數(shù)據(jù)三態(tài)針用于芯片讀入與輸出數(shù)據(jù),串行數(shù)據(jù)必須在下降沿后更新在串行時鐘上升沿有效,需要外部上拉電阻使信號升高,在微控制器I/O電路中常使用上拉電阻。初始化傳輸時,應(yīng)發(fā)出“傳輸開始”命令。串行數(shù)據(jù)(DATA):DATA三態(tài)門用于數(shù)據(jù)的讀取。DATA在SCK時鐘下降沿之后改變狀態(tài),并僅在SCK時鐘上升沿有效。數(shù)據(jù)傳輸期間,在SCK時鐘高電平時DATA必須保持穩(wěn)定。為避免信號沖突,微處理器應(yīng)驅(qū)動DATA在低電平需要一個外部的上拉電阻將信號提拉至高電平上拉電阻,通常已包含在微處理器的I/O電路中。后一個命令順序包含三個地址位(目前只支持“000”)和5個命令位,通過DATA腳的ACK位處于低電位表示SHT11正確收到命令。(2)連接復(fù)位順序當(dāng)使DATA線處于高電平時,觸發(fā)SCK9次以上(含9次),則必須隨后發(fā)一個前述的“傳輸開始”命令。(3)CRC-8校驗數(shù)字信號的整個傳輸過程由8bit校驗來確保,任何錯誤數(shù)據(jù)將被檢測到并清除。(4)測量分辨率默認(rèn)的測量分辨率分別為14bit(溫度)、12bit(濕度),也可分別降至12bit和8bit。通常在高速或超低功耗的應(yīng)用中采用該功能。4.1.2SHT11通信協(xié)議SHT11有其固定的協(xié)議。SHT11的命令為一個字節(jié),高3位為器件地址位,由于不是標(biāo)準(zhǔn)的I2C總線,SHT11命令的地址位現(xiàn)在只有000可用,低5位為實際的命令代碼,如表1所示:表1命令代碼命令代碼預(yù)留000x溫度測量00011濕度測量00101讀狀態(tài)寄存器00111寫狀態(tài)寄存器00110預(yù)留0101x-1110x軟復(fù)位、復(fù)位接口、清空狀態(tài)寄存器,即清空為默認(rèn)值下一次命令前等待至少11ms11110其中熱啟動命令將使SHT11進(jìn)行復(fù)位,不但使通信接口復(fù)位,同時清除狀態(tài)寄存器內(nèi)容為默認(rèn)值;SHT11熱啟動過程所需時間最少為11ms,所以熱啟動以后需要等待11ms以上才可以進(jìn)行下一步操作。在發(fā)送每一個命令之前需要有一個傳輸初始化信號,即一個傳輸起始序列:由主機(jī)拉低DATA線,在DATA為低電平期間,SCK線發(fā)送一個高一低一高的序列。在一個字節(jié)發(fā)送結(jié)束之后主機(jī)需要釋放DATA線,因為在下一個SCK信號周期,SHT11將會向DATA線發(fā)送一個握手應(yīng)答信號表示正確接收了一個字節(jié)。SHT11在完成一次濕度或者溫度測量之后會向DATA線發(fā)送一個低電平信號,通知主機(jī)已經(jīng)可以讀取數(shù)據(jù)在本系統(tǒng)中溫度和濕度測量分別設(shè)置為14位和12位,SHT11的完成一次12位的AD轉(zhuǎn)換約55ms,14位的AD轉(zhuǎn)換約200ms。在從機(jī)對SHT11進(jìn)行讀操作時,類似于寫操作的時序,但是讀操作有兩種情況,在讀取SHT11的轉(zhuǎn)換結(jié)果、狀態(tài)寄存器的時候在讀完每一個字節(jié)之后都需要主機(jī)在第9個SCK周期向DATA線發(fā)送一個低電平作為應(yīng)答信號才可以讀取接下來的數(shù)據(jù);在讀取8位CRC校驗碼時不需要從機(jī)發(fā)送應(yīng)答信號。此外,在每次對SHT11操作之前或者通信出現(xiàn)錯誤時都需要對SHT11進(jìn)行通信復(fù)位,與其建立通信,通信復(fù)位時序為:DATA線為高電平,并且維持9個SCK周期以上。4.1.3SHT11通信軟件包設(shè)計為了保持程序的兼容性,所有關(guān)于SHT11的函數(shù)都封裝在SHT11.c文件中,那么在主程序文件中把這些函數(shù)聲明為外部函數(shù)就可以方便的調(diào)用,而且只要在硬件相關(guān)變量的定義中稍作改動就可以新的硬件平臺上使用。軟件包設(shè)計主要考慮到了可重用性,編寫4個底層函數(shù):從SHT11讀取一字節(jié)函數(shù)chars_read_byte(unsignedcharack),這個函數(shù)返回值為所讀取的數(shù)據(jù),參數(shù)ack表示該次讀取是否需要主機(jī)發(fā)送應(yīng)答信號;向SHT11發(fā)送一個字節(jié)的函數(shù)chars_write_byte(unsignedcharvalue),參數(shù)value就是所要發(fā)送的數(shù)據(jù)或者命令;傳輸初始化函數(shù)voids_transstart(void),需要在每次調(diào)用s_write_byte函數(shù)之前調(diào)用通信復(fù)位函數(shù)voids_connectionreset(void)。下面主要講述一下軟件包中兩個最主要的上層函數(shù):測量和計算函數(shù)。chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode)為測量函數(shù),該函數(shù)所完成的工作就是向SHT11發(fā)送測量命令,等待測量結(jié)束之后讀取測量結(jié)果。其中參數(shù)表中的mode參數(shù)用以確定所要測量的內(nèi)容,如果要求SHT11測量溫度那么在調(diào)用該函數(shù)的時候mode設(shè)為00000011即0x3,測量濕度則設(shè)為00000101即0x5。這樣可以精簡代碼,提高代碼的效率。轉(zhuǎn)換結(jié)果為2字節(jié),p_value存儲單元存放高字節(jié),p_value+1存儲單元存放低字節(jié),符合int型變量的存儲格式,這樣可以把兩個字節(jié)的測試結(jié)果作為int型數(shù)據(jù)處理。從SHT11讀取的兩字節(jié)轉(zhuǎn)換結(jié)果并不是最后的溫濕度值,還需要經(jīng)過換算。其中溫度的結(jié)果通過T=d1+d2*RES_T換算得到的。其中d1為一個與供電電壓有關(guān)的常量。在5V供電的情況下取-40;d2為一個與AD轉(zhuǎn)換精度有關(guān)的常量,在14位情況下取0.01,12位情況下取0.04。RES_T為得到的16位int型溫度轉(zhuǎn)換結(jié)果。而相對濕度結(jié)果也需要經(jīng)過下面的公式換算:RH=C1+C2*RES_RH+C3*RES_RH2式中C1、C2、C3均為與AD轉(zhuǎn)換精度有關(guān)的常量。在12位采樣情況下分別為-4,0.0405、-2.8*10-6,在8位采樣情況下分別為-4,0.648,-7.2*10-4,RES_RH為從SHT11得到的濕度轉(zhuǎn)換結(jié)果,經(jīng)過上式換算得到的濕度值是在溫度為25攝氏度的情況下的值。4.1.4溫濕度采集程序流程圖編寫上述關(guān)于SHT11的軟件包之后,可以方便供主程序調(diào)用,主程序所要做的就是按照SHT11的操作順序依次調(diào)用軟件包函數(shù)即可。因為在SHT11轉(zhuǎn)換結(jié)束之后會自動發(fā)送低電平然后接著是數(shù)據(jù),所以在程序等待DATA低電平的過程中不能執(zhí)行其他的操作。所以在如圖8的程序流程中,程序禁止中斷,而且中間不穿插任何其他操作,以保證對SHT11的操作能夠正確完成。開始 開始 讀取濕度轉(zhuǎn)換結(jié)果通信復(fù)位讀取濕度轉(zhuǎn)換結(jié)果通信復(fù)位換算溫濕度值N發(fā)送溫度測量命令換算溫濕度值N發(fā)送溫度測量命令YDATA是否為低YDATA是否為低發(fā)送溫濕度值讀取溫度轉(zhuǎn)換結(jié)果發(fā)送溫濕度值讀取溫度轉(zhuǎn)換結(jié)果結(jié)束發(fā)濕度測量命令結(jié)束發(fā)濕度測量命令NNYDATA是否為低YDATA是否為低圖8溫濕度測量程序流程圖5RS485主從式通信軟件設(shè)計各個從機(jī)能夠連接到RS485總線網(wǎng)絡(luò)上的前提是從機(jī)上RS485總線接口電路的實現(xiàn)。RS485是應(yīng)遠(yuǎn)距離數(shù)字通信的需要而研究得到的一種支持多節(jié)點(diǎn)、遠(yuǎn)距離和接收靈敏度高的總線標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)是一種采用平衡傳輸方式的串行接口標(biāo)準(zhǔn),由于采用平衡發(fā)送和差分接收,因此具有很高的抗共模干擾能力。接收器具有很高的靈敏度,能監(jiān)測到低達(dá)±200mV的電壓,使傳輸數(shù)據(jù)能在千米以外得到恢復(fù)。當(dāng)數(shù)據(jù)傳輸速率在100kbps時,傳輸距離可達(dá)1200米若傳輸速率下降,則傳送距離可以更遠(yuǎn)。該標(biāo)準(zhǔn)允許一對雙絞線上一個發(fā)送器驅(qū)動多個負(fù)載設(shè)備,因此使用RS485總線僅用一對雙絞線就能實現(xiàn)多站聯(lián)網(wǎng)構(gòu)成分布式系統(tǒng)。它以設(shè)備簡單、價格低廉以及能夠進(jìn)行長距離可靠通信等特點(diǎn),在各種工業(yè)現(xiàn)場控制系統(tǒng)中得到了廣泛的應(yīng)用。5.1通信協(xié)議為了使主機(jī)和從機(jī)之間能夠正確通信,減少傳輸錯誤必須制定雙方共同遵守的協(xié)議,即通信協(xié)議。通信協(xié)議如下:數(shù)據(jù)格式:8個數(shù)據(jù)位,無校驗位,1個停止位通訊速率:9600bps命令格式:主機(jī)發(fā)送:第1字節(jié):AEH第2字節(jié):溫濕度采集點(diǎn)的地址(站址范圍:00H─63H)從機(jī)回應(yīng):第1字節(jié):9XH第2字節(jié):9XH(X=溫度十位十進(jìn)制碼)第3字節(jié):9XH(X=溫度個位十進(jìn)制碼)第4字節(jié):9XH(X=溫度小數(shù)十進(jìn)制碼)第5字節(jié):9XH(X=濕度十位十進(jìn)制碼)第6字節(jié):9XH(X=濕度個位十進(jìn)制碼)第7字節(jié):9XH(X=濕度小數(shù)十進(jìn)制碼)第8字節(jié):9XH(X=以上7字節(jié)低4位累加和)當(dāng)溫度為零下時,第2、3、4字節(jié)定義如下:第2字節(jié):9XH(X=負(fù)溫度符號)第3字節(jié):9XH(X=溫度十位十進(jìn)制碼)第4字節(jié):9XH(X=溫度個位十進(jìn))其相關(guān)解釋如下:(1)首先使所有從機(jī),處于只接收命令的監(jiān)聽狀態(tài)。(2)主機(jī)先向從機(jī)發(fā)送命令地址信息,共有8位為地址。主機(jī)發(fā)送的第一個字節(jié)地址可以擴(kuò)充,這樣就可以為單片機(jī)內(nèi)存擴(kuò)展,以便以后更方便。其中溫度為負(fù)值時,用補(bǔ)碼的方式采集溫度濕度的地址。(4)通信的主從機(jī)之間必須以相同的幀格式及波特率進(jìn)行通信。通信協(xié)議中,幀格式和波特率的選擇,它關(guān)系到通信的效率,傳輸?shù)木嚯x和通信的可靠性,是串行通信中的一個關(guān)鍵參數(shù)。本系統(tǒng)采用幀格式為:1位起始位,1位停止位,8位數(shù)據(jù)位。根據(jù)通信距離和通信速率的要求,綜合考慮,在實驗中,將波特率設(shè)置為9600bps。5.2通信規(guī)則由于RS-485通訊是一種半雙工通訊,發(fā)送和接收共用同一物理信道。在任意時刻只允許一臺單機(jī)處于發(fā)送狀態(tài)。因此要求應(yīng)答的單機(jī)必須在偵聽到總線上呼叫信號已經(jīng)發(fā)送完畢,并且沒有其它單機(jī)發(fā)出應(yīng)答信號的情況下。才能應(yīng)答。半雙工通訊對主機(jī)和從機(jī)的發(fā)送和接收時序有嚴(yán)格的要求。如果在時序上配合不好,就會發(fā)生總線沖突,使整個系統(tǒng)的通訊癱瘓,無法正常工作。要做到總線上的設(shè)備在時序上的嚴(yán)格配合,必須要遵從以下幾項原則:(1)復(fù)位時,主從機(jī)都應(yīng)該處于接收狀態(tài)。另外,在主從機(jī)軟件上也應(yīng)附加若干處理措施,如:上電時或正式通訊之前,對串行口做幾次空操作,清除端口的非法數(shù)據(jù)和命令。(2)控制端RE、DE的信號的有效脈寬應(yīng)該大于發(fā)送或接收一幀信號的寬度。在RS-485半雙工通訊中,必須對控制信號進(jìn)行切換??刂菩盘柡螘r為高電平,何時為低電平,一般以單片機(jī)的TI,RI信號作參考。發(fā)送時,檢測TI是:建立起來,當(dāng)TI為高電平后關(guān)閉發(fā)送功能轉(zhuǎn)為接收功能。接收時,檢測RI是否建立起來,當(dāng)RI為高電平后。接收完畢,又可以轉(zhuǎn)為發(fā)送。單片機(jī)在串行口發(fā)送數(shù)據(jù)時,只要將8位數(shù)據(jù)位傳送完畢,TI標(biāo)志即建立,但此時應(yīng)發(fā)送的第九位數(shù)據(jù)位(若發(fā)送地址幀時)和停止位尚未發(fā)出。如果在這是關(guān)閉發(fā)送控制。勢必造成發(fā)送幀數(shù)據(jù)不完整。如果單片機(jī)多機(jī)通訊采用較高的波特率,幾條操作指令的延時就可能超過2位(或1位)數(shù)據(jù)的發(fā)送時間。問題或許不會出現(xiàn)。但是如果采用較低波特率,單靠幾條操作指令的延時遠(yuǎn)遠(yuǎn)不夠,問題就明顯地暴露出來。接收數(shù)據(jù)時同樣如此,單片機(jī)在接收完8個數(shù)據(jù)位后就建立起RI信號,但此時還未接收到第九位數(shù)據(jù)位(若接收地址幀時)和停止位。所以,接收端必須延時大于2位數(shù)據(jù)位的時間(1位數(shù)據(jù)位時間=1,波特率),再作應(yīng)答,否則會發(fā)生總線沖突。(3)總線上所連接的各單機(jī)的發(fā)送控制信號在時序上完全隔開,為了保證發(fā)送和接收信號的完整和正確,避免總線上信號的碰撞。對總線的使用權(quán)必須進(jìn)行分配才能避免競爭,連接到總線上的單機(jī),其發(fā)送控制信號在時間上要完全隔離??傊?,發(fā)送和接收控制信號應(yīng)該足夠?qū)?,以保證完整地接收一幀數(shù)據(jù),任意兩個單機(jī)的發(fā)送控制信號在時問上完全分開,避免總線爭端。5.3主機(jī)通信軟件設(shè)計主機(jī)按照通信協(xié)議發(fā)出對某一節(jié)點(diǎn)的溫濕度數(shù)據(jù)采集命令,軟件流程圖如圖9所示。從第一個節(jié)點(diǎn)開始采集,先發(fā)出采集第一個節(jié)點(diǎn)數(shù)據(jù)命令,最多發(fā)三次,如果還沒得到此節(jié)點(diǎn)有效數(shù)據(jù),將采集下一個節(jié)點(diǎn),直到所有節(jié)點(diǎn)都采集完成,然后重新從第一個節(jié)點(diǎn)開始。發(fā)出采集第一個節(jié)點(diǎn)數(shù)據(jù)采集命令接收等待節(jié)點(diǎn)數(shù)據(jù)是否有效是否夠三次采集下一個節(jié)點(diǎn)所有節(jié)點(diǎn)是否采集完YNY發(fā)出采集第一個節(jié)點(diǎn)數(shù)據(jù)采集命令接收等待節(jié)點(diǎn)數(shù)據(jù)是否有效是否夠三次采集下一個節(jié)點(diǎn)所有節(jié)點(diǎn)是否采集完YNYNNY圖9主機(jī)通信軟件流程圖5.4從機(jī)通信軟件設(shè)計從機(jī)上電后一直處于接收狀態(tài),當(dāng)接收到第一個字節(jié)數(shù)據(jù)即首先判斷命令是否有效,無效則丟掉此數(shù)據(jù)重新接收;有效則接收第二個字節(jié)數(shù)據(jù)。同時判斷此字節(jié)數(shù)據(jù)是否與從機(jī)地址相同,若不同則丟掉這兩個字節(jié)數(shù)據(jù)并重新接收;相同則此為采集第一節(jié)點(diǎn)有效命令。此時,從機(jī)開始啟動溫濕度數(shù)據(jù)采集,同時按照協(xié)議格式發(fā)送給主機(jī)。然后返回等待接收命令狀態(tài)。整個流程圖如圖10所示。等待接收第一個字節(jié)數(shù)據(jù)命令是否有效等待接收第一個字節(jié)數(shù)據(jù)命令是否有效接收第二個字節(jié)數(shù)據(jù)地址是否與節(jié)點(diǎn)地址相同主機(jī)命令對此節(jié)點(diǎn)有效,啟動數(shù)據(jù)采集,并將其發(fā)送給主機(jī)NYYN圖10從機(jī)通信軟件流程圖結(jié)束語到此為止,基于SHT1x的溫濕度采集單元軟件設(shè)計已經(jīng)完成。本系統(tǒng)最大的特點(diǎn)是測量準(zhǔn)確、結(jié)構(gòu)簡單、調(diào)試使用方便、性價比高。實驗證明,該裝置運(yùn)行可靠,測量誤差小,具有很好的應(yīng)用效果,因此可以廣泛應(yīng)用于工業(yè)環(huán)境中。畢業(yè)設(shè)計是大學(xué)學(xué)習(xí)的最后一門課,是對大學(xué)所學(xué)知識的一個總結(jié)和拓展,所以做好了可以是自己學(xué)到很多的東西。經(jīng)過一個學(xué)期的學(xué)習(xí)、思考和設(shè)計。我從中學(xué)到了好多好多的東西:大學(xué)四年的學(xué)習(xí)得到了很好的總結(jié),理論知識也得到了很好的鞏固和升華,理論很好的應(yīng)用到了實踐上,是理論與實踐結(jié)合,從而提高了我的理論實踐水平,進(jìn)而使我的科技素質(zhì)得到了提高。在整個設(shè)計的過程中除了我的科學(xué)知識得到了提高外,我的個人素質(zhì)也得到了很大的提高。畢業(yè)設(shè)計要求要有嚴(yán)謹(jǐn)、執(zhí)著的態(tài)度,積極、耐心、細(xì)致、謙虛的心態(tài),還要求有較高的團(tuán)隊合作精神。設(shè)計期間我遇到了很多的問題,經(jīng)過自己的查找資料、老師同學(xué)的幫助最后都得到很好的解結(jié);這段經(jīng)歷使我學(xué)到了和多過于為人處事的知識,這將在我以后的工作生涯中受益匪淺,為我以后的職業(yè)生涯打下了很堅實的基礎(chǔ)。但是,由于時間問題以及所學(xué)知識有限不能完成達(dá)到預(yù)期所要達(dá)到的要求,然而,這給我了一個啟示,就是讓我懂得以后的學(xué)習(xí)、生活中應(yīng)該注意些什么,應(yīng)該補(bǔ)充些什么知識。 參考文獻(xiàn)[1]李朝青.單片機(jī)原理與接口技術(shù).北京:北京航空航天大學(xué)出版社,1995年7月[2]肖洪兵等編著.跟我學(xué)單片機(jī).北京:機(jī)械工業(yè)出版社,1997年9月[3]王福瑞.單片微機(jī)測控系統(tǒng)設(shè)計大全.北京:北京航空航天大學(xué)出版社1999年7月[4]王忠誠.電子電路用元器件入門教程.北京:電子工業(yè)出版社,2006年5月[5]劉義濤.protelDXP設(shè)計及應(yīng)用教程.北京:清華大學(xué)出版社,2000年6月[6]何立民.單片機(jī)應(yīng)用文集.北京:北京航空航天大學(xué)出版社,1994年6月[7]周興華編.手把手教你學(xué)單片機(jī).北京:北京航空航天大學(xué)出版社,1993年1月[8]胡宴如,耿蘇燕.模擬電子技術(shù).北京:機(jī)械工業(yè)出版社,1999年9月[9]齊秋群.MOTOROLA單片機(jī)實用技巧集萃.北京:電子工業(yè)出版社,1997年2月[10]張明波編.數(shù)字電子技術(shù).北京:中國電力出版社,2003年10月[11]何立明.單片機(jī)應(yīng)用系統(tǒng)抗干擾技術(shù).北京:北京航空航天大學(xué)出版社,2000年[12]王幸之等編.單片機(jī)應(yīng)用系統(tǒng)抗干擾技術(shù).北京:北京航空航天大學(xué)出版社,2000年[13]王秀珍等編.微型計算機(jī)A/D,D/A轉(zhuǎn)換接口技術(shù)及數(shù)據(jù)采集系統(tǒng).北京:清華大學(xué)出版社,2004[14]涂時亮等編.單片微機(jī)軟件設(shè)計技術(shù).重慶:科學(xué)技術(shù)文獻(xiàn)出版社重慶分社,2003附錄(1)看門狗程序Main(){

WDTRST=0x1E;

WDTRST=0xE1;

//初始化看門狗。

While(1)

{

WDTRST=0x1E;

WDTRST=0xE1;

//喂狗指令

}}(2)溫濕度采集程序#include<AT89s53.h>#include<intrins.h>#include<math.h>#include<stdio.h>typedefunion{unsignedinti;floatf;}value;enum{TEMP,HUMI};#define DATA P1_1#define SCK P1_0#definenoACK0#defineACK1#defineSTATUS_REG_W0x06/*00000110*/#defineSTATUS_REG_R0x07/*00000111*/#defineMEASURE_TEMP0x03/*00000011*/#defineMEASURE_HUMI0x05/*00000101*/#defineRESET0x1e/*00011110*/chars_write_byte(unsignedcharvalue){unsignedchari,error=0;for(i=0x80;i>0;i/=2){if(i&value)DATA=1;elseDATA=0;SCK=1;_nop_();_nop_();_nop_(); SCK=0;}DATA=1;SCK=1;error=DATA;SCK=0;returnerror;}chars_read_byte(unsignedcharack){unsignedchari,val=0;DATA=1;for(i=0x80;i>0;i/=2){SCK=1;if(DATA)val=(val|i);SCK=0; }DATA=!ack;SCK=1;_nop_();_nop_();_nop_();SCK=0; DATA=1;returnval;}voids_transstart(void){DATA=1;SCK=0;_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1; _nop_();SCK=0; }voids_connectionreset(void){unsignedchari;DATA=1;SCK=0;for(i=0;i<9;i++){SCK=1;SCK=0;}s_transstart();}chars_softreset(void){unsignedcharerror=0;s_connectionreset();error+=s_write_byte(RESET);returnerror;}chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode){unsignederror=0;unsignedinti;s_transstart();switch(mode){caseTEMP :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;if(DATA)error+=1;*(p_value)=s_read_byte(ACK);//readthefirstbyte(MSB)*(p_value+1)=s_read_byte(ACK);//readthesecondbyte(LSB)*p_checksum=s_read_byte(noACK);//readchecksumreturnerror;}constfloatC2=+0.0405;//for12BitconstfloatC3=-0.0000028;

溫馨提示

  • 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

提交評論