版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 摘要:1</b></p><p> Abstract:1</p><p><b> 1 引言2</b></p><p><b> 2 設(shè)計任務(wù)2</b><
2、/p><p> 3 設(shè)計理論基礎(chǔ)2</p><p> 4 總體設(shè)計方案3</p><p> 4.1 總體方案選擇3</p><p> 4.2溫度傳感器的選擇4</p><p> 4.3濕度傳感器的選擇5</p><p><b> 4.4顯示模塊6</b&g
3、t;</p><p> 4.5 系統(tǒng)總體結(jié)構(gòu)6</p><p><b> 5 芯片介紹7</b></p><p> 5.1 溫度傳感器DS18B20的介紹7</p><p> 5.2濕度傳感器HS1101介紹8</p><p> 5.3單片機AT89C52介紹10</
4、p><p> 5.3.1內(nèi)部結(jié)構(gòu)、資源10</p><p><b> 6 硬件設(shè)計12</b></p><p> 6.1總電路圖12</p><p> 6.2溫度測量電路13</p><p> 6.3濕度測量電路13</p><p> 6.4液晶顯示電路
5、14</p><p> 6.5系統(tǒng)的PCB圖15</p><p> 7 軟件設(shè)計16</p><p> 7.1系統(tǒng)主程序流程圖如圖 16 所示16</p><p> 7.2中斷程序流程圖如圖17所示17</p><p><b> 結(jié)束語17</b></p>&l
6、t;p><b> 參考文獻(xiàn)18</b></p><p><b> 附錄:19</b></p><p><b> 多功能空氣溫濕度計</b></p><p> 摘要:采用單片機對溫度、濕度等環(huán)境參數(shù)進(jìn)行監(jiān)測是一個工業(yè)生產(chǎn)中經(jīng)常遇到的監(jiān)測問題,采用單片機不僅具有監(jiān)測方便、操作簡單等優(yōu)點,
7、而且可以在節(jié)約成本的同時大幅度的提高監(jiān)測質(zhì)量。本文設(shè)計了單片機構(gòu)成的環(huán)境溫度、濕度參數(shù)實時監(jiān)測裝置,本裝置以單片機AT89C52為控制核心,采用獨特的單總線數(shù)字式溫度傳感器DS18B20進(jìn)行溫度采集,采用濕敏電容HS1101對濕度參數(shù)進(jìn)行采集。LCD液晶顯示屏對于當(dāng)前的溫度值和濕度值進(jìn)行實時的顯示,可以方便用戶直觀的了解所測得的溫度、濕度環(huán)境參數(shù)值。用戶可使用按鍵根據(jù)自身要求設(shè)定溫濕度上下限,同時,報警裝置可依據(jù)用戶的設(shè)定針對溫濕度超限
8、情況進(jìn)行報警。</p><p> 關(guān)鍵詞:溫濕度監(jiān)測;超限報警;LCD顯示</p><p> Multi-function air temperature hygrometer</p><p> Abstract:MCU is always used in industry measurement as temperature and humidity mea
9、surement. With MCU, it can be more convenient and simple to complete the measurement efficiently. The paper designs a real-time temperature and humidity measurement device based on MCU. The device adopts AT89C52 as the c
10、ontrol. The device also make use of DS18B20 to obtain the digital temperature signal and HS1101 to gain the analogue humidity signal. In the design, LCD is used to display the consumers the real-ti</p><p>
11、Keywords:temperature and humidity measurement; alert over-limit; LCD </p><p><b> 1 引言</b></p><p> 隨著科學(xué)技術(shù)的發(fā)展,人類在不同應(yīng)用領(lǐng)域?qū)囟?、濕度的測量提出了越來越高的要求。日常生活中,工廠、商場、銀行、醫(yī)院以及各類科研場所都需要符合操作規(guī)定的溫、濕度環(huán)境條
12、件。居民家庭中更離不開對溫度、濕度的監(jiān)測,室內(nèi)濕度一般控制在45%至65%RH之間,人體感覺比較舒適。而冬季供暖期的室內(nèi)濕度通常僅為10%—15%RH,在干燥的環(huán)境下呆久了,會使人皮膚緊繃,干燥上火,感覺不適,甚至使人的呼吸系統(tǒng)抵抗力降低,從而引發(fā)或者加重呼吸系統(tǒng)的疾病。當(dāng)空氣濕度低于40%RH的時候,灰塵、細(xì)菌等容易附著在鼻部和肺部呼吸道黏膜上,刺激喉部引發(fā)咳嗽,也容易發(fā)生呼吸道的其它疾病,由此可見濕度參數(shù)測量意義重大。工廠中,產(chǎn)品裝
13、配過程歷來都存在對裝配環(huán)境中的溫、濕度進(jìn)行監(jiān)測的問題。溫、濕度參數(shù)監(jiān)測報警裝置能對特定環(huán)境中的溫、濕度參數(shù)進(jìn)行監(jiān)測并能對溫、濕度超限情況及時給出報警信號。該監(jiān)測報警裝置采用溫、濕度傳感器直接測量環(huán)境的溫度、濕度,將采集到的信號分別送入單片機,由液晶顯示屏顯示環(huán)境的溫、濕度,并可以采用鍵盤輸入溫、濕度上下限值,由報警裝置完成溫、濕度超限報警功能。文中對每個部分功能、實現(xiàn)過程作了詳細(xì)介紹,完成了課題</p><p>
14、<b> 2 設(shè)計任務(wù) </b></p><p> 采用濕敏電容作為濕度敏感元件,設(shè)計出溫濕度檢測模塊來測量空氣中的溫濕度值。運用單片機對測量信號進(jìn)行運算處理,再由LCD顯示模塊顯示出當(dāng)前空氣溫濕度值,并通過蜂鳴器報警模塊對其進(jìn)行實時監(jiān)控。同時,還對傳感器進(jìn)行非線性補償,對測量數(shù)據(jù)進(jìn)行修正以減少測量誤差。</p><p><b> 3 設(shè)計理論基礎(chǔ)
15、</b></p><p> 隨著科學(xué)技術(shù)的發(fā)展,人類在不同應(yīng)用領(lǐng)域?qū)囟?、濕度的測量提出了越來越高的要求。日常生活中,工廠、商場、銀行、醫(yī)院以及各類科研場所都需要符合操作規(guī)定的溫、濕度環(huán)境條件。居民家庭中更離不開對溫度、濕度的監(jiān)測,室內(nèi)濕度一般控制在45%至65%RH之間,人體感覺比較舒適。而冬季供暖期的室內(nèi)濕度通常僅為10%—15%RH,在干燥的環(huán)境下呆久了,會使人皮膚緊繃,干燥上火,感覺不適,甚
16、至使人的呼吸系統(tǒng)抵抗力降低,從而引發(fā)或者加重呼吸系統(tǒng)的疾病。當(dāng)空氣濕度低于40%RH的時候,灰塵、細(xì)菌等容易附著在鼻部和肺部呼吸道黏膜上,刺激喉部引發(fā)咳嗽,也容易發(fā)生呼吸道的其它疾病,由此可見濕度參數(shù)測量意義重大。</p><p><b> 4 總體設(shè)計方案</b></p><p> 當(dāng)將單片機用作測控系統(tǒng)時,系統(tǒng)總要有被測信號懂得輸入通道,由計算機拾取必要的輸
17、入信息。對于測量系統(tǒng)而言,如何準(zhǔn)確獲得被測信號是其核心任務(wù);而對測控系統(tǒng)來講,對被控對象狀態(tài)的測試和對控制條件的監(jiān)察也是不可缺少的環(huán)節(jié)。 </p><p> 傳感器是實現(xiàn)測量與控制的首要環(huán)節(jié),是測控系統(tǒng)的關(guān)鍵部件,如果沒有傳感器對原始被測信號進(jìn)行準(zhǔn)確可靠的捕捉和轉(zhuǎn)換,一切準(zhǔn)確的測量和控制都將無法實現(xiàn)。工業(yè)生產(chǎn)過程的自動化測量和控制,幾乎主要依靠各種傳感器來檢測和控制生產(chǎn)過程中的各種參量,使設(shè)備和系統(tǒng)正常運行在最
18、佳狀態(tài),從而保證生產(chǎn)的高效率和高質(zhì)量。 </p><p> 4.1 總體方案選擇</p><p> 由于課題中涉及溫度、濕度兩個量的采集,由此設(shè)計出應(yīng)對本課題的方案:</p><p> 方案一:在元器件的選擇上,選取DS18B20數(shù)字式溫度傳感器和HS1101濕敏電容作為溫、濕度信號的采集傳感器。選取1602液晶顯示屏顯示溫、濕度值。DS18B20是美國DAL
19、LAS公司生產(chǎn)的單總線數(shù)字式溫度傳感器,可直接將其測得的溫度值傳入單片機,再通過LCD進(jìn)行顯示。而HS1101濕敏電容是將空氣的濕度值轉(zhuǎn)化為該濕敏電容的電容值,電容值隨濕度值的增大而增大,將該濕敏電容置于555振蕩電路中,電容值的變化可轉(zhuǎn)為與之成反比的電壓頻率信號的變化,并可以直接送入單片機。</p><p> 方案二:本方案與方案一的主要不同是采用了SHT71數(shù)字溫濕度傳感器,SHT71是瑞士Sensirio
20、n公司推出的基于CMOSens技術(shù)的新型溫濕度傳感器。該傳感器將CMOS芯片技術(shù)與傳感器技術(shù)結(jié)合起來, 發(fā)揮出強大的優(yōu)勢互補作用。包括一個電容性聚合體測濕敏感元件、一個用能隙材料制成的測溫元件,并在同一芯片上,與14位的A/D轉(zhuǎn)換器以及串行接口電路實現(xiàn)無縫連接。</p><p> 由于SHT71數(shù)字溫濕度傳感器上除了溫度、濕度敏感元件以外,還包括一個放大器,A/D轉(zhuǎn)換器,OTP內(nèi)存和數(shù)字接口,所以系統(tǒng)框圖得以簡
21、化。</p><p> 在上述兩種以傳感器為主要區(qū)別的方案選擇中,主要差別在于是否運用數(shù)字傳感器以及是否考慮將溫度、濕度兩個傳感器合二為一。從性價比的角度分析,雖然方案1中要采用兩個單獨的傳感器溫度傳感器DS18B20和濕敏傳感器HS1101,看似有些資源浪費,但方案2的SHT71傳感器的單價已勝過方案1中兩個傳感器售價之和,在購置傳感器上的開銷要大。因此,從性價比角度考慮,方案1更優(yōu)。另一方面,電容式濕敏傳感
22、器實用化程度高,工藝成熟,性能穩(wěn)定,普遍用于各種情況下濕度測量,且可以使用555振蕩電路將其濕度變化對應(yīng)的濕敏電容值的變化轉(zhuǎn)化為脈沖頻率送入單片機。而DS18B20由于具有結(jié)構(gòu)簡單不需要外接電路、可用一根I/O數(shù)據(jù)線既供電又傳輸數(shù)據(jù)、體積小、分辨率高、轉(zhuǎn)換快等優(yōu)點,被廣泛用于測量和控制溫度的地方。從應(yīng)用程度上來說,方案1的可操作性更強。</p><p> 通過上述方案比較最終確定選擇方案1作為溫濕度傳感器的設(shè)計
23、方案。</p><p> 4.2溫度傳感器的選擇</p><p> 方案一:采用熱電阻溫度傳感器。熱電阻是利用導(dǎo)體的電阻隨溫度變化的特性制成的測溫元件?,F(xiàn)應(yīng)用較多的有鉑、銅、鎳等熱電阻。其主要的特點為精度高、測量范圍大、便于遠(yuǎn)距離測量。</p><p> 鉑的物理、化學(xué)性能極穩(wěn)定,耐氧化能力強,易提純,復(fù)制性好,工業(yè)性好,電阻率較高,因此,鉑電阻用于工業(yè)檢測中
24、高精密測溫和溫度標(biāo)準(zhǔn)。缺點是價格貴,溫度系數(shù)小,受到磁場影響大,在還原介質(zhì)中易被玷污變脆。按IEC標(biāo)準(zhǔn)測溫范圍-200~650℃,百度電阻比W(100)=1.3850時,R0為100Ω和10Ω,其允許的測量誤差A(yù)級為±(0.15℃+0.002 |t|),B級為±(0.3℃+0.005 |t|)。</p><p> 銅電阻的溫度系數(shù)比鉑電阻大,價格低,也易于提純和加工;但其電阻率小,在腐蝕性介
25、質(zhì)中使用穩(wěn)定性差。在工業(yè)中用于-50~180℃測溫。</p><p> 方案二:采用 DS18B20 作為溫度傳感器。DS18B20 是由Dallas半導(dǎo)體公司生產(chǎn)的“一線總線”接口的溫度傳感器。一線總線結(jié)構(gòu)具有簡潔且經(jīng)濟(jì)的特點,可使用戶輕松地組建傳感器網(wǎng)絡(luò),從而為測量系統(tǒng)的構(gòu)建引入全新概念,DS18B20 的測溫范圍為-55℃~+125℃,在-10℃~+85℃范圍內(nèi),精度為±0.0625℃,現(xiàn)場溫度
26、可直接通過“一線總線”以數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。DS18B20 適合于惡劣環(huán)境的現(xiàn)場溫度測量,如環(huán)境控制設(shè)備或過程控制、測溫類消費電子產(chǎn)品等。它工作在 3V~5.5V的電壓范圍,采用多種封裝形式,從而使系統(tǒng)設(shè)計更靈活、方便,設(shè)定分辨率及用戶設(shè)定的報警溫度存儲在EEPROM中,掉電后依然保存 。</p><p> 綜合比較方案一與方案二,方案二更為適合于本設(shè)計系統(tǒng)對于溫度傳感器的選擇。</p
27、><p> 4.3濕度傳感器的選擇</p><p> 測量空氣濕度的方式很多,其原理是根據(jù)某種物質(zhì)從其周圍的空氣吸收水分后引起的物理或化學(xué)性質(zhì)的變化,間接地獲得該物質(zhì)的吸水量及周圍空氣的濕度。電容式、電阻式和濕漲式濕敏原件分別是根據(jù)其高分子材料吸濕后的介電常數(shù)、電阻率和體積隨之發(fā)生變化而進(jìn)行濕度測量的。</p><p> 方案一:采用HOS-201濕敏傳感器。HO
28、S-201濕敏傳感器為高濕度開關(guān)傳感器,它的工作電壓為交流1V以下,頻率為50HZ~1KHZ,測量濕度范圍為0~100%RH,工作溫度范圍為0~50℃,阻抗在75%RH(25℃)時為1MΩ。這種傳感器原是用于開關(guān)的傳感器,不能在寬頻帶范圍內(nèi)檢測濕度,因此,主要用于判斷規(guī)定值以上或以下的濕度電平。然而,這種傳感器只限于一定范圍內(nèi)使用時具有良好的線性,可有效地利用其線性特性。</p><p> 方案二:采用HS11
29、01濕度傳感器。HS1101電容傳感器,在電路構(gòu)成中等效于一個電容器件,其電容量隨著所測空氣濕度的增大而增大。不需校準(zhǔn)的完全互換性,高可靠性和長期穩(wěn)定性,快速響應(yīng)時間,專利設(shè)計的固態(tài)聚合物結(jié)構(gòu),適用于線性電壓輸出和頻率輸出兩種電路,適宜于制造流水線上的自動插件和自動裝配過程等。相對濕度在1%---100%RH范圍內(nèi);電容量由16pF變到200pF,其誤差不大于±2%RH;響應(yīng)時間小于5S;溫度系數(shù)為0.04 pF/℃??梢娋?/p>
30、是較高的。</p><p> 綜合比較方案一與方案二,方案一雖然滿足精度及測量濕度范圍的要求,但其只限于一定范圍內(nèi)使用時具有良好的線性,可有效地利用其線性特性。而且還不具備在本設(shè)計系統(tǒng)中對溫度-30~50℃的要求,因此,我們選擇方案二來作為本設(shè)計的濕度傳感器。</p><p><b> 4.4顯示模塊 </b></p><p> 方案一:
31、采用 LCD 液晶顯示器顯示。它可視面積大,畫面好,抗干擾能力強,可以節(jié)省軟件中斷資源。</p><p> 方案二:采用 LED 數(shù)碼管顯示。用發(fā)光二極管(簡稱LED)組成的字形來顯示數(shù)字,七個條形發(fā)光二極管排列成七段組合字型,便構(gòu)成了半導(dǎo)體數(shù)碼管。但由于數(shù)碼管顯示編程較麻煩且不能顯示英文字母,相比液晶顯示,液晶比數(shù)碼管顯示的東西更為多。 基于以上所述,本設(shè)計采用方案二。圖4-1為共陰數(shù)碼管的內(nèi)部結(jié)構(gòu)圖。<
32、;/p><p> 圖 4-1 共陰極數(shù)碼管內(nèi)部結(jié)構(gòu)圖</p><p> 4.5 系統(tǒng)總體結(jié)構(gòu) </p><p> 系統(tǒng)的總體結(jié)構(gòu)分為五個部分,如圖4所示。分別是溫度采集電路、濕度采集電路、振蕩電路、單片機控制模塊、LCD顯示模塊和蜂鳴器報警模塊。</p><p> 圖4-2 系統(tǒng)的總體結(jié)構(gòu)</p><p>
33、1、溫度采集模塊:該模塊是采集溫度信號,本設(shè)計溫度信號采集采用DS18B20傳感器,所測得數(shù)據(jù)直接接入到AT89C52單片機。DS18B20的主要特征:</p><p> (1)全數(shù)字溫度轉(zhuǎn)換及輸出</p><p> ?。?)先進(jìn)的單總線數(shù)據(jù)通信</p><p> ?。?)最高12位分辨率,精度可達(dá)±0.5攝氏度</p><p>
34、 ?。?)12位分辨率時的最大工作周期為750毫秒</p><p> (5)可選擇寄生工作方式</p><p> ?。?)檢測溫度范圍為-55℃-- +125℃(-67°F-- +257°F)</p><p> (7)內(nèi)置EEPROM,限溫報警功能</p><p> ?。?)64位光刻ROM,內(nèi)置產(chǎn)品序列號,方便多機連
35、接</p><p> ?。?)多樣封裝形式,適應(yīng)不同硬件系統(tǒng)</p><p> 2、濕度采集模塊:該模塊是采集濕度信號,該設(shè)計中采用HS1101濕度傳感器對濕度信號進(jìn)行采集,然后再通過NE555振蕩電路對采集的信號進(jìn)行處理產(chǎn)生一個方波,最后再接入到AT89C52單片機進(jìn)行測頻,對該數(shù)據(jù)進(jìn)行處理、存儲。</p><p> 3、單片機控制模塊: AT89C52單片機
36、控制液晶顯示以及蜂鳴器報警。</p><p><b> 5 芯片介紹</b></p><p> 5.1 溫度傳感器DS18B20的介紹</p><p> 測溫元件采用新型的溫度傳感器DS18B20。DS18B20 是由Dallas半導(dǎo)體公司生產(chǎn)的“一線總線”接口的溫度傳感器。一線總線結(jié)構(gòu)具有簡潔且經(jīng)濟(jì)的特點,可使用戶輕松地組建傳感器網(wǎng)絡(luò)
37、,從而為測量系統(tǒng)的構(gòu)建引入全新概念,DS18B20的測溫范圍為-55℃~+125℃,在-10℃~+85℃范圍內(nèi),精度為±0.0625℃,現(xiàn)場溫度可直接通過“一線總線”以數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。DS18B20適合于惡劣環(huán)境的現(xiàn)場溫度測量,如環(huán)境控制、設(shè)備或過程控制、測溫類消費電子產(chǎn)品等。它工作在3V~5.5V的電壓范圍,采用多種封裝形式,從而使系統(tǒng)設(shè)計更靈活、方便,設(shè)定分辨率及用戶設(shè)定的報警溫度存儲在EEPROM
38、中,掉電后依然保存 。DS18B20 的內(nèi)部結(jié)構(gòu)如圖5-1所示:</p><p> 圖 5-1 DS18B20 內(nèi)部結(jié)構(gòu)圖</p><p> 5.2濕度傳感器HS1101介紹</p><p> 測量空氣濕度的方式很多,其原理是根據(jù)某種物質(zhì)從其周圍的空氣吸收水分后引起的物理或化學(xué)性質(zhì)的變化,間接地獲得該物質(zhì)的吸水量及周圍空氣的濕度。電容式、電阻式和濕漲式濕敏原件
39、分別是根據(jù)其高分子材料吸濕后的介電常數(shù)、電阻率和體積隨之發(fā)生變化而進(jìn)行濕度測量的。下面 介紹 HS1101濕度傳感器及其應(yīng)用。 </p><p> 特點是不需校準(zhǔn)的完全互換性,高可靠性和長期穩(wěn)定性,快速響應(yīng)時間,專利設(shè)計的固態(tài)聚合物結(jié)構(gòu),由頂端接觸(HS1100)和側(cè)面接觸(HS1101)兩種封裝產(chǎn)品,適用于線性電壓輸出和頻率輸出兩種電路,適宜于制造流水線上的自動插件和自動裝配過程等 。 圖5-2 為濕敏電容工
40、作的溫、濕度范圍。圖 5-3 為濕度-電容響應(yīng)曲線。</p><p> 圖5-2濕敏電容工作的溫、濕度范圍</p><p> 圖 5-3濕度-電容響應(yīng)曲線</p><p> 相對濕度在 1%---100%RH 范圍內(nèi);電容量由 16pF 變到 200pF,其誤差不大于±2%RH;響應(yīng)時間小于 5S;溫度系數(shù)為 0.04 pF/℃??梢娋仁禽^高的。
41、</p><p> HUMIREL 濕度傳感器 HS1101/HS1100 基于獨特工藝設(shè)計的電容元件,這些相對濕度傳感器可以大批量生產(chǎn)??梢詰?yīng)用于辦公自動化,車廂內(nèi)空氣質(zhì)量控制,家電,工業(yè)控制系統(tǒng)等。在需要濕度補償?shù)膱龊纤部梢缘玫胶艽蟮膽?yīng)用。 </p><p> 根據(jù)HS1101的空氣濕度與電壓頻率的典型值,我們可以得到濕度值近視為:當(dāng)f<6600時,7351-RH*12.4
42、=F;當(dāng)f>6600時, 6600-(RH-60)*14=F。</p><p> 5.3單片機AT89C52介紹</p><p> 5.3.1內(nèi)部結(jié)構(gòu)、資源</p><p> AT89C52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè) 80C51 產(chǎn)品指令和引
43、腳完全兼容。片上 Flash 允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的 8 位 CPU 和在系統(tǒng)可編程 Flash,使得 AT89C52 為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。其內(nèi)部主要由 CPU、RAM、ROM、通用 I/O 及總線構(gòu)成,內(nèi)部結(jié)構(gòu)圖如 5-5 所示:</p><p><b> 圖5-5 內(nèi)部結(jié)構(gòu)</b></p>&
44、lt;p> CPU:由運算和控制邏輯組成,同時還包括中斷系統(tǒng)和部分外部特殊功能寄存器; </p><p> RAM:用以存放可以讀寫的數(shù)據(jù),如運算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù); </p><p> ROM:用以存放程序、一些原始數(shù)據(jù)和表格;</p><p> AT89C52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/
45、O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止 。</p><p> 5.
46、3.2機器周期和指令周期</p><p> (1) 振蕩周期: 也稱時鐘周期, 是指為單片機提供時鐘脈沖信號的振蕩源的周期。 </p><p> ?。?) 狀態(tài)周期: 每個狀態(tài)周期為時鐘周期的 2 倍, 是振蕩周期經(jīng)二分頻后得到的。 </p><p> ?。?) 機器周期: 一個機器周期包含 6 個狀態(tài)周期 S1~S6, 也就是 12 個時鐘周期。在一個機器周
47、期內(nèi), CPU 可以完成一個 獨立的操作。 </p><p> ?。?) 指令周期: 它是指 CPU完成一條操作所需的全部時間。 每條指令執(zhí)行時間都是有一個或幾個機器周期組成。</p><p><b> 6 硬件設(shè)計</b></p><p><b> 6.1總電路圖</b></p>&l
48、t;p> 圖 6-1 總電路原理圖</p><p><b> 6.2溫度測量電路</b></p><p> 溫度測量采用 DS18B20,它是單線傳輸器件,不需校正溫宿,接口接的是 P2.4,具體的溫度測量電路如圖 6-2所示:</p><p> 圖 6-2 溫度測量電路</p><p><b>
49、 6.3濕度測量電路</b></p><p> 濕度測量用的是 HS1101電容式器件,他與 NE555組成一方波發(fā)生電路,濕度改變對應(yīng)頻率的變化,用單片機采集頻率值進(jìn)行轉(zhuǎn)化得出濕度值,具體的濕度測量電路如圖 6-3所示:</p><p> 圖 6-3濕度測量電路</p><p><b> 6.4液晶顯示電路</b><
50、/p><p> 液晶顯示主要是通過液晶和一排單片機連接實現(xiàn)其功能的。</p><p> 圖 6-4液晶顯示電路</p><p> 6.5系統(tǒng)的PCB圖</p><p> 系統(tǒng)總的 PCB 圖如圖6-5所示:</p><p> 圖 6-5 系統(tǒng)的 PCB 圖</p><p><b>
51、; 7 軟件設(shè)計</b></p><p> 7.1系統(tǒng)主程序流程圖如圖 7-1 所示</p><p> 圖 7-1 系統(tǒng)主程序流程圖</p><p> 7.2中斷程序流程圖如圖7-2所示</p><p> 圖 7-2 按中斷程序流程圖</p><p><b> 結(jié)束語</b&g
52、t;</p><p> 經(jīng)過這段時間的忙碌和工作,本次畢業(yè)設(shè)計已經(jīng)接近尾聲,作為一個本科生的畢業(yè)設(shè)計,由于經(jīng)驗的匱乏,難免有許多考慮不周全的地方,如果沒有導(dǎo)師的督促指導(dǎo),以及同學(xué)們的支持和幫助,想要完成這個設(shè)計是難以想象的。 </p><p> 在這里首先要感謝我的導(dǎo)師xx老師。汪老師平日里工作繁多,但在我做畢業(yè)設(shè)計的每個階段,從設(shè)計草案的確定和修改,中期檢查,后期詳細(xì)設(shè)計,裝配草
53、圖等整個過程中都給予了我悉心的指導(dǎo)。他的治學(xué)嚴(yán)謹(jǐn)和科學(xué)研究的精神也是我永遠(yuǎn)學(xué)習(xí)的榜樣,并將積極影響我今后的學(xué)習(xí)和工作。 </p><p> 然后還要感謝大學(xué)四年來所有的老師,為我們打下電子專業(yè)知識的基礎(chǔ);同時還要感謝所有的同學(xué)們,正是因為有了你們的支持和鼓勵,此次畢業(yè)設(shè)計才會順利完成。 </p><p> 最后感謝我的母校xx四年來對我的大力栽培。</p><
54、;p><b> 參考文獻(xiàn)</b></p><p> [1] 劉篤仁,韓保君. 傳感器原理及應(yīng)用技術(shù)[M]. 西安:西安科大出版社, 2003.1</p><p> [2] 馬明建. 數(shù)據(jù)采集與處理技術(shù)[M]. 西安:西安交通大學(xué)出版社,2005.2</p><p> [3] 孫傳友,孫曉斌等. 測控系統(tǒng)原理與設(shè)計[M]. 北京:北
55、京航空航天大學(xué)出版社,2006</p><p> [4] 張國雄,金篆芷等. 測控電路[M]. 北京:機械工業(yè)出版社,2006</p><p> [5] 單成祥,傳感器的理論與設(shè)計基礎(chǔ)及其應(yīng)用[M].北京:國防工業(yè)出版社,1999.8</p><p> [6] 杜深慧,溫濕度檢測裝置的設(shè)計與實現(xiàn)[D].河北:華北電力大學(xué),2004.12</p>
56、<p> [7]梁婧宇.智能溫室環(huán)境溫濕度測控系統(tǒng)的研究與設(shè)計[D].山西:太原理工大學(xué),2005.5</p><p> [8]梁中明. 基于 DS18B20 與虛擬 I~(2)C 總線的數(shù)字溫度測量裝置設(shè)計[J].湖北 電子報, 2006 </p><p> [9]張世英,劉萬瑩,李仁兵. 基于 AT89S52 單片機的溫濕度監(jiān)控系統(tǒng)設(shè)計[A]. 中南六省(區(qū))
57、自動化學(xué)會 第 24 屆學(xué)術(shù)年會會議論文集[C], 2006 </p><p> [10]劉迎春.傳感器原理—設(shè)計與應(yīng)用[M],北京:國防科技大學(xué)出版社,2005:205-207. </p><p> [11]余成波,胡新宇,趙勇. 傳感器與自動檢測技術(shù)[M] .北京:高等教育出版社,2006 </p><p> [12 ]吳興慧,王彩君.傳感器與信號處理[
58、M].北京:電子工業(yè)出版社,1998 </p><p> [13]胡漢才.單片機原理及接口技術(shù)[M],北京:清華大學(xué)出版社,1996.7. </p><p> [14]黃堅.自動控制原理及其應(yīng)用[M],北京:高等教育出版社,2004 </p><p> [15]馬忠梅等.單片機的 C 語言應(yīng)用程序設(shè)計[M],北京:北京航空航天大學(xué)出版社,2003.11. &l
59、t;/p><p><b> 附錄:</b></p><p><b> 附圖一:程序</b></p><p> #include<reg51.h></p><p> #include<intrins.h></p><p> #define Data
60、Bus P0 //High 4bits used in transfer LCD1602</p><p> //CPU: AT89S51 Oscillator: 12.000MHz</p><p> sbit FreqInput=P3^4; //Frequency input //頻率輸入引腳</p><p> sbit Beep=P1^0; //Bee
61、p switch //蜂鳴器控制</p><p> sbit ds_dat=P2^4; //DS18B20 data pin //DS18B20控制</p><p> sbit Button=P2^0; //按鍵</p><p> //For 1602 pin definition 1602 液晶引腳定義</p><p> sbit
62、 RS=P2^5; //Register select: H:data L:instruction</p><p> sbit RW=P2^6; //H:read L:write</p><p> sbit EN=P2^7; //Chip select</p><p><b> //函數(shù)聲明</b></p><p>
63、; void ds_write(unsigned char command);</p><p> unsigned char ds_read();</p><p> void ds_initial(); </p><p> void temp_sensing();</p><p> void delay(unsigned char
64、i);</p><p> void Initial1602(void);</p><p> void WriteInstr1602(unsigned char Instr);</p><p> void WriteData1602(unsigned char Data);</p><p> void WriteString1602(u
65、nsigned char addr,unsigned char code *s);</p><p> void Delay5ms(void);</p><p> void Delay100us(void);</p><p><b> //全局變量定義</b></p><p> unsigned int Freq;
66、</p><p> unsigned char Counter,Humi;</p><p> bit Updata;</p><p> unsigned char TempDec,TempInt;</p><p> unsigned char code CGMode[8]=</p><p><b>
67、 {</b></p><p> 0x18,0x18,0x07,0x04,0x04,0x04,0x04,0x07</p><p><b> };</b></p><p> void main(void) //主函數(shù)</p><p><b> {</b></p><
68、;p> unsigned char i,Func;</p><p> unsigned char M0=7,M1=0,M2=5,M3=0;</p><p> Initial1602(); </p><p> WriteString1602(0x80,"Humi:40%"); </p><p> Writ
69、eString1602(0x8c,"<70%");</p><p> WriteString1602(0xc0,"Temp:31.5"); </p><p> WriteString1602(0xcc,"<30"); </p><p> WriteInstr1602(0x40);//Se
70、t CGRAM address</p><p> for(i=0;i<8;i++) WriteData1602(CGMode[i]);</p><p> WriteInstr1602(0xc9);//Set DDRAM address</p><p> WriteData1602(0);</p><p> WriteInstr
71、1602(0xcf);//Set DDRAM address</p><p> WriteData1602(0);</p><p><b> EA=1;</b></p><p><b> ET1=1;</b></p><p> TMOD=0x15;</p><p>
72、<b> TH1=0x3C;</b></p><p> TL1=0xB0;//定時50ms</p><p> TR1=1; //開始定時</p><p> TR0=1; //開始計數(shù)</p><p><b> for(;;)</b></p><p><b
73、> {</b></p><p> if(Updata) //數(shù)據(jù)更新</p><p><b> {</b></p><p><b> Updata=0;</b></p><p> WriteInstr1602(0xc8);</p><p> W
74、riteData1602(TempDec+48);</p><p> WriteInstr1602(0xc5);</p><p> WriteData1602(TempInt/10+48);</p><p> WriteInstr1602(0xc6);</p><p> WriteData1602(TempInt%10+48);&
75、lt;/p><p> if(Freq<6600) Humi=(7440-Freq)/14;</p><p> else Humi=(7351-Freq)/12.5;</p><p> Humi=Humi-30;</p><p> if(Humi>99) Humi=99;</p><p> WriteI
76、nstr1602(0x85);</p><p> WriteData1602(Humi/10+48); </p><p> WriteInstr1602(0x86);</p><p> WriteData1602(Humi%10+48); </p><p> switch(Func)</p><p><
77、b> {</b></p><p> case 0: WriteInstr1602(0x0c);break;</p><p> case 1: WriteInstr1602(0x0f);</p><p> WriteInstr1602(0x8d);</p><p><b> break;</b>
78、</p><p> case 2: WriteInstr1602(0x8e);break;</p><p> case 3: WriteInstr1602(0xcd);break;</p><p> case 4: WriteInstr1602(0xce);break;</p><p><b> default:;</
79、b></p><p><b> }</b></p><p> if(Humi>(M0*10+M1)||TempInt>(M2*10+M3)) Beep=0;</p><p> else Beep=1;</p><p><b> }</b></p><p&
80、gt; if(!Button) //檢測按鍵</p><p><b> {</b></p><p> for(i=200;i>0&&(!Button);i--) Delay5ms();</p><p><b> if(!i) </b></p><p><b>
81、; {</b></p><p><b> Func++;</b></p><p> if(Func==5) Func=0;</p><p> switch(Func)</p><p><b> {</b></p><p> case 0: WriteI
82、nstr1602(0x0c);break;</p><p> case 1: WriteInstr1602(0x0f);</p><p> WriteInstr1602(0x8d);</p><p><b> break;</b></p><p> case 2: WriteInstr1602(0x8e);bre
83、ak;</p><p> case 3: WriteInstr1602(0xcd);break;</p><p> case 4: WriteInstr1602(0xce);break;</p><p><b> default:;</b></p><p><b> }</b></p&
84、gt;<p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p> switch(Func)</p><p><b> {</b></p><
85、p> case 0: break;</p><p> case 1: WriteInstr1602(0x8d);</p><p><b> M0++;</b></p><p> if(M0==10) M0=0;</p><p> WriteData1602(M0+48);</p><p
86、> WriteInstr1602(0x8d);break;</p><p> case 2: WriteInstr1602(0x8e);</p><p><b> M1++;</b></p><p> if(M1==10) M1=0;</p><p> WriteData1602(M1+48);</
87、p><p> WriteInstr1602(0x8e);break;</p><p> case 3: WriteInstr1602(0xcd);</p><p><b> M2++;</b></p><p> if(M2==10) M2=0;</p><p> WriteData1602(
88、M2+48);</p><p> WriteInstr1602(0xcd);break;</p><p> case 4: WriteInstr1602(0xce);</p><p><b> M3++;</b></p><p> if(M3==10) M3=0;</p><p> Wr
89、iteData1602(M3+48);</p><p> WriteInstr1602(0xce);break;</p><p><b> default:;</b></p><p><b> }</b></p><p><b> }</b></p>&l
90、t;p> while(!Button); //判斷按鍵是否釋放</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void Timer1ISP(void) interrupt 3
91、 //定時器中斷</p><p><b> {</b></p><p><b> TH1=0x3C;</b></p><p><b> TL1=0xB0;</b></p><p> Counter++;</p><p> if(Counte
92、r==20)</p><p><b> {</b></p><p><b> Updata=1;</b></p><p><b> TR0=0;</b></p><p><b> TR1=0;</b></p><p> C
93、ounter=0;</p><p> Freq=TH0*256+TL0;</p><p> temp_sensing();</p><p><b> TH0=0;</b></p><p><b> TL0=0;</b></p><p><b> TH1=
94、0x3C;</b></p><p><b> TL1=0xB0;</b></p><p><b> TR1=1;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><
95、;p><b> }</b></p><p> //**************************************************</p><p> //**************************************************DS18B20 溫度檢測程序</p><p> void
96、temp_sensing() //DS18B20溫度檢測</p><p><b> { </b></p><p> unsigned char tem_lsb,tem_msb;</p><p><b> EA=0;</b></p><p> ds_initial();</p>
97、<p> ds_write(0xcc); //skip rom detect</p><p> //ds_write(0x4e); //write scratchpad</p><p> ds_write(0x44); //conver T</p><p> //while(!ds_dat); //over?</p><p
98、> ds_initial();</p><p> ds_write(0xcc); //skip rom</p><p> ds_write(0xbe);//read scratchpad</p><p> tem_lsb=ds_read();</p><p> tem_msb=ds_read();</p>&l
99、t;p> ds_initial(); //reset</p><p><b> EA=1;</b></p><p> TempDec=((tem_lsb/2)&0x07)*1.25;</p><p> TempInt=tem_msb*16+tem_lsb/16;</p><p><b&
100、gt; }</b></p><p> void ds_write(unsigned char command) //DS18B20寫數(shù)據(jù)</p><p><b> {</b></p><p> unsigned char i;</p><p> for(i=8;i>0;i--)</p
101、><p><b> {</b></p><p> ds_dat=0;</p><p><b> delay(7);</b></p><p> ds_dat=command&0x01;</p><p> command=command/2;</p>
102、<p> delay(7);//ds18b20 sampling</p><p><b> ds_dat=1;</b></p><p><b> delay(2);</b></p><p><b> }</b></p><p><b> }&
103、lt;/b></p><p> unsigned char ds_read() //DS18B20讀數(shù)據(jù)</p><p><b> {</b></p><p> unsigned char i,info;</p><p> for(i=8;i>0;i--)</p><p>&l
104、t;b> {</b></p><p><b> ds_dat=0;</b></p><p> //delay(1);</p><p> info=info/2;</p><p><b> ds_dat=1;</b></p><p> if(d
105、s_dat==1)</p><p> info=info|0x80;</p><p> delay(27);</p><p><b> delay(1);</b></p><p><b> }</b></p><p> return info;</p>
106、<p><b> }</b></p><p> void ds_initial() //DS18B20 初始化</p><p><b> {</b></p><p><b> ds_dat=0;</b></p><p> delay(247); //5
107、00us delay</p><p><b> ds_dat=1;</b></p><p> while(ds_dat);//waiting for presence pulse </p><p> while(!ds_dat);//duration of presence pulse</p><p><
108、b> }</b></p><p> void delay(unsigned char i) //delay time 2*i+5 //延時函數(shù)</p><p><b> {</b></p><p> while(--i);</p><p><b> }</b></p
109、><p> //**************************************************</p><p> //**************************************************1602 控制程序</p><p> void Initial1602(void) //1602液晶初始化</p>
110、;<p><b> {</b></p><p> unsigned char i;</p><p> for(i=0;i<3;i++) Delay5ms();//Wait for 15ms</p><p> WriteInstr1602(0x30);</p><p> Delay5ms()
111、;</p><p> WriteInstr1602(0x28);//Function set:DL:0 4bit transfer mode; N:1; F:0 </p><p> WriteInstr1602(0x0c);//Display set</p><p> WriteInstr1602(0x01);//Clr screen (takes
112、much time)</p><p> Delay5ms();</p><p> WriteInstr1602(0x06);//Entry mode set</p><p><b> }</b></p><p> void WriteInstr1602(unsigned char Instr) //1602寫
113、指令</p><p><b> {</b></p><p><b> RS=0;</b></p><p><b> RW=0;</b></p><p> DataBus|=0xf0;</p><p> DataBus&=Instr|0x
114、0f;//Write high 4bits</p><p><b> EN=1;</b></p><p><b> _nop_();</b></p><p><b> EN=0;</b></p><p> DataBus|=0xf0;</p><p
115、> DataBus&=(Instr<<4)|0x0f;//Write low 4bits</p><p><b> EN=1;</b></p><p><b> _nop_();</b></p><p><b> EN=0;</b></p><p
116、> Delay100us();</p><p><b> }</b></p><p> void WriteData1602(unsigned char Data) //1602寫數(shù)據(jù)</p><p><b> {</b></p><p><b> RS=1;</b&
117、gt;</p><p><b> RW=0;</b></p><p> DataBus|=0xf0;</p><p> DataBus&=Data|0x0f;//Write high 4bits</p><p><b> EN=1;</b></p><p>
118、<b> _nop_();</b></p><p><b> EN=0;</b></p><p> DataBus|=0xf0;</p><p> DataBus&=(Data<<4)|0x0f;//Write low 4bits</p><p><b>
119、EN=1;</b></p><p><b> _nop_();</b></p><p><b> EN=0;</b></p><p> Delay100us();</p><p><b> }</b></p><p> void
120、WriteString1602(unsigned char addr,unsigned char code *s) //1602 寫字符串</p><p><b> {</b></p><p><b> EA=0;</b></p><p> WriteInstr1602(addr);</p><
121、;p> for(;*s!=0;s++)WriteData1602(*s);</p><p><b> EA=1;</b></p><p><b> }</b></p><p> void Delay5ms(void) //延時5ms</p><p><b> {<
122、/b></p><p> unsigned char a,b;</p><p> for(b=19;b>0;b--)</p><p> for(a=130;a>0;a--);</p><p><b> }</b></p><p> void Delay100us(voi
123、d) //延時100us</p><p><b> { </b></p><p> unsigned char a,b;</p><p> for(b=1;b>0;b--)</p><p> for(a=47;a>0;a--);</p><p><b> 附錄二:
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 多功能溫濕度計設(shè)計畢業(yè)論文
- 多功能溫濕度計設(shè)計畢業(yè)論文
- 數(shù)字溫濕度計設(shè)計
- 畢業(yè)設(shè)計(論文)--數(shù)字溫濕度計的設(shè)計
- 單片機畢業(yè)設(shè)計--多功能空氣濕度計設(shè)計
- 畢業(yè)設(shè)計-- 單片機的溫濕度計設(shè)計
- 電子溫濕度計選型
- 數(shù)字溫濕度計--硬件設(shè)計畢業(yè)論文
- 畢業(yè)設(shè)計--基于單片機技術(shù)的數(shù)字溫濕度計設(shè)計
- 室內(nèi)空氣溫濕度調(diào)節(jié)
- jjg(吉) 41-2016 數(shù)字溫濕度計
- 多功能溫濕度控制儀-電氣自動化畢業(yè)設(shè)計
- 基于CAN總線的溫濕度計的研制.pdf
- 畢業(yè)論文--基于單片機的室內(nèi)溫濕度計的設(shè)計
- 機械式溫濕度計測量不確定度的評估
- jjg(蘇)99-2010數(shù)字溫濕度計檢定規(guī)程
- 畢業(yè)設(shè)計(論文)+基于msp430單片機的便攜式溫濕度計設(shè)計與開發(fā)
- 畢業(yè)設(shè)計----溫濕度的監(jiān)測系統(tǒng)
- 倉庫溫濕度監(jiān)測系統(tǒng)畢業(yè)設(shè)計
- 大棚溫濕度測控系統(tǒng)畢業(yè)設(shè)計
評論
0/150
提交評論