倉庫溫濕度的監(jiān)測系統(tǒng)設(shè)計(jì)_第1頁
倉庫溫濕度的監(jiān)測系統(tǒng)設(shè)計(jì)_第2頁
倉庫溫濕度的監(jiān)測系統(tǒng)設(shè)計(jì)_第3頁
倉庫溫濕度的監(jiān)測系統(tǒng)設(shè)計(jì)_第4頁
倉庫溫濕度的監(jiān)測系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

倉庫溫濕度的監(jiān)測系統(tǒng)設(shè)計(jì)1緒論1.1選題背景倉庫的日常管理直接影響到儲備物資的使用壽命和工作可靠性,而倉庫管理的主要問題就是就是加強(qiáng)倉庫內(nèi)溫度和濕度的監(jiān)測與控制工作。傳統(tǒng)的方法是用溫度表、毛發(fā)濕度表、雙金屬式測量計(jì)和濕度試紙等測試器材,通過人工進(jìn)行檢測,對不符合溫度和濕度要求的庫房進(jìn)行通風(fēng)、去濕和降溫等處理。顯然這種人工檢測控制的方法費(fèi)時(shí)費(fèi)力,且測試的溫度及濕度誤差很大,隨機(jī)性很高,這會(huì)導(dǎo)致我們在倉庫的管理上出現(xiàn)很多的不必要性。對此我們迫切需要一種測量準(zhǔn)確的溫濕度測量控制器來幫助我們更好的完成對倉庫的日常管理,而基于電子方面的溫濕度測量控制器就是我們最好的選擇。1.2基本功能及技術(shù)要求基本功能檢測溫度、濕度顯示溫度、濕度過限報(bào)警控制溫濕度1.2.2主要技術(shù)參數(shù)溫度檢測范圍:-30℃-50℃測量精度:0.5℃濕度檢測范圍:0%-100%RH檢測精度:1%RH顯示方式:溫度值和濕度值在一塊顯示器上顯示。報(bào)警方式:蜂鳴音報(bào)警和LED閃爍報(bào)警。1.3設(shè)計(jì)的重點(diǎn)與難點(diǎn)本次系統(tǒng)設(shè)計(jì)的任務(wù)是設(shè)計(jì)一個(gè)倉庫溫濕度監(jiān)測系統(tǒng),它能夠?qū)}庫的溫濕度進(jìn)行實(shí)時(shí)檢測,測量時(shí)能夠清晰穩(wěn)定的顯示出檢測結(jié)果,并且能夠在倉庫溫濕度超過我們所設(shè)限度時(shí),控制倉庫的溫濕度。設(shè)計(jì)的難點(diǎn):溫濕度控制模塊設(shè)計(jì)顯示電路模塊設(shè)計(jì)流程圖及程序的設(shè)計(jì)2系統(tǒng)總體分析與設(shè)計(jì)2.1系統(tǒng)總體方案溫度監(jiān)控:對倉庫溫度進(jìn)行測量,并通過控制溫度達(dá)到倉庫的最佳溫度。濕度監(jiān)控:對倉庫濕度進(jìn)行測量,并通過控制濕度達(dá)到倉庫的最佳濕度。控制處理:當(dāng)溫濕度值越過限度時(shí)報(bào)警,根據(jù)報(bào)警信號發(fā)出報(bào)警,并且通過溫濕度控制模塊采取一定手段控制溫濕度。顯示:顯示模塊顯示倉庫實(shí)時(shí)的溫濕度。2.2系統(tǒng)實(shí)施措施實(shí)際倉庫溫度與給定界限比較,執(zhí)行溫度調(diào)控措施。實(shí)際倉庫濕度與給定界限比較,執(zhí)行濕度調(diào)控措施。越限報(bào)警:當(dāng)溫濕度越限時(shí),系統(tǒng)通過蜂鳴器報(bào)警。顯示:使用戶能夠?qū)崟r(shí)觀測倉庫溫濕度,本設(shè)計(jì)用的是LCD1602顯示。2.3系統(tǒng)組成倉庫溫濕度的監(jiān)測系統(tǒng)以89C51單片機(jī)作為中央控制裝置,SHT10溫濕度傳感器模塊,升溫設(shè)備,降溫設(shè)備,加濕設(shè)備,排潮設(shè)備,鍵盤顯示模塊,報(bào)警模塊等組成。各模塊功能如下:89C51作為中央控制芯片裝置,負(fù)責(zé)整個(gè)系統(tǒng)的中心運(yùn)算和控制,協(xié)調(diào)系統(tǒng)的各個(gè)模塊工作。顯示模塊用液晶顯示器LCD1602顯示實(shí)時(shí)溫濕度。溫濕度傳感器:采用的是SHT10溫濕度傳感器采集倉庫的溫濕度,簡單,方便,直觀。升溫設(shè)備:負(fù)責(zé)系統(tǒng)的溫度上升控制工作。降溫設(shè)備:負(fù)責(zé)系統(tǒng)的溫度下升控制工作。噴霧設(shè)備:負(fù)責(zé)系統(tǒng)的加濕工作。排潮設(shè)備:負(fù)責(zé)系統(tǒng)的去濕工作。蜂鳴器模塊:負(fù)責(zé)系統(tǒng)的報(bào)警功能。如果當(dāng)前的溫度超過用戶設(shè)定的界限值時(shí)系統(tǒng)將自動(dòng)報(bào)警音效模塊發(fā)出報(bào)警聲,通知用戶采取相應(yīng)的措施。系統(tǒng)框圖如圖2.3-1所示:AT89C51AT89C51SHT10溫濕度傳感器溫濕度控制系統(tǒng)矩陣鍵盤報(bào)警電路LCD1602圖2.3-1系統(tǒng)框圖3系統(tǒng)硬件設(shè)計(jì)3.1最小系統(tǒng)設(shè)計(jì)3.1.1最小系統(tǒng)芯片選擇硬件系統(tǒng)是應(yīng)用系統(tǒng)的基礎(chǔ)、軟件系統(tǒng)設(shè)計(jì)的依據(jù),而硬件系統(tǒng)的核心就是主控芯片。我考慮了多種芯片,根據(jù)系統(tǒng)的總體功能和運(yùn)行速度及其每個(gè)器件的性價(jià)比等因素考慮,最終選定了ATMEL公司的AT89C51為本次系統(tǒng)設(shè)計(jì)的主機(jī),它滿足本次設(shè)計(jì)方案措施的要求而且設(shè)計(jì)方便,不需要再存儲擴(kuò)展。89C51在工業(yè)應(yīng)用方面有許多明顯的特點(diǎn),它作為一個(gè)8位的CPU,具有靈活方便的8位總線外圍支持器擴(kuò)展功能和快速的應(yīng)用數(shù)據(jù)處理能力,使用非常方便。由于電子集成技術(shù)的飛速發(fā)展,許多常用的輸入輸出控制模塊都制作在同一塊硅片上,大大地方便靈活了外部連線,增強(qiáng)了系統(tǒng)的速度和穩(wěn)定性,這使得它非常適合于在工業(yè)環(huán)境下使用,總的來說89C51系統(tǒng)的CPU具有體積小,重量輕,抗干擾能力強(qiáng),售價(jià)低,使用方便等特點(diǎn)。89C51芯片簡介及引腳介紹[1]89C51是Intel公司于80年代初推出的一種8位嵌入式微控制器。其內(nèi)部數(shù)據(jù)總線為8位,外部數(shù)據(jù)總線為8位。89C51單片機(jī)引腳采用40雙列直插式封裝結(jié)構(gòu),引腳功能如下所示:VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(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門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號和控制信號。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下所示:P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時(shí)器0外部輸入)P3.5T1(記時(shí)器1外部輸入)P3.6/WR(外部數(shù)據(jù)存儲器寫選通)P3.7/RD(外部數(shù)據(jù)存儲器讀選通)RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時(shí),這兩次有效的/PSEN信號將不出現(xiàn)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。其引腳圖如圖3.1-1所示:圖3.1.2-1AT89C51單片機(jī)引腳AT89C51CPU中的主要組件AT89C51CPU中的主要組件有:特殊功能寄存器、高速寄存器陣列、寄存器控制器和算術(shù)邏輯單元。它與外部通訊是通過特殊功能寄存器或存儲器、控制器進(jìn)行的。此外,它還可以通過特殊功能寄存器直接控制A/D、I/O、PWM、串行口等部件的有效運(yùn)行。最小系統(tǒng)[2]AT89C51工作時(shí)所需的時(shí)鐘可通過其XTALL輸入引腳由外部輸入,也可采用芯片內(nèi)部的振蕩器。其工作頻率為6~12MHz,在本系統(tǒng)中采用11.0592MHz頻率。最小系統(tǒng)圖如圖3.1-2所示:圖3.1.4-1最小系統(tǒng)圖3.2溫濕度傳感器模塊設(shè)計(jì)3.2.1溫濕度傳感器的選擇本次系統(tǒng)設(shè)計(jì)考慮了兩種方案:第一種是采用AD590溫度傳感器和HS1100濕度傳感器共同完成對倉庫溫濕度的采集,第二種是采用最新型的SHT10溫濕度傳感器完成對倉庫溫濕度的采集。SHT10溫濕度傳感器采用CMOS過程微加工專利技術(shù)(CMOSenstechnology),確保產(chǎn)品具有極高的可靠性和出色的長期穩(wěn)定性,整個(gè)傳感器組件采用單芯片無縫結(jié)合,且溫度和濕度可以同時(shí)采集,使得該產(chǎn)品具有功耗低、反應(yīng)快、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。相對于AD590和HS1100來說,這種新型的傳感器更加符合本次設(shè)計(jì),所以我選擇了第二種方案。SHT10溫濕度傳感器介紹SHT10溫濕度傳感器是Sensirion溫濕度傳感器家族的一員,傳感器由濕度傳感器,溫度傳感器,校準(zhǔn)存儲器,14位A/D轉(zhuǎn)換器,信號放大器和I2C總線接口構(gòu)成;它是一種將傳感元件和信號處理電路集成在一塊微型電路板上,輸出完全標(biāo)準(zhǔn)的數(shù)字信號的一種新型溫濕度傳感器。其外形實(shí)物圖如圖3.2.2-1所示:圖3.2.2-1SHT10外形實(shí)物總的來說,它具有以下特點(diǎn):相對溫度和濕度的一體測量;精確露點(diǎn)測量;全量程的標(biāo)定,不需要重新標(biāo)定就可以互換使用;兩線制的數(shù)字接口,具有最簡單的系統(tǒng)集成和較低的價(jià)格;超小尺寸(7.5×5×2.5mm);高可靠性(工業(yè)CMOS工藝);具有長期穩(wěn)定性;基于請求式的檢測,能耗很低;具有濕度傳感器元件的自檢測能力;傳感器元件加熱應(yīng)用,具有極高的精度和穩(wěn)定性。技術(shù)參數(shù)如下所示:濕度測量范圍:0~100%RH;濕度測量范圍:-40~+123.8℃;濕度測量精度:±4.5%RH;溫度測量精度:±0.5℃;響應(yīng)時(shí)間:<4s。引腳說明及接口電路:SHT10內(nèi)部結(jié)構(gòu)框圖:圖3.2.2-2SHT10內(nèi)部結(jié)構(gòu)框圖SHT10命令表如表-1所示表-1SHT10命令表命令代碼保留0000X測量溫度00011測量濕度00101讀狀態(tài)寄存器00111寫狀態(tài)寄存器00110保留0101X-1110X軟復(fù)位,清除狀態(tài)寄存器為默認(rèn)值111103.2.3SHT10溫濕度傳感器性能特點(diǎn)[3]帶有工業(yè)標(biāo)準(zhǔn)的I2C總線數(shù)字輸出接口;將溫濕度傳感器、信號放大、A/D轉(zhuǎn)換、I2C總線接口全部集成于一個(gè)芯片;可給出全校準(zhǔn)相對濕度及溫度值輸出;具有露點(diǎn)值計(jì)算輸出功能;濕度值輸出分辨率為14位,溫度值輸出分辨率為12位,并可編程為12位和8位;具有數(shù)據(jù)傳輸校驗(yàn)功能;片內(nèi)裝載的校準(zhǔn)系數(shù)可保證100%互換性;具有卓越的長期穩(wěn)定性;電源電壓范圍為2.4~5.5V;電流消耗,測量時(shí)為550μA,平均為28μA,休眠時(shí)為3μA;體積小(7.65×5.08×23.5mm),可表面貼裝。SHT10溫濕度傳感器接口電路設(shè)計(jì)電源引腳(VDD、GND)SHT10的供電電壓為2.4V~5.5V。傳感器上電后,要等待11ms,從“休眠”狀態(tài)恢復(fù)。在此期間器件不發(fā)送任何指令。電源引腳(VDD和GND)之間可增加1個(gè)100nF的電容器,用于去耦濾波,使其更加準(zhǔn)確。串行接口[4]SHT10的兩線串行接口(bidirectional2-wire)在傳感器溫濕度信號的讀取和器件的功耗方面都做了很大的優(yōu)化處理,其總線類似I2C總線,但是不兼容I2C總線。串行時(shí)鐘輸入(SCK)。SCK引腳是系統(tǒng)主控芯片與SHT1O之間進(jìn)行通信的同步時(shí)鐘,其接口包含了全靜態(tài)邏輯,因此沒有最小時(shí)鐘頻率。串行數(shù)據(jù)(DATA)。DATA引腳是1個(gè)三態(tài)門,用于系統(tǒng)主控芯片與SHT10之間進(jìn)行數(shù)據(jù)傳輸。DATA的狀態(tài)在串行時(shí)鐘SCK的下降沿之后發(fā)生改變,在SCK的上升沿有效。在數(shù)據(jù)傳輸期間,當(dāng)SCK為高電平時(shí),DATA數(shù)據(jù)線上必須保持穩(wěn)定狀態(tài)。為避免數(shù)據(jù)發(fā)生沖突,MCU應(yīng)該驅(qū)動(dòng)DATA使其處于低電平狀態(tài),而外部接1個(gè)上拉電阻將信號拉至高電平。由于AT89C51不具備I2C總線接口,故使用單片機(jī)通用I/O口線來虛擬I2C總線,利用P2.6來虛擬時(shí)鐘線,利用P2.7口線來虛擬數(shù)據(jù)線DATA,并在DATA端接入一個(gè)10K的上拉電阻,同時(shí)在VCC及GND端接入一個(gè)0.1UF的去耦電容,AT89C51單片機(jī)與SHT10的接口電路如圖3.2.4-1所示[5]。圖SHT10接口電路圖3.3液晶顯示模塊設(shè)計(jì)LCD1602是字符型液晶顯示模塊,它由字符型液晶顯示屏、控制驅(qū)動(dòng)主電路HD44780及其擴(kuò)展驅(qū)動(dòng)電路HD44100、少量電阻電容元件、結(jié)構(gòu)件等裝配在一起而成。LCD1602字符型液晶顯示模塊目前在國際上已經(jīng)規(guī)范化,無論顯示屏規(guī)格如何變化,其電特性和接口形式都是統(tǒng)一的。因此只要設(shè)計(jì)出一種型號的接口電路,在指令設(shè)置上稍加改動(dòng)即可使用各種規(guī)格的字符型液晶顯示模塊。圖3.3-1LCD1602LCD1602液晶顯示模塊的基本特點(diǎn)[6]液晶顯示屏是以若干個(gè)58或511點(diǎn)陣塊組成的顯示字符群。每個(gè)點(diǎn)陣塊為一個(gè)字符位,字符間距和行距都為一個(gè)點(diǎn)的寬度。主控制驅(qū)動(dòng)電路為HD44780(HITACHI)及其他公司全兼容電路,如SED1278(SEIKOEPSON)、KS0066(SAMSUNG)、NJU6408(NERJAPANRADIO)。具有字符發(fā)生器ROM可顯示192種字符(160個(gè)57點(diǎn)陣字符和32個(gè)510點(diǎn)陣字符,見附錄一)具有64個(gè)字節(jié)的自定義字符RAM,可自定義8個(gè)58點(diǎn)陣字符或四個(gè)511點(diǎn)陣字符。具有80個(gè)字節(jié)的RAM。標(biāo)準(zhǔn)的接口特性,適配M6800系列MPU的操作時(shí)序。模塊結(jié)構(gòu)緊湊、輕巧、裝配容易。單+5V電源供電。低功耗、長壽命、高可靠性。LCD1602與系統(tǒng)的連接圖如圖3.3-2所示圖3.3-2LCD1602與系統(tǒng)連接圖3.4報(bào)警系統(tǒng)設(shè)計(jì)報(bào)警系統(tǒng)由警報(bào)燈和聲音報(bào)警報(bào)警組成。聲音報(bào)警通過P3.2口接SD口控制系統(tǒng)的音效模塊發(fā)聲,用CPU控制P3.2產(chǎn)生一定頻率的方波就可以實(shí)現(xiàn)音效模塊的發(fā)聲。音效模塊是一個(gè)帶有揚(yáng)聲器的放大電路,如圖3.4-1所示:圖3.4-1聲音報(bào)警模塊警報(bào)燈模塊包含3個(gè)LED燈,分別由P2.0、P2.1、P2.2控制。其電路設(shè)計(jì)圖3.4-2所示:圖3.4-2警報(bào)燈模塊3.5按鍵電路設(shè)計(jì)本論文中倉庫溫濕度監(jiān)測系統(tǒng)的硬件設(shè)計(jì)中按鍵電路有單片機(jī)AT89C51的復(fù)位電路和矩陣鍵盤電路。以下便是該復(fù)位電路圖和矩陣鍵盤電路。圖3.5-1單片機(jī)AT89C51的復(fù)位電路圖3.5-2矩陣鍵盤電路4軟件系統(tǒng)設(shè)計(jì)該系統(tǒng)軟件主要由主程序、系統(tǒng)中斷子程序、SHT10溫濕度傳感器數(shù)據(jù)采集程序、液晶顯示器LCD1602顯示程序、報(bào)警程序等模塊組成。因?yàn)橛肅語言編寫的程序具有結(jié)構(gòu)簡單,程序的可讀性強(qiáng),語法限制不是很嚴(yán)格,生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高,且具有很高的程序可移植性等特點(diǎn),所以本次軟件設(shè)計(jì)我們采用C語言來編寫軟件。程序基于KeiluVision3為開發(fā)環(huán)境,使系統(tǒng)實(shí)現(xiàn)如下的功能:控制SHT10溫濕度傳感器采集倉庫的實(shí)時(shí)溫濕度值;通過液晶顯示器LCD1602顯示倉庫溫濕度值;比較監(jiān)測到的實(shí)時(shí)倉庫溫濕度值和我們所設(shè)置的溫濕度報(bào)警值,發(fā)現(xiàn)其超出我們所設(shè)限度則系統(tǒng)控制報(bào)警模塊發(fā)出報(bào)警提示;根據(jù)所顯示的溫濕度值控制系統(tǒng)溫濕度調(diào)節(jié)模塊工作,使倉庫的溫濕度值回到開始所設(shè)置的溫濕度限度,且LCD1602顯示子程序?qū)γ看斡蒘HT10溫濕度傳感器所采集的數(shù)值進(jìn)行顯示。根據(jù)上述系統(tǒng)的功能,系統(tǒng)軟件流程圖如圖4-1所示。1602和SHT10初始化1602和SHT10初始化延時(shí)0.2秒讀取溫濕度值讀取成功1602顯示數(shù)據(jù)是否超限延時(shí)0.8秒SHT10通訊重啟動(dòng)報(bào)警,發(fā)出控制信號圖4-1系統(tǒng)軟件流程圖溫濕度傳感器SHT10完成一次測量的工作順序一般為:設(shè)置傳感器分辨率→發(fā)送“啟動(dòng)傳輸”命令→發(fā)送測量命令→讀取輸出的測量值→將輸出測量值轉(zhuǎn)換為物理量。則SHT10數(shù)據(jù)采集程序流程圖如圖4-2所示;NNYYYNNError=error+1Error=error+1設(shè)置傳感器分辨率狀態(tài)發(fā)送“啟動(dòng)傳輸”發(fā)送測量指令讀出測量值測量值轉(zhuǎn)化成物理量一次測量結(jié)束Error是否為0?測量值判斷?指令判斷圖4-2SHT10數(shù)據(jù)采集程序流程圖5系統(tǒng)調(diào)試方案5.1硬件電路的調(diào)試此部分的任務(wù)是在系統(tǒng)各方面都連接好后,調(diào)試各個(gè)組件能否正常運(yùn)行,能否實(shí)現(xiàn)本次設(shè)計(jì)的預(yù)期目標(biāo)。其步驟如下:按照系統(tǒng)設(shè)計(jì),將系統(tǒng)需要的各個(gè)組件連接好。根據(jù)實(shí)驗(yàn)說明書,了解各個(gè)組件的工作原理,開始著手調(diào)試芯片。調(diào)試溫濕度傳感器SHT10,確保其各方面運(yùn)行正常。按鍵電路,顯示電路運(yùn)行正常。報(bào)警模塊運(yùn)行正常。5.2功能模塊的調(diào)試方案把各個(gè)功能模塊編寫成單獨(dú)的源文件進(jìn)行調(diào)試,調(diào)試成功以后,再將各部分聯(lián)合在一起。溫濕度判斷控制模塊是核心模塊,由于溫濕度對于倉庫的物品保存起著重要的作用,因此,如果這兩個(gè)因素不能控制好,這個(gè)系統(tǒng)就宣告失敗。這使得我們需要認(rèn)真的考慮這一模塊的控制方式。外界溫濕度發(fā)生超過所設(shè)限度的變化做出了報(bào)警能否使溫濕度控制器件啟動(dòng),達(dá)到控制溫濕度的目的。鍵盤輸入模塊是這個(gè)系統(tǒng)在開始預(yù)設(shè)溫濕度時(shí)應(yīng)用,監(jiān)測輸入數(shù)字能否與顯示相對應(yīng)。報(bào)警模塊在倉庫溫濕度超過所設(shè)限度時(shí)發(fā)揮作用,監(jiān)測倉庫溫濕度超過所設(shè)限度能否報(bào)警。除了以上的模塊之外,還有一些小的模塊也很重要,我們都需要認(rèn)真的調(diào)試,。調(diào)試了各模塊之后,接下來的工作就是將各源程序段連接起來,進(jìn)行綜合調(diào)試了,綜合調(diào)試需要我們特別注意細(xì)節(jié)部分,這樣才能盡可能的減少錯(cuò)誤的產(chǎn)生。如果整個(gè)調(diào)試都以完成,并且達(dá)到了我們預(yù)期的目標(biāo),我們都成功的完成了本次設(shè)計(jì)了。6結(jié)論經(jīng)過了一段時(shí)間的畢業(yè)論文制作,使我學(xué)到了很多,也有了很多的感悟。我想到了設(shè)計(jì)開始時(shí)找到了夢寐以求的資料時(shí)那種興奮與激動(dòng);想到了親手設(shè)計(jì)電路圖,理想中的每一步思路實(shí)現(xiàn)時(shí)那幸福的心情;想到了為了論文忘時(shí)奮戰(zhàn)到深夜的激情;想到了在設(shè)計(jì)過程中學(xué)習(xí)到了一個(gè)新的知識和重新掌握了一個(gè)知識高興得暗自微笑的愉悅。本次設(shè)計(jì)能夠順利的完成,我應(yīng)該感謝我的指導(dǎo)老師,你為給我提供了許多好用的資料來源,并通過你仔細(xì)的檢查,告訴我論文那里出了錯(cuò),應(yīng)該怎么改正,提出了最中肯的意見。老師的嚴(yán)謹(jǐn)治學(xué)態(tài)度、淵博的知識、無私的奉獻(xiàn)精神使我深受啟迪。從尊敬的導(dǎo)師身上,我不僅學(xué)到了扎實(shí)淵博的專業(yè)知識,也學(xué)到了做人的道理。在此我要向我的導(dǎo)師致以最衷心的感謝和深深的敬意。本次設(shè)計(jì),我深深了解了“學(xué)無止境”的真正含義,在今后的日子里,我仍然要不斷地充實(shí)自己,爭取在所學(xué)領(lǐng)域有所作為。附錄1:原理圖附錄2:程序//************************第一部分************************//Main.C#include<reg51.h>#include"LCD1602.h"#include"SHT10.h"http://#include<intrins.h>//#include<math.h>//Keillibrarysbitkongtiao=P3^6;sbitjiashi=P3^7;#defineucharunsignedchartypedefunion //定義共用同類型{ unsignedinti; floatf;}value;//延時(shí)函數(shù)voiddelay(intz) //z為毫秒數(shù){ intx,y; for(x=z;x>0;x--) for(y=125;y>0;y--);}voidmain(){ unsignedinttemp,humi; valuehumi_val,temp_val; //定義兩個(gè)共同體,一個(gè)用于濕度,一個(gè)用于溫度 unsignedcharerror; //用于檢驗(yàn)是否出現(xiàn)錯(cuò)誤 unsignedcharchecksum; //CRC ucharwendu[6]; //用于記錄溫度 ucharshidu[6]; //用于記錄濕度 LCD_Initial(); //初始化液晶 GotoXY(0,0); //選擇溫度顯示位置 Print("TEMP:%C"); //5格空格GotoXY(0,1); //選擇濕度顯示位置 Print("HUMI:%RH"); //5格空格 s_connectionreset(); //啟動(dòng)連接復(fù)位 while(1) { error=0; //初始化error=0,即沒有錯(cuò)誤 error+=s_measure((unsignedchar*)&temp_val.i,&checksum,TEMP);//溫度測量 error+=s_measure((unsignedchar*)&humi_val.i,&checksum,HUMI);//濕度測量 if(error!=0)s_connectionreset();////如果發(fā)生錯(cuò)誤,系統(tǒng)復(fù)位 else { humi_val.f=(float)humi_val.i;//轉(zhuǎn)換為浮點(diǎn)數(shù) temp_val.f=(float)temp_val.i;//轉(zhuǎn)換為浮點(diǎn)數(shù) calc_sth10(&humi_val.f,&temp_val.f);//修正相對濕度及溫度 temp=temp_val.f*10; humi=humi_val.f*10; GotoXY(5,0); //設(shè)置溫度顯示位置 wendu[0]=temp/1000+'0'; //溫度百位 wendu[1]=temp%1000/100+'0'; //溫度十位 wendu[2]=temp%100/10+'0'; //溫度個(gè)位 wendu[3]=0x2E; //小數(shù)點(diǎn) wendu[4]=temp%10+'0'; //溫度小數(shù)點(diǎn)后第一位 Print(wendu); //輸出溫度 GotoXY(5,1); //設(shè)置濕度顯示位置 shidu[0]=humi/1000+'0'; //濕度百位 shidu[1]=humi%1000/100+'0'; //濕度十位 shidu[2]=humi%100/10+'0'; //濕度個(gè)位 shidu[3]=0x2E; //小數(shù)點(diǎn) shidu[4]=humi%10+'0'; //濕度小數(shù)點(diǎn)后第一位 Print(shidu); //輸出濕度 } if(temp>30) { kongtiao=1; //升溫 } else kongtiao=0; //降溫 if(humi>30) { jiashi=1; //加濕 } else { jiashi=0;//除濕 } delay(800);//等待足夠長的時(shí)間,以現(xiàn)行下一次轉(zhuǎn)換 }}//************************第二部分************************//SHT1O.C#include<SHT10.h>#include<intrins.h>sbitDATA=P2^7;sbitSCK=P2^6;#definenoACK0 //繼續(xù)傳輸數(shù)據(jù),用于判斷是否結(jié)束通訊#defineACK1//結(jié)束數(shù)據(jù)傳輸; //地址命令讀/寫#defineSTATUS_REG_W0x06//00000110#defineSTATUS_REG_R0x07//00000111#defineMEASURE_TEMP0x03//00000011#defineMEASURE_HUMI0x05//00000101#defineRESET0x1e//00011110//寫字節(jié)程序chars_write_byte(unsignedcharvalue){ unsignedchari,error=0; for(i=0x80;i>0;i>>=1)//高位為1,循環(huán)右移 { if(i&value)DATA=1;//和要發(fā)送的數(shù)相與,結(jié)果為發(fā)送的位 elseDATA=0; SCK=1; _nop_();_nop_();_nop_();//延時(shí)3us SCK=0; } DATA=1;//釋放數(shù)據(jù)線 SCK=1; error=DATA;//檢查應(yīng)答信號,確認(rèn)通訊正常 _nop_();_nop_();_nop_(); SCK=0; DATA=1; returnerror;//error=1通訊錯(cuò)誤}//讀字節(jié)程序chars_read_byte(unsignedcharack)//-------------------------------------------------------------------------{ unsignedchari,val=0; DATA=1;//釋放數(shù)據(jù)線 for(i=0x80;i>0;i>>=1)//高位為1,循環(huán)右移 { SCK=1; if(DATA)val=(val|i);//讀一位數(shù)據(jù)線的值 SCK=0; } DATA=!ack;//如果是校驗(yàn),讀取完后結(jié)束通訊; SCK=1; _nop_();_nop_();_nop_();//延時(shí)3us SCK=0; _nop_();_nop_();_nop_(); DATA=1;//釋放數(shù)據(jù)線 returnval;}//啟動(dòng)傳輸voids_transstart(void)//generatesatransmissionstart//_____________//DATA:|_______|//______//SCK:___||___||______{ DATA=1;SCK=0;//準(zhǔn)備 _nop_(); SCK=1; _nop_(); DATA=0; _nop_(); SCK=0; _nop_();_nop_();_nop_(); SCK=1; _nop_(); DATA=1; _nop_(); SCK=0;}//連接復(fù)位voids_connectionreset(void)//communicationreset:DATA-line=1andatleast9SCKcyclesfollowedbytransstart//_____________________________________________________//DATA:|_______|//_______________//SCK:__||__||__||__||__||__||__||__||__||______||___||______{ unsignedchari; DATA=1;SCK=0;//準(zhǔn)備 for(i=0;i<9;i++)//DATA保持高,SCK時(shí)鐘觸發(fā)9次,發(fā)送啟動(dòng)傳輸,通迅即復(fù)位 { SCK=1; SCK=0; } s_transstart();//啟動(dòng)傳輸}//軟復(fù)位程序chars_softreset(void)//resetsthesensorbyasoftreset{ unsignedcharerror=0; s_connectionreset();//啟動(dòng)連接復(fù)位 error+=s_write_byte(RESET);//發(fā)送復(fù)位命令 returnerror;//error=1通訊錯(cuò)誤}//溫濕度測量chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode)//進(jìn)行溫度或者濕度轉(zhuǎn)換,由參數(shù)mode決定轉(zhuǎn)換內(nèi)容;{// enum{TEMP,HUMI}; //已經(jīng)在頭文件中定義 unsignederror=0; unsignedinti; s_transstart();//啟動(dòng)傳輸 switch(mode)//選擇發(fā)送命令{ 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;//等待測量結(jié)束 if(DATA)error+=1;//如果長時(shí)間數(shù)據(jù)線沒有拉低,說明測量錯(cuò)誤 *(p_value)=s_read_byte(ACK);//讀第一個(gè)字節(jié),高字節(jié)(MSB) *(p_value+1)=s_read_byte(ACK);//讀第二個(gè)字節(jié),低字節(jié)(LSB) *p_checksum=s_read_byte(noACK);//readCRC校驗(yàn)碼 returnerror; //error=1通訊錯(cuò)誤}//溫濕度值標(biāo)度變換及溫度補(bǔ)償voidcalc_sth10(float*p_humidity,float*p_temperature){ constfloatC1=-4.0;//12位濕度精度修正公式 constfloatC2=+0.0405;//12位濕度精度修正公式 constfloatC3=-0.0000028;//12位濕度精度修正公式 constfloatT1=+0.01;//14位溫度精度5V條件修正公式 constfloatT2=+0.00008;//14位溫度精度5V條件修正公式 floatrh=*p_humidity;//rh:12位濕度 floatt=*p_temperature;//t:14位溫度 floatrh_lin;//rh_lin:濕度linear值 floatrh_true;//rh_true:濕度ture值 floatt_C;//t_C:溫度℃ t_C=t*0.01-40;//補(bǔ)償溫度 rh_lin=C3*rh*rh+C2*rh+C1;//相對濕度非線性補(bǔ)償 rh_true=(t_C-25)*(T1+T2*rh)+rh_lin;//相對濕度對于溫度依賴性補(bǔ)償 if(rh_true>100)rh_true=100;//濕度最大修正 if(rh_true<0.1)rh_true=0.1;//濕度最小修正 *p_temperature=t_C;//返回溫度結(jié)果 *p_humidity=rh_true;//返回濕度結(jié)果}//從相對溫度和濕度計(jì)算露點(diǎn)/*floatcalc_dewpoint(floath,floatt){ floatlogEx,dew_point; logEx=0.66077+7.5*t/(237.3+t)+(log10(h)-2); dew_point=(logEx-0.66077)*237.3/(0.66077+7.5-logEx); returndew_point;} //************************第三部分************************//LCD1602#include<reg51.h>#include<intrins.h>sbitLcdRs=P2^3;sbitLcdRw=P2^4;sbitLcdEn=P2^5;sfrDBPort=0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口//內(nèi)部等待函**************************************************************unsignedcharLCD_Wait(void){LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();LcdEn=0;returnDBPort;}//向LCD寫入命令或數(shù)********************************************************#defineLCD_COMMAND0//Command#defineLCD_DATA1//Data#defineLCD_CLEAR_SCREEN0x01//清屏#defineLCD_HOMING0x02//光標(biāo)返回原點(diǎn)voidLCD_Write(bitstyle,unsignedcharinput){LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();//注意順序LcdEn=1;_nop_();//注意順序LcdEn=0;_nop_();LCD_Wait();}//設(shè)置顯示模式************************************************************#defineLCD_SHOW0x04//顯示開#defineLCD_HIDE0x00//顯示關(guān)#defineLCD_CURSOR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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

提交評論