版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)論文</b></p><p> 課題:基于AT89C51溫濕度的設(shè)</p><p> 計(jì)與仿真 </p><p> 專(zhuān) 業(yè) </p><p> 學(xué)生姓名 </p><p&g
2、t; 班 級(jí) </p><p> 學(xué) 號(hào) </p><p> 指導(dǎo)教師 </p><p> 完成日期 </p><p><b> 摘 要</b></p><p> 溫
3、濕度監(jiān)控這一的領(lǐng)域發(fā)展的很快。由于單片機(jī)控制的測(cè)溫測(cè)濕系統(tǒng)具有體積小、功能強(qiáng)、集成度高、可靠性高、抗干擾能力等優(yōu)于一般CPU的優(yōu)點(diǎn),所以越來(lái)越多的應(yīng)用到溫室控制。本文設(shè)計(jì)了一種基于單片機(jī)的溫濕度監(jiān)控系統(tǒng)進(jìn)行測(cè)量,實(shí)現(xiàn)溫室內(nèi)溫濕度的精確監(jiān)測(cè)。本系統(tǒng)采用多個(gè)數(shù)字溫濕度傳感器ds18b20來(lái)測(cè)量室內(nèi)的溫濕度,簡(jiǎn)化了系統(tǒng)硬件設(shè)計(jì),提高了測(cè)量精度?;趩纹瑱C(jī)AT89C51的電路,結(jié)構(gòu)簡(jiǎn)潔,大大節(jié)省了I/O口資源,并且具有現(xiàn)場(chǎng)獨(dú)立顯示的功能。該系統(tǒng)
4、性能可靠,結(jié)構(gòu)簡(jiǎn)單,能實(shí)現(xiàn)對(duì)溫室內(nèi)溫濕度的監(jiān)測(cè)。</p><p> 溫室度一般應(yīng)用于許多場(chǎng)合: 食品、電子生產(chǎn)車(chē)間、藥房、冰箱、冷庫(kù)、庫(kù)房、機(jī)房、實(shí)驗(yàn)室、工業(yè)暖通、圖書(shū)館、檔案室、博物館、孵房、溫室大棚、煙草、糧庫(kù)、醫(yī)院等其他需要環(huán)境監(jiān)測(cè)領(lǐng)域。如:溫室溫濕度監(jiān)控、大棚溫濕度監(jiān)控、煙溫濕度監(jiān)控、醫(yī)院溫濕度監(jiān)控、糧庫(kù)溫濕度監(jiān)測(cè)、糧站溫濕度監(jiān)測(cè)。</p><p><b> Abst
5、ract</b></p><p> Temperature and humidity monitoring the development of this area soon. Temperature Controlled by measuring the wet system is small, powerful, high integration, high reliability, anti-
6、jamming ability than the general advantage of CPU, so more and more applications to the greenhouse control. This paper designed a microcontroller-based monitoring system to measure temperature and humidity to achieve the
7、 precise temperature and humidity inside the greenhouse to monitor. The system uses multiple digi</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> Abstrac
8、tI</p><p><b> 目 錄II</b></p><p><b> 第一章 緒論1</b></p><p> 1.1 選題背景1</p><p> 1.2 設(shè)計(jì)基本要求1</p><p><b> 1.3 硬件1</b>
9、</p><p> 第二章 總體方案2</p><p> 2.1 溫度傳感器的選擇2</p><p> 2.2 濕度傳感器的選擇3</p><p> 2.3 CPU的選擇4</p><p> 2.4 顯示方案4</p><p> 第三章 硬件設(shè)計(jì)方案5</p>
10、<p> 3.1 總方案圖5</p><p> 3.2 主控制芯片AT89C515</p><p> 3.3 DS18B206</p><p> 3.4 LCD1602顯示器7</p><p> 3.5 hs1101濕度8</p><p> 第四章 軟件設(shè)計(jì)方案10</p&g
11、t;<p> 4.1 主函數(shù)10</p><p> 4.2 LCD1602的送顯示數(shù)據(jù)函數(shù)10</p><p> 4.3 溫度數(shù)據(jù)讀取函數(shù)12</p><p> 4.4 濕度數(shù)據(jù)讀取函數(shù)15</p><p><b> 第五章 調(diào)試17</b></p><p>
12、5.1 延時(shí)調(diào)試17</p><p> 5.2 讀溫度調(diào)試18</p><p> 5.3 濕度調(diào)試20</p><p> 5.4 1602的調(diào)試21</p><p> 5.5 總調(diào)試22</p><p><b> 第六章 結(jié)論23</b></p><p&g
13、t;<b> 致 謝24</b></p><p><b> 參考資料25</b></p><p><b> 附錄I26</b></p><p><b> 附錄II27</b></p><p><b> 附錄III28<
14、/b></p><p><b> 第一章 緒論 </b></p><p><b> 1.1 選題背景</b></p><p> 防潮、防霉、防腐、防爆是倉(cāng)庫(kù)日常工作的重要內(nèi)容,是衡量倉(cāng)庫(kù)管理質(zhì)量的重要指標(biāo)。它直接影響到儲(chǔ)備物資的使用壽命和工作可靠性。為保證日常工作的順利進(jìn)行,首要問(wèn)題是加強(qiáng)倉(cāng)庫(kù)內(nèi)溫度與濕度的監(jiān)測(cè)
15、工作。但傳統(tǒng)的方法是用與濕度表、毛發(fā)濕度表、雙金屬式測(cè)量計(jì)和濕度試紙等測(cè)試器材,通過(guò)人工進(jìn)行檢測(cè),對(duì)不符合溫度和濕度要求的庫(kù)房進(jìn)行通風(fēng)、去濕和降溫等工作。這種人工測(cè)試方法費(fèi)時(shí)費(fèi)力、效率低,且測(cè)試的溫度及濕度誤差大,隨機(jī)性大。因此我們需要一種造價(jià)低廉、使用方便且測(cè)量準(zhǔn)確的溫濕度測(cè)量?jī)x。</p><p> 1.2 設(shè)計(jì)基本要求</p><p><b> 1.監(jiān)測(cè)溫度濕度</
16、b></p><p><b> 2.顯示溫度濕度</b></p><p> 3.溫度范圍-55到125度</p><p> 4.濕度范圍大于0小于1</p><p> DS18B20測(cè)溫范圍-55~+125度,本文設(shè)計(jì)的濕度最高顯示99度。濕度用的是脈沖發(fā)生器替代hs1101,因?yàn)槲覀冇玫姆抡孳浖](méi)用hs1
17、101這個(gè)硬件,所以用脈沖發(fā)生器替代。監(jiān)測(cè)濕度是0到100%,總的來(lái)說(shuō)一般濕度很少會(huì)出現(xiàn)0或100%的情況。</p><p><b> 1.3 硬件</b></p><p> 設(shè)計(jì)需要的元器件LCD1602液晶顯示器,at89c51處理器,ds18b20溫度監(jiān)測(cè)器,hs1101替代品脈沖發(fā)生器,效果和濕度監(jiān)測(cè)的設(shè)計(jì)是差不多的。</p><p&g
18、t;<b> 第二章 總體方案</b></p><p> 2.1 溫度傳感器的選擇</p><p> 方案一:采用熱電阻溫度傳感器。熱電阻是利用導(dǎo)體的電阻隨溫度變化的特性制成的測(cè)溫元件?,F(xiàn)應(yīng)用較多的有鉑、銅、鎳等熱電阻。其主要的特點(diǎn)為精度高、測(cè)量范圍大、便于遠(yuǎn)距離測(cè)量。鉑的物理、化學(xué)性能極穩(wěn)定,耐氧化能力強(qiáng),易提純,復(fù)制性好,工業(yè)性好,電阻率較高,因此,鉑電阻用
19、于工業(yè)檢測(cè)中高精密測(cè)溫和溫度標(biāo)準(zhǔn)。缺點(diǎn)是價(jià)格貴,溫度系數(shù)小,受到磁場(chǎng)影響大,在還原介質(zhì)中易被玷污變脆。按IEC標(biāo)準(zhǔn)測(cè)溫范圍-200~650℃,百度電阻比W(100)=1.3850時(shí),R0為100Ω和10Ω,其允許的測(cè)量誤差A(yù)級(jí)為±(0.15℃+0.002 |t|),B級(jí)為±(0.3℃+0.005 |t|)。銅電阻的溫度系數(shù)比鉑電阻大,價(jià)格低,也易于提純和加工;但其電阻率小,在腐蝕性介質(zhì)中使用穩(wěn)定性差。在工業(yè)中用于-5
20、0~180℃測(cè)溫。</p><p> 方案二:采用AD590,它的測(cè)溫范圍在-55℃~+150℃之間,而且精度高。M檔在測(cè)溫范圍內(nèi)非線形誤差為±0.3℃。AD590可以承受44V正向電壓和20V反向電壓,因而器件反接也不會(huì)損壞。使用可靠。它只需直流電源就能工作,而且,無(wú)需進(jìn)行線性校正,所以使用也非常方便,借口也很簡(jiǎn)單。作為電流輸出型傳感器的一個(gè)特點(diǎn)是,和電壓輸出型相比,它有很強(qiáng)的抗外界干擾能力。AD5
21、90的測(cè)量信號(hào)可遠(yuǎn)傳百余米。</p><p> 方案三:采用ds18b20溫度監(jiān)測(cè)器,溫度顯示范圍是-55到125度。DS18B20</p><p> 數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場(chǎng)合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號(hào)多種多樣,有LTM8877,LTM8874等等。主要根據(jù)應(yīng)用場(chǎng)合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測(cè)溫,高爐水循環(huán)測(cè)溫
22、,鍋爐測(cè)溫,機(jī)房測(cè)溫,農(nóng)業(yè)大棚測(cè)溫,潔凈室測(cè)溫,彈藥庫(kù)測(cè)溫等各種非極限溫度場(chǎng)合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域。技術(shù)性能描述: 1. 獨(dú)特的單線接口方式,DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。2 .測(cè)溫范圍 -55℃~+125℃,固有測(cè)溫分辨率0.5℃。3.支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個(gè),
23、實(shí)現(xiàn)多點(diǎn)測(cè)溫,如果數(shù)量過(guò)多,會(huì)使供電電源電壓過(guò)低,從而造成信號(hào)傳輸?shù)牟环€(wěn)定。4. 工作電源: 3~5V/DC 5. 在使用中不需要任何外圍元件。6. 測(cè)量結(jié)果以9~12位數(shù)字量方式串行傳送。7. 不銹鋼保護(hù)管直徑 Φ6。8. 適用于DN15~25, DN40~DN250各種介質(zhì)工業(yè)管道和狹小空間設(shè)備測(cè)溫。9. 標(biāo)準(zhǔn)安裝</p><p> 綜合比較方案一與方案二和方案三,方案一和方案二價(jià)格都比較貴,方案三先對(duì)
24、而言便宜點(diǎn),并且方案三的性能指標(biāo)也適合設(shè)計(jì)系統(tǒng)的要求,所以方案三更為適合于本設(shè)計(jì)系統(tǒng)對(duì)于溫度傳感器的選擇。</p><p> 2.2 濕度傳感器的選擇</p><p> 測(cè)量空氣濕度的方式很多,其原理是根據(jù)某種物質(zhì)從其周?chē)目諝馕账趾笠鸬奈锢砘蚧瘜W(xué)性質(zhì)的變化,間接地獲得該物質(zhì)的吸水量及周?chē)諝獾臐穸?。電容式、電阻式和濕漲式濕敏原件分別是根據(jù)其高分子材料吸濕后的介電常數(shù)、電阻率和體
25、積隨之發(fā)生變化而進(jìn)行濕度測(cè)量的。</p><p> 方案一:采用HOS-201濕敏傳感器。HOS-201濕敏傳感器為高濕度開(kāi)關(guān)傳感器,它的工作電壓為交流1V以下,頻率為50HZ~1KHZ,測(cè)量濕度范圍為0~100%RH,工作溫度范圍為0~50℃,阻抗在75%RH(25℃)時(shí)為1MΩ。這種傳感器原是用于開(kāi)關(guān)的傳感器,不能在寬頻帶范圍內(nèi)檢測(cè)濕度,因此,主要用于判斷規(guī)定值以上或以下的濕度電平。然而,這種傳感器只限于一
26、定范圍內(nèi)使用時(shí)具有良好的線性,可有效地利用其線性特性。</p><p> 方案二:采用HS1100/HS1101濕度傳感器。HS1100/HS1101電容傳感器,在電路構(gòu)成中等效于一個(gè)電容器件,其電容量隨著所測(cè)空氣濕度的增大而增大。不需校準(zhǔn)的完全互換性,高可靠性和長(zhǎng)期穩(wěn)定性,快速響應(yīng)時(shí)間,專(zhuān)利設(shè)計(jì)的固態(tài)聚合物結(jié)構(gòu),由頂端接觸(HS1100)和側(cè)面接觸(HS1101)兩種封裝產(chǎn)品,適用于線性電壓輸出和頻率輸出兩種
27、電路,適宜于制造流水線上的自動(dòng)插件和自動(dòng)裝配過(guò)程等。</p><p> 相對(duì)濕度在1%---100%RH范圍內(nèi);電容量由16pF變到200pF,其誤差不大于±2%RH;響應(yīng)時(shí)間小于5S;溫度系數(shù)為0.04 pF/℃??梢?jiàn)精度是較高的。</p><p> 綜合比較方案一與方案二,方案一雖然滿足精度及測(cè)量濕度范圍的要求,但其只限于一定范圍內(nèi)使用時(shí)具有局限性。而且還不具備在本設(shè)計(jì)系
28、統(tǒng)中對(duì)溫度-55~125℃的要求,因此,我們選擇方案二來(lái)作為本設(shè)計(jì)的濕度傳感器。</p><p> 2.3 CPU的選擇</p><p> 方案一:采用CPLD作為主控制器控制外圍電路進(jìn)行,時(shí)鐘控制、溫度測(cè)量、濕度測(cè)量、數(shù)據(jù)處理。此方案邏輯電路復(fù)雜,功耗高,CPLD主控制器對(duì)數(shù)據(jù)處理靈活性較低。而且采用CPLD價(jià)格較貴。</p><p> 方案二:基于51系列
29、單片機(jī)來(lái)實(shí)現(xiàn)。目前單片機(jī)技術(shù)比較成熟,功能也比較強(qiáng)大,此方案的系統(tǒng)設(shè)計(jì)結(jié)構(gòu)圖如圖2-1所示。根據(jù)系統(tǒng)設(shè)計(jì)的要求和設(shè)計(jì)思路,確定該系統(tǒng)的系統(tǒng)設(shè)計(jì)結(jié)構(gòu)圖。硬件電路主要由MCU微處理控制器單元、復(fù)位電路、晶振電路、溫度測(cè)量模塊、濕度測(cè)量模塊、LCD液晶模塊和電源構(gòu)成。此系統(tǒng)硬件簡(jiǎn)潔,將復(fù)雜的硬件功能用軟件實(shí)現(xiàn),控制多個(gè)硬件電路的執(zhí)行因此系統(tǒng)控制靈活,能很好地滿足本題的基本要求和擴(kuò)展要求。而且編程靈活、調(diào)試方便。</p><
30、p> 從這兩種電路設(shè)計(jì)方案的比較而言,利用單片微型計(jì)算機(jī)及外圍電路編寫(xiě)軟件程序來(lái)設(shè)計(jì)溫濕度的測(cè)量顯示,簡(jiǎn)單靈活,而且可擴(kuò)展各種功能,能完全達(dá)到設(shè)計(jì)要求,體現(xiàn)了現(xiàn)代計(jì)算機(jī)工具的方便、簡(jiǎn)捷、準(zhǔn)確性。故采用第二種方案。</p><p><b> 2.4 顯示方案</b></p><p> 方案一:元器件LCD1602液晶顯示器。選用LCD1602液晶顯示器可以清
31、楚的</p><p> 將溫度和濕度顯示出來(lái),效果比較好。第一行顯示溫度,第二行顯示濕度。LCD1602液晶顯示器是一塊價(jià)廉物美的器件,其體積小,控制簡(jiǎn)單,使用方便。它能顯示2行16列的數(shù)字或英文信息,另外連接它的線很少,只要8根數(shù)據(jù)線和3根控制線,這樣給使用帶來(lái)很大的方便,節(jié)約單片機(jī)I/O口。</p><p> 方案二:數(shù)碼管顯示。數(shù)碼管亮度高、體積小、重量輕,但其顯示信息簡(jiǎn)單、有限
32、,并且需要較高的驅(qū)動(dòng)能力,功耗高,人機(jī)交互功能差,較難控制。</p><p> 綜合比較方案一和方案二,方案一比較適合我設(shè)計(jì)的系統(tǒng)的要求,并且價(jià)格也很合理,顯示效果比較好。</p><p> 第三章 硬件設(shè)計(jì)方案</p><p><b> 3.1 總方案圖 </b></p><p> 設(shè)計(jì)需要的元器件LCD160
33、2液晶顯示器,at89c51處理器,ds18b20溫度監(jiān)測(cè)器,hs1101替代品脈沖發(fā)生器,效果和濕度監(jiān)測(cè)的設(shè)計(jì)是差不多的。</p><p> 3.2 主控制芯片AT89C51</p><p><b> 管腳說(shuō)明:</b></p><p> VCC:供電電壓。 </p><p> GND:接地。 <
34、/p><p> P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P0口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(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門(mén)電流。</p
35、><p> P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 </p><p> P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低
36、,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 </p><p> P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口
37、寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 </p><p> 3.3 DS18B20 </p><p> DS18B20數(shù)字溫度計(jì)采用了1-wire,即單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。</p><p> DS18B20采用的是外部獨(dú)立電源供電且只接一只DS18B20
38、。</p><p> DS18B20直接與單片機(jī)P1.0口連接,將采集過(guò)來(lái)的數(shù)字信號(hào)直接處理。</p><p> DS18B20是這樣測(cè)溫的:用一個(gè)高溫度系數(shù)的振蕩器確定一個(gè)門(mén)周期,內(nèi)部計(jì)數(shù)器在這個(gè)門(mén)周期內(nèi)對(duì)一個(gè)低溫度系數(shù)的振蕩器的脈沖進(jìn)行計(jì)數(shù)來(lái)得到溫度值。計(jì)數(shù)器預(yù)置到對(duì)應(yīng)于-55度的一個(gè)值。如果計(jì)數(shù)器在門(mén)周期結(jié)束前到達(dá)0,測(cè)溫度寄存器是值增加,表明所測(cè)溫度大于-55度。同時(shí),計(jì)數(shù)器被
39、復(fù)位到一個(gè)值,這個(gè)值由斜坡累加器電路確定,斜坡式累加器用來(lái)補(bǔ)償感溫振蕩器的拋物線特性。然后計(jì)數(shù)器又開(kāi)始計(jì)數(shù)直到0,如果門(mén)周期仍未結(jié)束,將重復(fù)這一過(guò)程。</p><p> DS18B20存儲(chǔ)器結(jié)構(gòu)如上圖,存儲(chǔ)器由一個(gè)暫存RAM和一個(gè)存儲(chǔ)高低溫度報(bào)警觸發(fā)值TH和TL的非易失性電可檫除EERAM組成。當(dāng)在單線總線上通訊時(shí),暫存器幫助確保數(shù)據(jù)的完整性。數(shù)據(jù)先被寫(xiě)入暫存器,這里的數(shù)據(jù)可被讀回。數(shù)據(jù)經(jīng)過(guò)校驗(yàn)后,用一個(gè)拷貝存
40、儲(chǔ)器命令會(huì)把數(shù)據(jù)傳到非易性EERAM中。這一過(guò)程確保更改存儲(chǔ)器時(shí)數(shù)據(jù)的完整性。由于DS18B20是單總線器件,并且只有三個(gè)引腳,VCC,GND和I/O總線引腳,所以在硬件連接上非常簡(jiǎn)單,按照典型電路VCC接電源,GND接地,在本項(xiàng)目中DS18B20的I/O總線對(duì)應(yīng)的控制器引腳為單片機(jī)的P1.0,所以DS18B20總線I/O連接單片機(jī)的P1.0。</p><p> DS18B20的單總線決定了它對(duì)讀/寫(xiě)的數(shù)據(jù)位有
41、著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來(lái)保證各位數(shù)據(jù)傳輸?shù)恼_性和完善性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序,讀時(shí)序,寫(xiě)時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單</p><p> 總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫(xiě)時(shí)序開(kāi)始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫(xiě)命令后,主機(jī)需要啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。</p><p>
42、 3.4 LCD1602顯示器</p><p> LCD1602液晶是一個(gè)非常方便使用的顯示設(shè)備,以其微功耗、小體積、使用靈活等諸多優(yōu)點(diǎn)在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中得到越來(lái)越廣泛的應(yīng)用。液晶</p><p> 有字符型和點(diǎn)陣型之分,一般點(diǎn)陣型液晶顯示在這個(gè)項(xiàng)目里面使用的LCD1602液晶,可以同時(shí)顯示16x02即32個(gè)字符。該液晶屏共有16個(gè)引腳,其中RB0~RB7是數(shù)據(jù)/命令傳輸
43、口,15、16腳BLK和BLA是背光電源和地,1、2腳分別是VSS和VCC,液晶顯示的地和電源,3腳VO是液晶的對(duì)比度調(diào)節(jié)引腳,所以接入變阻器R2后可以實(shí)現(xiàn)對(duì)液晶顯示對(duì)比度的調(diào)節(jié),4、5、6腳分別是RS、RW、EA端口,也是控制端口,所有的對(duì)液晶的讀寫(xiě)數(shù)據(jù),寫(xiě)命令等操作都需要這三個(gè)端口來(lái)控制。數(shù)據(jù)、命令選擇端口RS與單片機(jī)的P0.5腳連接,讀、寫(xiě)選擇端口與單片機(jī)的P0.6腳連接,使能端EA與單片機(jī)的P0.7腳連接,數(shù)據(jù)口RB0~RB7是
44、與單片機(jī)的P2.0~P2.7口相連接,數(shù)據(jù)并行傳輸。</p><p> 對(duì)該液晶是操作是相對(duì)簡(jiǎn)單的,它是一個(gè)靜態(tài)顯示設(shè)備,不需要為了維持它的顯示不斷的掃描,只需再更改顯示內(nèi)容時(shí)對(duì)它送數(shù)據(jù)。</p><p> 3.5 hs1101濕度</p><p> Hs1101是一個(gè)外觀像三極管的元器件,上圖該電路是典型的非穩(wěn)態(tài)設(shè)計(jì)為555。該HS1100/HS1101,作
45、為變量使用。電容器,連接到觸發(fā)和THRES引腳。引腳7用作短路引腳電阻R7。該HS1100/HS1101等效電容充電,通過(guò)R6和R7的閾值電壓(約0.67Vcc)和只通過(guò)R6放電觸發(fā)水平(約0.33Vcc)是縮短了7針,因?yàn)镽7的地面。由于充電和放電運(yùn)行的傳感器,通過(guò)不同的電阻,R6和R7的,占空比取決于提供一個(gè)輸出的占空比接近50%,R7的應(yīng)該是非常低的比R6的但從來(lái)沒(méi)有在一個(gè)最低值。電阻R3是短路保護(hù)。 555必須是CMOS版本R9
46、的不平衡內(nèi)部溫度補(bǔ)償計(jì)劃555為了引進(jìn)一個(gè)溫度系數(shù)相匹配的HS1100/HS1101溫度系數(shù)。在所有情況下,R9應(yīng)該是1%電阻與溫度系數(shù)為100ppm一個(gè)像所有最高其他R - C的計(jì)時(shí)器電阻。</p><p> 因?yàn)樵陔娐分性O(shè)計(jì)沒(méi)用到hs1101上面那個(gè)電路所以不在介紹的詳細(xì),我用替代品脈沖發(fā)生器來(lái)設(shè)計(jì),效果是一樣的。</p><p> 由上表和圖曲線易得濕度和頻率很好地滿足線性關(guān)系,
47、所以通過(guò)上表或圖3-6可以得到濕度和頻率的數(shù)學(xué)關(guān)系近似滿足如下方程:</p><p> RH=588-0.8* Frequency(6330<Frequency≤7350)</p><p> RH=586-0.8* Frequency(6075≤Frequency≤6330)</p><p> 該電路是典型的非穩(wěn)態(tài)設(shè)計(jì)為555。該HS1101,作為變量使用
48、電容器,連接</p><p> 到觸發(fā)和THRES引腳。引腳7用作短路引腳電阻R7。該HS1101等效電容充電,通過(guò)R6和R7的閾值電壓(約0.67Vcc)和只通過(guò)R6放電觸發(fā)水平(約0.33Vcc)是縮短了7針,因?yàn)镽7的地面。由于充電和放電運(yùn)行的傳感器,通過(guò)不同的電阻,R6和R7的,占空比取決于:</p><p> Thigh=C@%RH*(R6+R7)*ln2Tlow=C@
49、%RH*R2*ln2</p><p> F=1/(Thigh+Tlow)=1/(C@%RH*(R7+2*R6)*ln2)</p><p> 輸出循環(huán)周期=Thigh*F=R6/(R7+2*R6) 為了使循環(huán)時(shí)間降低50%,則與R6相比,R7應(yīng)該非常小,但是不要低于最小值。電阻R8是為了短路保護(hù),555必須為CMOS。</p><p><b> 原理:
50、</b></p><p> 該電路構(gòu)成了濕度—電容—頻率的轉(zhuǎn)換,由該電路產(chǎn)生的對(duì)環(huán)境濕度變化而變化的頻率經(jīng)單片機(jī)的外部計(jì)數(shù)器1的引腳P3.5輸入,由軟件根據(jù)上述的計(jì)算公式計(jì)算得出濕度值。</p><p><b> 軟件設(shè)計(jì)方案</b></p><p> 軟件采用模塊化設(shè)計(jì),在程序中以一個(gè)主函數(shù),多個(gè)子函數(shù)的方式編寫(xiě),這樣有利程
51、序的可讀、可移植等。</p><p><b> 函數(shù)共包含:</b></p><p><b> 主函數(shù);</b></p><p> LCD1602的送顯示數(shù)據(jù)函數(shù);</p><p><b> 溫度數(shù)據(jù)讀取函數(shù);</b></p><p><b
52、> 濕度數(shù)據(jù)讀取函數(shù)。</b></p><p><b> 4.1 主函數(shù)</b></p><p> 主函數(shù)是需要構(gòu)成一個(gè)無(wú)限循環(huán)的,所以在送完顯示后需要再次調(diào)用溫濕度檢測(cè)函數(shù)來(lái)獲取新的數(shù)據(jù)以及構(gòu)成一個(gè)循環(huán),但是由于實(shí)際使用中環(huán)境的溫濕度變化沒(méi)有那么快,所以每次讀完送顯示后延時(shí)一會(huì)兒再讀取。</p><p> 主函數(shù)的初
53、始化中包括了兩個(gè)初始化,在濕度檢測(cè)函數(shù)中所需要用到的定時(shí)器方式設(shè)置會(huì)在主函數(shù)開(kāi)始初始化,并且液晶顯示函數(shù)的初始化也在主函數(shù)的初始化部分。</p><p> 4.2 LCD1602的送顯示數(shù)據(jù)函數(shù)</p><p> 我設(shè)計(jì)的監(jiān)測(cè)溫濕度使用1602的的一般流程基本是:</p><p><b> A:初始化</b></p><
54、;p> 初始化里面一般有設(shè)置顯示行、清屏、設(shè)置光標(biāo)的開(kāi)關(guān)、光標(biāo)的閃爍、設(shè)置起始地址、設(shè)定顯示屏或光標(biāo)移動(dòng)方向指令。</p><p><b> B:寫(xiě)命令、寫(xiě)數(shù)據(jù)</b></p><p> 寫(xiě)命令是按照那個(gè)時(shí)序圖寫(xiě)的,時(shí)序圖給低就寫(xiě)低,延時(shí)就延時(shí),或?qū)懜呔蛯?xiě)高。</p><p><b> 基本操作時(shí)序:</b>
55、</p><p> 讀狀態(tài) 輸入:RS=L,RW=H,E=H 輸出:DB0~DB7=狀態(tài)字 </p><p> 寫(xiě)指令 輸入:RS=L,RW=L,E=下降沿脈沖,DB0~DB7=指令碼 輸出:無(wú)</p><p> 讀數(shù)據(jù) 輸入:RS=H,RW=H,E=H 輸出:DB0~DB7=數(shù)據(jù) </p><p> 寫(xiě)數(shù)據(jù) 輸入:RS=H,
56、RW=L,E=下降沿脈沖,DB0~DB7=數(shù)據(jù) 輸出:無(wú)</p><p><b> C:送顯示</b></p><p> void init() //初始化</p><p><b> {</b></p><p><b> en=0;</b></p><
57、;p> write_com(0x38);//設(shè)置為8位并行,顯示2行,5*7點(diǎn)陣顯示</p><p> write_com(0x0c);//設(shè)置顯示開(kāi) 無(wú)光標(biāo) 光標(biāo)不閃爍</p><p> write_com(0x01); //清屏指令</p><p> write_com(0x80); </p><p>&l
58、t;b> }</b></p><p> void write_com(uchar com) //寫(xiě)命令</p><p><b> {</b></p><p><b> rs=0;</b></p><p><b> rw=0;</b></p&g
59、t;<p><b> P2=com;</b></p><p><b> delay(5);</b></p><p><b> en=1;</b></p><p><b> en=0;</b></p><p><b> }&
60、lt;/b></p><p> 4.3 溫度數(shù)據(jù)讀取函數(shù)</p><p> DS18B20的測(cè)溫原理:用一個(gè)高度系數(shù)的振蕩器確定一個(gè)門(mén)周期,內(nèi)部計(jì)數(shù)器在這個(gè)門(mén)周期內(nèi)對(duì)一個(gè)低溫度系數(shù)的振蕩器的脈沖進(jìn)行計(jì)數(shù)來(lái)得到溫度值。計(jì)數(shù)器預(yù)置到對(duì)應(yīng)于-55度的一個(gè)值。如果計(jì)數(shù)器在門(mén)周期結(jié)束前到達(dá)0,測(cè)溫度寄存器是值增加,表明所測(cè)溫度大于-55度。同時(shí),計(jì)數(shù)器被復(fù)位到一個(gè)值,這個(gè)值由斜坡累加器電路
61、確定,斜坡式累加器用來(lái)補(bǔ)償感溫振蕩器的拋物線特性。然后計(jì)數(shù)器又開(kāi)始計(jì)數(shù)直到0,如果門(mén)周期仍未結(jié)束,將重復(fù)這一過(guò)程。</p><p> DS18B20的復(fù)位:由上位機(jī)拉低總線480-960us的時(shí)間然后拉高總線,等待15-60us的時(shí)間,如果在總線上有DS18B20這個(gè)器件,并且將總線拉低60-240us</p><p> 的話,就證明該器件復(fù)位成功,已經(jīng)準(zhǔn)備好發(fā)送或接受數(shù)據(jù)了。<
62、/p><p> DS18B20的寫(xiě)數(shù)據(jù)時(shí)序:DS18B20的寫(xiě)時(shí)序分為寫(xiě)0時(shí)序和寫(xiě)1時(shí)序兩個(gè)過(guò)程。</p><p> DS18B20寫(xiě)0時(shí)序和寫(xiě)1時(shí)序的要求不同,當(dāng)要寫(xiě)0時(shí)序是,單總線要被拉低至少60us,保證DS18B20能夠在15us~45us之間能夠正確地采樣I/O總線上的低電平,當(dāng)要寫(xiě)1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。</p><p>
63、; DS18B20的讀數(shù)據(jù)時(shí)序:DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。</p><p> 對(duì)于DS18B20的讀時(shí)序是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20完成一個(gè)讀時(shí)序過(guò)程,至少需要60us。</p><p> DS18B20的測(cè)溫控制:</p><p> 控制協(xié)議的幾個(gè)步驟
64、:</p><p><b> 1:初始化(復(fù)位)</b></p><p><b> 2:ROM操作命令</b></p><p><b> 3:存儲(chǔ)器操作命令</b></p><p><b> 4:執(zhí)行/數(shù)據(jù)</b></p><p
65、> 因?yàn)樵谠擁?xiàng)目設(shè)計(jì)中只使用了一個(gè)DS18B20,所以不需要對(duì)ROM操作,復(fù)位完成之后直接發(fā)送0xCC命令跳過(guò)ROM的操作,接著發(fā)送0x44命令啟動(dòng)溫度轉(zhuǎn)換,發(fā)送溫度轉(zhuǎn)換命令后再次對(duì)DS18B20復(fù)位,再次跳過(guò)ROM操作之后就可以讀取溫度值了。</p><p> 通過(guò)單線總線端口訪問(wèn)ds18b20的協(xié)議如下:</p><p> 初始化:它通過(guò)單線總線的所有執(zhí)行都從一個(gè)初始化序列
66、開(kāi)始。初始化序列包括一個(gè)由總線控制器發(fā)出的復(fù)位脈沖和跟有其后由從機(jī)發(fā)出的存在脈沖。</p><p> DS18B20溫度采集轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在DS18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于或等于0,這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。溫度轉(zhuǎn)換計(jì)算方法舉
67、例:</p><p> 例如當(dāng)DS18B20采集到+125℃的實(shí)際溫度后,輸出為07D0H,則:</p><p> 實(shí)際溫度=07D0H*0.0625=2000*0.0625=1250C。</p><p> 例如當(dāng)DS18B20采集到-55℃的實(shí)際溫度后,輸出為FC90H,則應(yīng)先將11位數(shù)據(jù)位取反加1得370H(符號(hào)位不變,也不作為計(jì)算),則:</p&g
68、t;<p> 實(shí)際溫度=370H*0.0625=880*0.0625=550C。</p><p> void readtemperature(void)</p><p><b> {</b></p><p> unsigned char temp;</p><p> int temperature
69、;</p><p><b> reset();</b></p><p> write(0xcc);</p><p> write(0x44);</p><p><b> reset();</b></p><p> write(0xcc);</p>&l
70、t;p> write(0xbe);</p><p> temperature=read();</p><p> temp=read();</p><p> temperature=temperature|(temp<<8);</p><p> dat[0]=10;</p><p><b
71、> ………</b></p><p><b> }</b></p><p> 4.4 濕度數(shù)據(jù)讀取函數(shù)</p><p> 在前面硬件部分提到了濕度傳感器的測(cè)試度原理,同時(shí)提到了一個(gè)頻率計(jì)算的公式和一張?zhí)厥鉂穸葘?duì)應(yīng)頻率點(diǎn)的表格,但是在實(shí)際的測(cè)試當(dāng)中發(fā)現(xiàn)該表的某些特殊點(diǎn)并非很準(zhǔn)確,所以再次對(duì)該表做出一些修改,下面放上改簽改后
72、兩表對(duì)照。</p><p><b> 改前:</b></p><p><b> 改后:</b></p><p> 相應(yīng)的計(jì)算的公式也需要更改,改前為一個(gè)公式:</p><p> RH=588-0.8* Frequency(6033≤Frequency≤7351)</p><
73、;p><b> 改后為兩個(gè)公式:</b></p><p> RH=588-0.8* Frequency(6033≤Frequency≤7351)</p><p> RH=588-0.8* Frequency(6330<Frequency≤7350)</p><p> 經(jīng)過(guò)這樣修改的話舊很好的對(duì)應(yīng)了這些分布均勻的特殊點(diǎn)了,由單片
74、機(jī)的定時(shí)器0產(chǎn)生固定時(shí)間,計(jì)數(shù)器1計(jì)數(shù)脈沖后對(duì)數(shù)據(jù)處理來(lái)得到濕度值。</p><p><b> 第五章 調(diào)試</b></p><p><b> 5.1 延時(shí)調(diào)試</b></p><p> 對(duì)于設(shè)計(jì)溫濕度檢測(cè)的中的延時(shí)首先要求的挺嚴(yán)格,因?yàn)闀r(shí)間較短,所以要控制好延時(shí)時(shí)間,這就要在程序中做好延時(shí)的調(diào)試,保證時(shí)間準(zhǔn)確。首先
75、18b20在初始化的時(shí)候總線在置0的時(shí)候要求要延時(shí)480us到960us之間,所以要控制好延時(shí)在這段之間。首先在初始化DQ置0與置1之間設(shè)置斷點(diǎn)。如下圖調(diào)試:</p><p> 運(yùn)行到這里的時(shí)間可以通過(guò)左邊的sec觀察到0.0225867,在運(yùn)行一下如下圖所示。</p><p> 這段運(yùn)行過(guò)后的時(shí)間為0.0233864,將這兩段時(shí)間相減得出的即為延時(shí)所需時(shí)間。</p>&
76、lt;p> 延時(shí)=0.0233864-0.0225867=0.0007997s 大概為800us,在480到960us之間符合要求。</p><p><b> 5.2 讀溫度調(diào)試</b></p><p> 要觀察溫度的變化,在temp位置設(shè)置斷點(diǎn),如下圖所示,并通過(guò)下方的監(jiān)測(cè)值watch1窗口觀察temp值的變化。</p><p>
77、 這里我們可以看到高8位0x05低8位0x0050。</p><p> 上圖所表示的是將高八位與低八位相或取得值位0x0550。0x550轉(zhuǎn)化為十進(jìn)制位1360。溫度值應(yīng)該是85度。</p><p> 溫度=1360*0.0625=85</p><p> 如下圖所示的位85度。</p><p><b> 5.3 濕度調(diào)試&
78、lt;/b></p><p> 設(shè)置斷點(diǎn)在1602寫(xiě)在屏幕結(jié)束的位置觀察下方的窗口,顯示RH為0x0224化為濕度為548,經(jīng)過(guò)處理得54.8%如下圖顯示出來(lái)的:</p><p> 顯示濕度為54.8%與keil中調(diào)試窗口觀察到的結(jié)果運(yùn)算出來(lái)的一樣。說(shuō)明沒(méi)有錯(cuò)誤。</p><p> 5.4 1602的調(diào)試</p><p> 設(shè)置
79、斷點(diǎn)使1602的第一行第一個(gè)位置顯示T觀察結(jié)果。</p><p> 首先在主函數(shù)中設(shè)置斷點(diǎn)如下圖所示的位置:</p><p> 從上圖觀察到的結(jié)果為dat[0]為0x0A,即為10,table1[10]從數(shù)組中調(diào)用的顯示為0x54,0x54對(duì)應(yīng)的1602液晶使用指導(dǎo)中的結(jié)果為顯示大寫(xiě)的“T”,即下圖顯示的結(jié)果。</p><p><b> 5.5 總調(diào)
80、試</b></p><p> Protues總調(diào)試如下圖:</p><p><b> 第六章 結(jié)論</b></p><p> 此次課程設(shè)計(jì)中我投入了很大的熱情和精力,從設(shè)計(jì)電路圖,選擇元器件,使用protel99,其過(guò)程中出現(xiàn)了不少的問(wèn)題,我沒(méi)有氣餒,沒(méi)有退縮,積極向同學(xué)請(qǐng)教,并且一遍又一遍的重復(fù)實(shí)踐,直到期望的結(jié)果實(shí)現(xiàn)。事實(shí)
81、也證明我們的努力沒(méi)有白費(fèi),認(rèn)真嚴(yán)謹(jǐn)?shù)膶?shí)習(xí)態(tài)度給我?guī)?lái)了成功的喜悅! 這短短一月的實(shí)踐,我感覺(jué)到自己在課本上學(xué)到的理論知識(shí)和實(shí)踐仍有一定的差距。有的知識(shí),自己感覺(jué)已經(jīng)掌握得差不多了,但是實(shí)際操作起來(lái)就有問(wèn)題出現(xiàn)了。 我還遇到了不少,花費(fèi)了很多的時(shí)間。這讓我們重新反思我們的學(xué)習(xí),覺(jué)得這與自己當(dāng)時(shí)不注意實(shí)驗(yàn)課是分不開(kāi)的。 </p><p> 通過(guò)這次電子系統(tǒng)設(shè)計(jì),我們掌握了設(shè)計(jì)一個(gè)數(shù)字電路的基本方法和基本步驟,實(shí)
82、際解決了設(shè)計(jì)中出現(xiàn)的問(wèn)題,增強(qiáng)了尋找問(wèn)題,解決問(wèn)題的能力。此次電子設(shè)計(jì)的成功不僅幫助我們更好地掌握書(shū)本知識(shí),尤其重要的是增強(qiáng)了我們的自信,培養(yǎng)了我們獨(dú)立思考的能力!本次實(shí)習(xí)是我到目前為止最頭疼也是收獲最大的一次實(shí)習(xí)。設(shè)計(jì)是我們將來(lái)必需的專(zhuān)業(yè)技能,這次恰恰提供我們一個(gè)應(yīng)用自己所學(xué)的知識(shí)的機(jī)會(huì)。從到課本、網(wǎng)絡(luò)中查找資料到電路的設(shè)計(jì),都對(duì)我們以前所學(xué)過(guò)的知識(shí)進(jìn)行了一次檢驗(yàn)。 總體來(lái)說(shuō),這次實(shí)習(xí)我受益匪淺。在摸索該如何設(shè)計(jì)電路使之實(shí)現(xiàn)所需功能的
83、過(guò)程中,特別有趣,培養(yǎng)了我們的設(shè)計(jì)思維,增加了實(shí)際操作能力。在讓我體會(huì)到了設(shè)計(jì)電路的艱辛的同時(shí),要熟練地掌握課本上的知識(shí),這樣才能對(duì)試驗(yàn)中出現(xiàn)的問(wèn)題進(jìn)行分析解決。</p><p><b> 致 謝</b></p><p> 感謝我的小組成員們,在他們的指導(dǎo)與幫助下,終于解決了我所遇到的種種困難.并讓我進(jìn)一步的把為掌握的知識(shí)系統(tǒng)化,他們給予我很大的幫助,讓我不斷成
84、長(zhǎng)。</p><p><b> 在此很感謝他們! </b></p><p> 通過(guò)這次的設(shè)計(jì)使我認(rèn)識(shí)到我對(duì)單片機(jī)方面的知識(shí)知道的太少了,對(duì)于書(shū)本上的。</p><p> 很多知識(shí)還不能靈活運(yùn)用,有很多我們需要掌握的知識(shí)在等著我去學(xué)習(xí),我會(huì)在以后的學(xué)習(xí)生活中彌補(bǔ)我所缺少的知識(shí)。本次的設(shè)計(jì)使我從中學(xué)到了一些很重要的東西,理論知識(shí)固然很重要,但
85、是一旦轉(zhuǎn)到實(shí)際操作中,變的無(wú)法適應(yīng)用突然.所以最重要的那就是如何從理論到實(shí)踐的轉(zhuǎn)化,怎樣將我所學(xué)到的知識(shí)運(yùn)用到我以后的工作中去。讓理論知識(shí)變?yōu)閷?shí)踐的開(kāi)拓先鋒。</p><p> 在大學(xué)的課堂的學(xué)習(xí)只是在給我們灌輸專(zhuān)業(yè)知識(shí),而我們應(yīng)把所學(xué)的用到我們現(xiàn)實(shí)的生活中去,讓理論知識(shí)服務(wù)于我的實(shí)際操作,此次的電子時(shí)鐘設(shè)計(jì)給我奠定了一個(gè)實(shí)踐基礎(chǔ),我會(huì)在以后的學(xué)習(xí)、生活、實(shí)踐中鍛煉自己的動(dòng)手能力,使自己的創(chuàng)造力不斷得以實(shí)現(xiàn)。&
86、lt;/p><p><b> 參考資料</b></p><p> [1] 張迎新 等編著 單片機(jī)初級(jí)教程——單片機(jī)基礎(chǔ)(第二版) 北京航空航天大學(xué)出版社 2006.8</p><p> [2] 閻石編著 數(shù)字電子技術(shù)基礎(chǔ) (第五版) 北京高等教育出版社 2006.1~550</p><p> [3] 蔡明
87、文 馮先成主編 單片機(jī)課程設(shè)計(jì) 華中科技大學(xué)出版社 2007.3</p><p> [4] 陳明螢 編著 8051單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材 清華大學(xué)出版社 2004</p><p> [5] 康華光 編著 模擬電子技術(shù)基礎(chǔ)(第五版) 高等教育出版社 2006</p><p> [6] 黃智偉 編著 全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽電路(第一版)航空航天大
88、學(xué)出版社 2006.3</p><p> [7] 百度全科百度資料百度文庫(kù)</p><p> [8] 劉守義等編著 單片機(jī)應(yīng)用技術(shù)(第二版)西安科技大學(xué)出版社出版 2007</p><p><b> 附錄I</b></p><p><b> 原理圖</b></p><p&
89、gt;<b> 附錄II</b></p><p><b> 原件清單 </b></p><p><b> 附錄III</b></p><p><b> 源程序: </b></p><p> #include<reg52.h><
90、/p><p> #include <absacc.h></p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> sbit rs=P0^5;</p><p> sbit rw=P0^6;</p
91、><p> sbit en=P0^7;</p><p> sbit DQ=P1^0;// 18b20總線</p><p> unsigned char dat[9]={0};//溫度</p><p> unsigned char shuju1[9]={0}; //濕度</p><p
92、> uchar code table1[17]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x54,0x45,0x4d,0x50,0x2d,0x2e,0x20};//溫度調(diào)用</p><p> uchar code table2[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x
93、53,0x48,0x49,0x25,0x2e,0x20}; //濕度調(diào)用</p><p> /**************1602d調(diào)用函數(shù)*******************/</p><p> void write_com(uchar com);</p><p> void write_shuju(uchar shuju);</p>
94、<p> void init();</p><p> void delay(uchar z);</p><p> /**************18b20調(diào)用函數(shù)**************/</p><p> unsigned char reset(void); //18b20初始化//</p><p&g
95、t; void write(uchar dat); //18b20寫(xiě)時(shí)序</p><p> unsigned char read(void); //18b20讀時(shí)序 </p><p> void readtemperature(void); //18b20讀二進(jìn)制16位溫度</p><p&
96、gt; void yanshi(unsigned int us);</p><p> /****************hs1101調(diào)用函數(shù)*************************/</p><p> void readfrequency(void);//讀頻率函數(shù)//</p><p> bit minrange=0;//濕度下
97、限標(biāo)志位//</p><p> bit maxrange=0;//濕度上限標(biāo)志位//</p><p> bit T0Over=0;//定時(shí)器結(jié)束標(biāo)記</p><p> unsigned char w,x,y;</p><p> /******************主函數(shù)******************/&
98、lt;/p><p> void main() </p><p><b> {</b></p><p><b> init();</b></p><p><b> while(1)</b></p><p><b> {</
99、b></p><p> readtemperature();</p><p> write_com(0x80);</p><p> write_shuju(table1[dat[0]]);</p><p> write_com(0x81);</p><p> write_shuju(table1[da
100、t[1]]);</p><p> write_com(0x82);</p><p> write_shuju(table1[dat[2]]);</p><p> write_com(0x83);</p><p> write_shuju(table1[dat[3]]);</p><p> write_com(
101、0x84);</p><p> write_shuju(table1[dat[4]]);</p><p> write_com(0x85);</p><p> write_shuju(table1[dat[5]]);</p><p> write_com(0x86);</p><p> write_shuju
102、(table1[dat[6]]);</p><p> write_com(0x87);</p><p> write_shuju(table1[dat[7]]);</p><p> write_com(0x88);</p><p> write_shuju(table1[dat[8]]);</p><p>
103、readfrequency();</p><p><b> }</b></p><p><b> }</b></p><p> /*****************1602延時(shí)程序*****************/</p><p> void delay(uchar z)</p>
104、;<p><b> {</b></p><p><b> uint a,b;</b></p><p> for(a=0;a<z;a++)</p><p> for(b=0;b<122;b++);</p><p><b> }</b></
105、p><p> /*******************1602初始化**************/</p><p> void init()</p><p><b> {</b></p><p><b> en=0;</b></p><p> write_com(0x3
106、8);//設(shè)置為8位并行,顯示2行,5*7點(diǎn)陣顯示</p><p> write_com(0x0c);//設(shè)置顯示開(kāi) 無(wú)光標(biāo) 光標(biāo)不閃爍</p><p> write_com(0x01); //清屏指令</p><p> write_com(0x80); </p><p><b> }</b>&
107、lt;/p><p> /***************1602寫(xiě)指令*********************/</p><p> void write_com(uchar com)</p><p><b> {</b></p><p><b> rs=0;</b></p><
108、;p><b> rw=0;</b></p><p><b> P2=com;</b></p><p><b> delay(5);</b></p><p><b> en=1;</b></p><p><b> en=0;<
109、/b></p><p><b> }</b></p><p> /**************1602寫(xiě)數(shù)據(jù)**********************/</p><p> void write_shuju(uchar shuju)</p><p><b> {</b></p&g
110、t;<p><b> rs=1;</b></p><p><b> rw=0;</b></p><p><b> P2=shuju;</b></p><p><b> delay(5);</b></p><p><b>
111、en=1;</b></p><p><b> en=0;</b></p><p><b> }</b></p><p> /*************18b20微秒延時(shí)********************/</p><p> void yanshi(unsigned int
112、us)</p><p><b> {</b></p><p><b> int s;</b></p><p> for(s=0;s<us;s++);</p><p><b> }</b></p><p> /***************
113、*********18b20初始化********/</p><p> unsigned char reset(void) </p><p><b> {</b></p><p> unsigned char presence;</p><p><b> DQ=0;</b></p&g
114、t;<p> yanshi(60); //大概480微秒</p><p><b> DQ=1;</b></p><p> yanshi(8); //延時(shí)大概50微秒</p><p> presence=DQ;</p><p> yanshi(14);</p><
115、p> return(presence);</p><p><b> }</b></p><p> /*************18b20寫(xiě)時(shí)序*************************/</p><p> void write(unsigned char dat)</p><p><b>
116、 {</b></p><p> unsigned char i;</p><p> for(i=8;i>0;i--)</p><p><b> {</b></p><p><b> DQ=0;</b></p><p> DQ=dat&0x
117、01;</p><p> yanshi(16);</p><p><b> DQ=1;</b></p><p><b> dat>>=1;</b></p><p><b> }</b></p><p><b> }<
118、/b></p><p> /***************18b20讀時(shí)序*********************/</p><p> unsigned char read(void)</p><p><b> {</b></p><p> unsigned char i,dat=0;</p>
119、<p> for(i=8;i>0;i--)</p><p><b> {</b></p><p><b> DQ=0;</b></p><p><b> dat>>=1;</b></p><p><b> DQ=1;</
120、b></p><p><b> if(DQ)</b></p><p> dat|=0x80;</p><p> yanshi(7);</p><p><b> }</b></p><p> return (dat);</p><p>&
121、lt;b> }</b></p><p> /**************18b20讀溫度**********************/</p><p> void readtemperature(void)</p><p><b> {</b></p><p> unsigned char t
122、emp;</p><p> int temperature;</p><p><b> reset();</b></p><p> write(0xcc);</p><p> write(0x44);</p><p><b> reset();</b></p&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于at89c51單片機(jī)室內(nèi)溫濕度測(cè)控系統(tǒng)設(shè)計(jì)
- 基于at89c51溫濕度設(shè)計(jì)與仿真
- 畢業(yè)設(shè)計(jì)(論文)基于at89c51單片機(jī)數(shù)控電源
- 單片機(jī)溫濕度畢業(yè)設(shè)計(jì)
- 基于stc89c52單片機(jī)的溫濕度檢測(cè)系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)論文--基于51單片機(jī)的溫濕度采集系統(tǒng)設(shè)計(jì)
- 單片機(jī)畢業(yè)設(shè)計(jì)外文翻譯單片機(jī)at89c51
- 畢業(yè)設(shè)計(jì)-基于at89c51單片機(jī)的數(shù)字時(shí)鐘設(shè)計(jì)
- 基于單片機(jī)的畢業(yè)設(shè)計(jì)--基于at89c51單片機(jī)倒車(chē)防撞系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-基于at89c51單片機(jī)的語(yǔ)音播報(bào)器的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-基于at89c51單片機(jī)的語(yǔ)音播報(bào)器的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-基于at89c51單片機(jī)的病房呼叫系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-基于at89c51單片機(jī)的密碼門(mén)禁系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)at89c51電子血壓計(jì)的設(shè)計(jì)
- 基于at89c51單片機(jī)的數(shù)字鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于at89c51單片機(jī)倒車(chē)防撞系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于at89c51單片機(jī)的音樂(lè)盒設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于at89c51單片機(jī)紅外遙控系統(tǒng)設(shè)計(jì)
- 溫濕度傳感器畢業(yè)設(shè)計(jì)----基于51單片機(jī)的溫濕度傳感器的設(shè)計(jì)與制作
- 基于at89c51單片機(jī)紅外遙控系統(tǒng)畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論