版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 環(huán)境溫濕度檢測(cè)系統(tǒng)是日常生活、工業(yè)生產(chǎn)和農(nóng)業(yè)管理中廣泛使用的一種設(shè)備。該設(shè)備具備以下主要功能:實(shí)時(shí)檢測(cè)出環(huán)境中的溫度和濕度參數(shù)值,并顯示出來(lái),根據(jù)設(shè)定的報(bào)警限予以報(bào)警指示,可以和上層控制器通信。</p><p> 隨著單片機(jī)的大規(guī)模應(yīng)用,單片機(jī)在檢測(cè)系統(tǒng)中也越來(lái)越多的被使用。本設(shè)計(jì)以AT89S52這
2、款低功耗、高性能、在系統(tǒng)編程的8位單片機(jī)為系統(tǒng)控制處理核心,由單總線數(shù)字溫濕度傳感器DHT11、數(shù)碼管顯示屏、LED與蜂鳴器、通信串口和按鍵控制輸入等五個(gè)部分組成,從而實(shí)現(xiàn)環(huán)境問(wèn)世的監(jiān)測(cè)系統(tǒng)的主要功能。后期的探索設(shè)計(jì)——換用紅外遙控控制和LCM為顯示屏、外加時(shí)鐘和存儲(chǔ)芯片、增加照度檢測(cè)電路,極大地提升了系統(tǒng)的性能,使系統(tǒng)不僅可以檢測(cè)并顯示環(huán)境溫度、濕度和照度變量,而且可以按照時(shí)間順序存儲(chǔ)適量的數(shù)據(jù)。</p><p&g
3、t; 此外,系統(tǒng)有降壓整流和穩(wěn)壓濾波電路,可用交流市電(220V)、各種安全直流電(5~24V)、太陽(yáng)能電池等為系統(tǒng)供電,并且可以存儲(chǔ)少量電能(900mAh),因此,系統(tǒng)有較寬的工作電壓,可滿足多種應(yīng)用場(chǎng)合。</p><p> 本設(shè)計(jì)由Protel畫出了電路原理圖和PCB圖,并由此完成了硬件的制作,使用C51語(yǔ)言對(duì)單片機(jī)進(jìn)行編程控制,并模塊化仿真,最后通過(guò)綜合調(diào)試,符合預(yù)期的設(shè)計(jì)要求。</p>
4、<p> 關(guān)鍵詞:AT89S52單片機(jī) DHT11傳感器 PCB設(shè)計(jì) 溫濕度檢測(cè)</p><p><b> Abstract</b></p><p> Environment temperature and humidity detection system is a kind of equipment which is widely used
5、 in daily life, industrial production and agricultural menagement.The equipment has following main function:detecting the temperature and humidityparameters in the environment real-time and display them,giving alarm ind
6、ication according to the set limits, and being able to contact with upper controller.</p><p> With the SCM used large-scalely,the SCM is more and more used in detection system.This design,uses the 8-bit SCM
7、 named AT89S52,which has a lot of advantages such as low-power dissipation,high-performance and ISP,and made up of five parts:single-wire digital temperature and humidity sensor,digitron display,LED andbuzzer, serial com
8、unications and keys input,thus perform the function of environment temperature and humidity detection system.The exploration design in later stage,including infrared re</p><p> In addition,with step-down re
9、ctifier and stabilivolt filter circuit,the system can use utility power AC220V,different safety DC5~24V,solar battery to supply power,and store some electric energy about 900mAh,so that it has a wide power supply voltage
10、 and meets different application places.</p><p> The design gives the circuit design schematics and PCB diagram with Protel, and completes the hardware part of the production, and uses C51 language system t
11、o accomplish the control program of SCM,and simulates every part successfully.Through the synthetical debugging,the design achieves the required designs.</p><p> Key words:AT89S52 SCM,DHT11 sensor,serial co
12、mmunication,temperature</p><p> and humidity detection,PCB design</p><p><b> 目 錄 </b></p><p> 第一章 前 言1</p><p> 1.1 設(shè)計(jì)的目的意義調(diào)查1</p><p>
13、 1.2 設(shè)計(jì)的市場(chǎng)現(xiàn)狀分析2</p><p> 1.3 設(shè)計(jì)的內(nèi)容要求說(shuō)明3</p><p> 1.4 設(shè)計(jì)的實(shí)施方案構(gòu)想4</p><p> 第二章 硬件的設(shè)計(jì)5</p><p> 2.1 單片機(jī)的選用5</p><p> 2.2 傳感器的選用7</p><p> 2
14、.2.1 初期設(shè)計(jì)7</p><p> 2.2.2 最佳方案8</p><p> 2.2.3 電路設(shè)計(jì)9</p><p> 2.3 數(shù)碼管驅(qū)動(dòng)電路設(shè)計(jì)10</p><p> 2.3.1 數(shù)碼管的選用10</p><p> 2.3.2 驅(qū)動(dòng)電路的設(shè)計(jì)10</p><p>
15、2.4報(bào)警電路設(shè)計(jì)12</p><p> 2.4.1 蜂鳴器驅(qū)動(dòng)電路13</p><p> 2.4.2 LED驅(qū)動(dòng)電路13</p><p> 2.5控制輸入電路設(shè)計(jì)14</p><p> 2.6 串口通信電路設(shè)計(jì)16</p><p> 2.7 穩(wěn)定電源電路設(shè)計(jì)17</p><p
16、> 2.8 系統(tǒng)三大部分的PCB設(shè)計(jì)18</p><p> 2.8.1 系統(tǒng)主體部分PCB設(shè)計(jì)19</p><p> 2.8.2 串口通訊PCB設(shè)計(jì)20</p><p> 2.8.3穩(wěn)壓電源部分PCB設(shè)計(jì)21</p><p> 第三章 程序的設(shè)計(jì)23</p><p> 3.1 程序功能描述、
17、單片機(jī)內(nèi)部資源分配和程序流程圖23</p><p> 3.1.1 程序功能描述23</p><p> 3.1.2 單片機(jī)內(nèi)部資源分配——兩個(gè)定時(shí)器的分工23</p><p> 3.1.3 程序的流程圖24</p><p> 3.2 編程語(yǔ)言和工具的選擇以及程序文件的分配25</p><p> 3.2
18、.1 編程語(yǔ)言的選擇25</p><p> 3.2.2 編程工具的選擇26</p><p> 3.2.3 程序文件的分配26</p><p> 3.3 傳感器通信程序設(shè)計(jì)27</p><p> 3.3.1 握手確認(rèn)27</p><p> 3.3.2 數(shù)據(jù)傳送28</p><p&
19、gt; 3.3.3 相關(guān)問(wèn)題解決方案31</p><p> 3.4 數(shù)碼管掃描程序設(shè)計(jì)32</p><p> 3.5 報(bào)警及設(shè)置程序設(shè)計(jì)33</p><p> 3.5.1 報(bào)警驅(qū)動(dòng)33</p><p> 3.5.2 報(bào)警值調(diào)整34</p><p> 3.6 按鍵掃描程序設(shè)計(jì)34</p>
20、;<p> 3.7 串口發(fā)送數(shù)據(jù)程序設(shè)計(jì)36</p><p> 3.7.1 波特率設(shè)置36</p><p> 3.7.2 數(shù)據(jù)發(fā)送格式37</p><p> 3.7.3 發(fā)送方式37</p><p> 3.8 Keil 綜合編譯和結(jié)果分析、程序下載38</p><p> 3.8.1
21、綜合編譯情況和結(jié)果分析38</p><p> 3.8.2 生成HEX 文件下載至單片機(jī)中40</p><p> 第四章 系統(tǒng)后期探索優(yōu)化設(shè)計(jì)簡(jiǎn)介41</p><p> 4.1 換用紅外控制和LCM 顯示的探索41</p><p> 4.1.1 紅外控制41</p><p> 4.1.2 LCM 顯示
22、44</p><p> 4.2 增加實(shí)時(shí)時(shí)鐘和存儲(chǔ)芯片來(lái)記錄數(shù)據(jù)的探索48</p><p> 4.3 增加照度檢測(cè)電路的探索50</p><p><b> 結(jié)束語(yǔ)54</b></p><p><b> 參考文獻(xiàn)56</b></p><p><b>
23、 附錄57</b></p><p> 附1 單片機(jī)驅(qū)動(dòng)程序57</p><p> 附2 硬件制作元器件安裝圖、 布線圖78</p><p><b> 第一章 前 言</b></p><p> 本章主要敘述了溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)的一些基本情況,包括目的意義、市場(chǎng)現(xiàn)狀、設(shè)計(jì)要求和實(shí)施方案等幾個(gè)部分
24、。 </p><p> 1.1 設(shè)計(jì)的目的意義調(diào)查</p><p> 現(xiàn)代社會(huì),隨著國(guó)家的經(jīng)濟(jì)不斷發(fā)展,人們的生活水平逐漸提高,在衣食住行基本滿足之后,追求一種健康長(zhǎng)壽的生活方式已經(jīng)成為時(shí)代的潮流。家庭居室,工作場(chǎng)所是人們每天較長(zhǎng)時(shí)間生活的兩個(gè)環(huán)境,而環(huán)境中的溫度和濕度變化則和人們的生理、心理等身體健康狀況息息相關(guān)。相關(guān)研究結(jié)果摘錄如下;</p><p> 據(jù)
25、生理學(xué)家研究,室內(nèi)溫度過(guò)高時(shí),會(huì)影響人的體溫調(diào)節(jié)功能,由于散熱不良而引起體溫升高、血管舒張、脈搏加快、心率加速。冬季,如果室內(nèi)溫度經(jīng)常保持在25度以上,人就會(huì)神疲力乏、頭暈?zāi)X脹、思維遲鈍、記憶力差。同時(shí),由于室內(nèi)外溫差懸殊,人體難以適應(yīng),容易患傷風(fēng)感冒。如果室內(nèi)溫度過(guò)低,則使人體代謝功能下降,脈搏、呼吸減慢,皮下血管收縮,皮膚過(guò)度緊張,呼吸道粘膜的抵抗力減弱,容易誘發(fā)呼吸道疾病。因此,科學(xué)家們把人對(duì)‘冷耐受”的下限溫度和”冷耐熱”的上限
26、溫度,分別定為11度和32度。</p><p> 然而,人的體感并不單純受氣溫或氣濕兩種因素的影響,而是兩者綜合作用的結(jié)果。通過(guò)實(shí)驗(yàn)測(cè)定,最適宜的人的室內(nèi)溫濕度是:冬天溫度為18至25度,濕度為30%至80%。夏天溫度為23至28度,濕度為30%至60%。在此范圍內(nèi)感到舒適的人占95%以上。在裝有空調(diào)的室內(nèi),室溫為19至24度,濕度為40%至50%時(shí),人會(huì)感到最舒適。如果考慮到溫濕度對(duì)人思維活動(dòng)的影響,最適宜的
27、室內(nèi)溫度應(yīng)是工作效率最高的值。溫度應(yīng)是18度,濕度應(yīng)是40%至60%,此時(shí),人的精神狀態(tài)最好,思維最敏捷。</p><p> 因此,隨時(shí)關(guān)注環(huán)境的溫濕度變化而由此采取措施對(duì)人們的健康生活和高效工作有著重要的意義。</p><p> 除此之外,工業(yè)生產(chǎn)、農(nóng)業(yè)管理和醫(yī)療護(hù)理等環(huán)境中的溫濕度也是兩項(xiàng)重要的檢測(cè)控制參數(shù),對(duì)安全生產(chǎn)、糧食豐收和病人康復(fù)等意義重大。部分要求數(shù)據(jù)如下:</p&
28、gt;<p> 由此看來(lái),研究設(shè)計(jì)環(huán)境溫濕度檢測(cè)系統(tǒng)十分有必要。</p><p> 1.2 設(shè)計(jì)的市場(chǎng)現(xiàn)狀分析</p><p> 縱觀市場(chǎng),溫濕度檢測(cè)技術(shù)已經(jīng)比較成熟,已有的各種溫濕度檢測(cè)產(chǎn)品,五花八門,猶如八仙過(guò)海,各顯神通,如A2000家用溫濕度報(bào)警表、YD-808A工業(yè)用溫濕度顯示器等產(chǎn)品。</p><p> 從功能上分析這些產(chǎn)品可以看出
29、,一個(gè)比較完整的環(huán)境溫濕度檢測(cè)系統(tǒng)應(yīng)該具備以下主要的四個(gè)功能:</p><p> (1)實(shí)時(shí)檢測(cè)出環(huán)境中的溫度和濕度參數(shù);</p><p> ?。?)檢測(cè)的參數(shù)值顯示在顯示設(shè)備上(如數(shù)碼管,液晶顯示器等);</p><p> ?。?)根據(jù)環(huán)境要求,設(shè)定溫度濕度報(bào)警的上下限值,并實(shí)時(shí)報(bào)警;</p><p> ?。?)與上層監(jiān)控設(shè)備通信(如PC
30、),實(shí)現(xiàn)數(shù)據(jù)傳輸(雙向或單向);</p><p> 因此,本設(shè)計(jì)也應(yīng)該具備這些功能,并且對(duì)每一個(gè)部分進(jìn)行優(yōu)化設(shè)計(jì),也可以擴(kuò)展系統(tǒng)功能。</p><p> 除了功能上的分析之外,再看這些產(chǎn)品的造價(jià)和供電情況,有以下兩個(gè)問(wèn)題:</p><p> (1)價(jià)格太高,不符合普通消費(fèi)者的消費(fèi)水平,如A2000家用溫濕度報(bào)警表,淘寶網(wǎng)上售價(jià)300左右;</p>
31、<p> ?。?)供電都比較單一,規(guī)定在直流6V,9V,12V或交流220V等,除了購(gòu)買產(chǎn)品主體之外,還需要一個(gè)特定的電源適配器;</p><p> 綜上所述,本設(shè)計(jì)設(shè)計(jì)出的環(huán)境溫濕度檢測(cè)系統(tǒng),除了具備市場(chǎng)上已有產(chǎn)品的功能之外,還應(yīng)盡量降低制作價(jià)格,確保有較寬的工作電壓。</p><p> 1.3 設(shè)計(jì)的內(nèi)容要求說(shuō)明</p><p> 根據(jù)上述市場(chǎng)
32、調(diào)查情況和畢業(yè)設(shè)計(jì)任務(wù)書的要求,本設(shè)計(jì)的研究?jī)?nèi)容包括以下幾個(gè)方面:</p><p><b> 1、基本要求</b></p><p> ?。?)主要檢測(cè)環(huán)境變化中的溫度和適度參數(shù);</p><p> ?。?)溫濕度參數(shù)顯示在LED數(shù)碼管屏幕上;</p><p> (3)可以設(shè)置溫濕度報(bào)警點(diǎn),并能按照設(shè)置實(shí)時(shí)報(bào)警;<
33、;/p><p><b> 2、控制要求</b></p><p> ?。?)根據(jù)需求,溫濕度數(shù)據(jù)可以發(fā)送給上層監(jiān)控設(shè)備,如普通電腦等;</p><p> ?。?)可以按照時(shí)間順序,以一定格式將溫濕度數(shù)據(jù)導(dǎo)出保存,以便進(jìn)行再分析處理;</p><p><b> 3、制作要求</b></p>
34、<p> ?。?)造價(jià)低廉,工作可靠;</p><p> ?。?)工作電壓較寬,滿足不同的供電測(cè)試條件;</p><p> ?。?)做出產(chǎn)品樣機(jī),調(diào)試通過(guò),可以正常工作;</p><p> 因此,本溫濕度檢測(cè)系統(tǒng)的設(shè)計(jì)應(yīng)以這三方面的要求為依據(jù),從而進(jìn)行各個(gè)部分的詳細(xì)設(shè)計(jì)。</p><p> 1.4 設(shè)計(jì)的實(shí)施方案構(gòu)想</
35、p><p> 基于單片機(jī)的環(huán)境溫濕度檢測(cè)系統(tǒng)實(shí)施方案構(gòu)想如下:</p><p> 1、由溫度和濕度傳感器對(duì)環(huán)境中的溫度和濕度變量進(jìn)行采樣;</p><p> 2、單片機(jī)和傳感器通信,獲得采樣數(shù)據(jù)并暫存;</p><p> 3、單片機(jī)對(duì)數(shù)據(jù)進(jìn)行預(yù)處理(如校驗(yàn)等),對(duì)有效數(shù)據(jù)再進(jìn)行以下四種處理:</p><p> 驅(qū)
36、動(dòng)顯示電路,把數(shù)據(jù)顯示在數(shù)碼管上;</p><p> 掃描輸入的控制信號(hào),設(shè)定報(bào)警限值;</p><p> 根據(jù)設(shè)定的報(bào)警,驅(qū)動(dòng)報(bào)警電路工作,予以報(bào)警指示;</p><p> 掃描輸入的控制信號(hào),根據(jù)需要發(fā)送數(shù)據(jù)給上層設(shè)備,在設(shè)備上進(jìn)行數(shù)據(jù)再處理或保存;</p><p> 在系統(tǒng)供電端有穩(wěn)壓濾波電路或電能存儲(chǔ)器件,保證系統(tǒng)正常工作;&
37、lt;/p><p> 選用價(jià)格低廉的器件或設(shè)計(jì)電路,減少花費(fèi);</p><p> 在以上方案都實(shí)施的情況下,對(duì)系統(tǒng)進(jìn)行優(yōu)化創(chuàng)新設(shè)計(jì),強(qiáng)化功能;</p><p> 因此,本系統(tǒng)的設(shè)計(jì)應(yīng)按照這個(gè)思路進(jìn)行具體設(shè)計(jì),把每一步的構(gòu)想轉(zhuǎn)化為現(xiàn)實(shí)的設(shè)計(jì)。</p><p><b> 系統(tǒng)的結(jié)構(gòu)圖如下:</b></p>
38、<p><b> 第二章 硬件的設(shè)計(jì)</b></p><p> 根據(jù)緒論中的分析說(shuō)明,可以明確溫濕度檢測(cè)系統(tǒng)的硬件電路分為電源穩(wěn)壓、傳感器檢測(cè)、數(shù)碼管顯示驅(qū)動(dòng)、報(bào)警驅(qū)動(dòng)、輸入控制、數(shù)據(jù)發(fā)送等六大部分,其中后五個(gè)部分都以單片機(jī)為核心,由單片機(jī)來(lái)進(jìn)行控制處理,因此單片機(jī)的選用至關(guān)重要。</p><p> 2.1 單片機(jī)的選用 </p><
39、;p> 自從20世紀(jì)70年代,因特爾公司推出第一代單片機(jī)以來(lái),單片機(jī)的發(fā)展如雨后春筍。各大電氣商、半導(dǎo)體商根據(jù)不同的控制需求,尤其在嵌入式系統(tǒng)控制方面,以因特爾公司的51單片機(jī)的框架結(jié)構(gòu)為基礎(chǔ),研發(fā)了各種各樣的、功能強(qiáng)大的單片機(jī)。</p><p> 而今,我們已經(jīng)進(jìn)入了一個(gè)單片機(jī)可廣泛選擇的、百花齊放的時(shí)代。因此,選用一款價(jià)格低廉,性能優(yōu)良的單片機(jī)已不再困難。</p><p>
40、 在MCS-51單片機(jī)8051的基礎(chǔ)上,ATMEL公司開發(fā)的AT89系列的單片機(jī)自問(wèn)世以來(lái),以其較低廉的價(jià)格和獨(dú)特的程序存儲(chǔ)器——快速閃存器為用戶所親萊,尤其是AT89S52這款單片機(jī),它有以下幾個(gè)特點(diǎn):</p><p> 1、與MCS-51單片機(jī)產(chǎn)品兼容,完全可采用51指令系統(tǒng)用匯編或C51編程;</p><p> 2、8K字節(jié)在系統(tǒng)可編程FLASH存儲(chǔ)器,并且有1000次擦寫周期,
41、這使得。調(diào)試程序和下載程序十分方便;</p><p> 3、全靜態(tài)操作,工作頻率范圍為0Hz~33MHz,頻率范圍寬,便于系統(tǒng)功耗控制;</p><p> 4、三級(jí)加密程序存儲(chǔ)器,使程序和系統(tǒng)更加難以仿制,確保了產(chǎn)品的知識(shí)產(chǎn)權(quán);</p><p> 5、32個(gè)可編程I/O口線,每個(gè)I/O都可以獨(dú)立或聯(lián)合使用,實(shí)現(xiàn)不同的數(shù)據(jù)操作,而且PI端口的高三位第二功能為IS
42、P編程,實(shí)現(xiàn)在系統(tǒng)調(diào)試;</p><p> 6、三個(gè)16位定時(shí)器/計(jì)數(shù)器,其中定時(shí)器2也可以作為串口波特率的產(chǎn)生;</p><p> 7、八個(gè)中斷源,分為兩個(gè)優(yōu)先級(jí),可軟件設(shè)置;</p><p> 8、一個(gè)全雙工通用異步接收發(fā)送數(shù)據(jù)借口,以便與外設(shè)進(jìn)行串行數(shù)據(jù)通信;</p><p> 9、有低功耗空閑和掉電模式,掉點(diǎn)后可由中斷喚醒,可
43、設(shè)置掉電標(biāo)識(shí)符;</p><p> 10、寬工作電壓范圍,VCC為2.7~5.5V,與TTL電平和CMOS電平兼容;</p><p> 總之,AT89系列單片機(jī)與MCS-51系列單片機(jī)相比,前者和后者有兼容性,但前者的性能價(jià)格比等指標(biāo)更為優(yōu)越。</p><p> 因此,選用AT89S52單片機(jī)可實(shí)現(xiàn)溫濕度檢測(cè)系統(tǒng)的功能,下圖為該單片機(jī)的DIP40封裝外觀和引腳
44、功能:</p><p> 圖2-1 單片機(jī)的引腳圖</p><p> 根據(jù)單片機(jī)的推薦外圍電路,復(fù)位(10K電阻,10uf電容)、晶振(12MHZ,電容22pf)電路設(shè)計(jì)如上圖所示:</p><p> 圖2-2 單片機(jī)復(fù)位電路</p><p> 圖2-3 單片機(jī)晶振電路</p><p> 2.2 傳感器的選用
45、 </p><p> 2.2.1 初期設(shè)計(jì)</p><p> 本設(shè)計(jì)的初期構(gòu)想是用一個(gè)溫度傳感器和一個(gè)濕度傳感器來(lái)檢測(cè)環(huán)境中的溫度和濕度參數(shù),其中溫度傳感器選用單總線數(shù)字溫度傳感器DS18B20,濕度傳感器選用數(shù)字式濕度傳感器SHT11,則檢測(cè)部分功能框圖如下:</p><p> 圖2-4 傳感器初期設(shè)計(jì)方案</p><p> 比較D
46、S18B20和SHT11,這兩個(gè)傳感器的通信都比較復(fù)雜,具體過(guò)程為:主機(jī)發(fā)起通信、傳感器確認(rèn)通信、主機(jī)給傳感器寫命令字、傳感器給主機(jī)發(fā)送檢測(cè)數(shù)據(jù),且SHT11還要求外部輸入串行時(shí)鐘信號(hào)。</p><p> 這種通信的復(fù)雜,不僅體現(xiàn)在硬件電路的設(shè)計(jì)上,而且體現(xiàn)在程序的設(shè)計(jì)上,并且串行通信對(duì)時(shí)序要求比較嚴(yán)格,這樣對(duì)單片機(jī)來(lái)說(shuō)將是一個(gè)巨大的挑戰(zhàn),何況單片機(jī)還要進(jìn)行其他的后續(xù)控制處理。</p><p
47、> 除此之外,這兩大傳感器的價(jià)格都不菲,DS18B20在8元左右,而SHT11則在50元左右,這對(duì)支付能力也是一個(gè)巨大的考驗(yàn)。</p><p> 因此,這種方案不可取,必須尋求其他的傳感器解決方案,從而簡(jiǎn)化硬件電路和程序設(shè)計(jì),讓單片機(jī)有更多的內(nèi)外部資源來(lái)處理后續(xù)操作。</p><p> 2.2.2 最佳方案</p><p> 后期采用單總線數(shù)字溫濕度傳
48、感器DHT11。這款傳感器由廣州奧松電子科技有限公司研發(fā),與單片機(jī)的通信十分簡(jiǎn)潔方便,無(wú)需外接時(shí)鐘信號(hào),通信如下:</p><p> 圖2-5 單總線數(shù)字溫濕度傳感器DHT11與單片機(jī)通信</p><p> 除此之外,它還有很多突出的優(yōu)點(diǎn):</p><p> ?。?)溫濕度傳感器的一體化結(jié)構(gòu)能同時(shí)對(duì)相對(duì)濕度和溫度進(jìn)行測(cè)量,并以數(shù)字信號(hào)輸出,從而減少用戶對(duì)信號(hào)的預(yù)
49、處理負(fù)擔(dān);</p><p> ?。?)獨(dú)特的單總線數(shù)據(jù)傳輸線協(xié)議使得讀取傳感器更加便捷,而且還有全部校準(zhǔn)數(shù)據(jù)字節(jié),編碼方式為8位二進(jìn)制數(shù);</p><p> (3)40位二進(jìn)制數(shù)據(jù)輸出,高位先出,格式為:濕度整數(shù)部分8位,小數(shù)部分8位;溫度整數(shù)部分8位,小數(shù)部分8位,最后8位為校驗(yàn)字節(jié),為前32位數(shù)據(jù)的和。</p><p> ?。?)寬工作電壓,幾乎與AT89S5
50、2的電壓相同,為3~5.5V,而且功耗較低,通信最大電流為2.5mA。</p><p> 其簡(jiǎn)要的性能參數(shù)如下表所示;</p><p> 表2-1 溫濕度傳感器DHT11性能參數(shù)</p><p> 從表中可以看出,它的測(cè)量范圍較小,但對(duì)實(shí)驗(yàn)或民用已經(jīng)足夠了,如果要工業(yè)使用的話,可選用該公司的同類工業(yè)級(jí)產(chǎn)品AM323,測(cè)量范圍為-55.0~+125.0度,測(cè)量范
51、圍為0.0~100.0%RH,并且可以和DHT11完全互換。</p><p> 2.2.3 電路設(shè)計(jì)</p><p> 按照說(shuō)明書的要求,DHT11與單片機(jī)的連接距離小于20米時(shí),需要在VCC和DATA引腳之間接一個(gè)5K左右的電阻,因此電路設(shè)計(jì)如下:</p><p> 圖2-6 溫濕度傳感器DHT11與單片機(jī)連接電路</p><p>
52、 至此,傳感器的硬件電路設(shè)計(jì)完成,另一部分的工作就是編程問(wèn)題,在下一章節(jié)介紹。</p><p> 2.3 數(shù)碼管驅(qū)動(dòng)電路設(shè)計(jì)</p><p> 2.3.1 數(shù)碼管的選用</p><p> 由于溫濕度傳感器DHT11 測(cè)溫范圍為0~50℃,測(cè)濕范圍為20~90%RH,溫度和濕度都是兩位數(shù)據(jù),因此可以用兩個(gè)兩位一體的數(shù)碼管來(lái)顯示溫濕度數(shù)據(jù),共陰極或共陽(yáng)極都可以,本
53、設(shè)計(jì)中選用兩個(gè)型號(hào)為FJS5202FH 型共陽(yáng)極紅色兩位一體的數(shù)碼管。</p><p> 2.3.2 驅(qū)動(dòng)電路的設(shè)計(jì)</p><p> 數(shù)碼管驅(qū)動(dòng)軟件設(shè)計(jì)有兩種方案,一種是靜態(tài)驅(qū)動(dòng),即四位數(shù)碼管的段選信號(hào)和位選信號(hào),分別接入控制器的端口,需要8×4+4=36 個(gè)端口;另一種是動(dòng)態(tài)驅(qū)動(dòng),段選信號(hào)線公用,而位選信號(hào)分開控制,需要8+4=12 個(gè)端口??紤]到單片機(jī)可用的I/O 引腳
54、只有32 個(gè),為不擴(kuò)展引腳而外加芯片,因此采用動(dòng)態(tài)驅(qū)動(dòng)方式較合理。數(shù)碼管驅(qū)動(dòng)電路一般也有兩種設(shè)計(jì)方案,一種是使用八D 鎖存芯片74HC373或74LS373 鎖存驅(qū)動(dòng),另一種是用三極管放大驅(qū)動(dòng)。市場(chǎng)上74HC373 芯片較74LS373 芯片價(jià)格便宜也為2 元左右一塊,而三極管只有0.2 元左右,四個(gè)三極管共8 角錢,相對(duì)來(lái)說(shuō)比較經(jīng)濟(jì)實(shí)惠,因此選用后一種方案。而相關(guān)器件電氣參數(shù)為:</p><p> ?。?)紅色
55、共陽(yáng)極數(shù)碼管(實(shí)際上是八個(gè)并聯(lián)的紅色LED)的電壓范圍1.5~2.0V,最大工作電流為20mA×8=160mA;</p><p> ?。?)單片機(jī)每個(gè)引腳灌電流(外部電流流入單片機(jī))大約為24mA,拉電流(單片機(jī)電流流入外設(shè))小于1mA。</p><p> 根據(jù)這兩項(xiàng)參數(shù),初步確定三極管選用90 系列PNP 型,用集電極接數(shù)碼管位選引腳,基極用電阻限流后接單片機(jī)引腳予以位選控制
56、。再考慮數(shù)碼管電流的限定,符合要求的三極管只有8550 和9012,其簡(jiǎn)要參數(shù)見(jiàn)下表:</p><p> 表2.2 可選三極管參數(shù)</p><p> 由表可以看出,8550的電流和功率都很大,既浪費(fèi)資源又不利于降低系統(tǒng)功耗,因此選用9012較為合適。</p><p> 因此,這部分的電路設(shè)計(jì)如下:</p><p> 圖2.7 數(shù)碼管段
57、選信號(hào)與單片機(jī)連接電路</p><p> 圖2.8 數(shù)碼管位選信號(hào)與單片機(jī)連接電路</p><p> 用單片機(jī)P0 端口作為數(shù)碼管段選信號(hào),P2 端口的高四位作為位選信號(hào),四個(gè)電阻的粗略大小為:R=(VCC-VEB)/Ib=(5.5V-0.7V)/1mA=4.8K,可選用E24 系列的電阻4.7K 或5.1K。</p><p><b> 2.4報(bào)警電
58、路設(shè)計(jì)</b></p><p> 本設(shè)計(jì)需要指示一種溫濕度正常狀態(tài)、一種數(shù)據(jù)發(fā)送狀態(tài)和四種超限報(bào)警狀態(tài),即溫度超下限,溫度超上限,濕度超下限,濕度超上限,可采用簡(jiǎn)單的聲(蜂鳴器)光(LED)報(bào)警電路。LED 顏色和狀態(tài)及蜂鳴器狀態(tài)分配如下表所示:</p><p> 表2.3 報(bào)警指示狀態(tài)分配</p><p> 注:“——”表示LED 熄滅或蜂鳴器無(wú)
59、聲。</p><p> 2.4.1 蜂鳴器驅(qū)動(dòng)電路</p><p> 根據(jù)蜂鳴器的參數(shù):電壓1.3~1.5V,電流20~80mA,電阻6~8Ω 知,可用選用集成放大芯片LM386 驅(qū)動(dòng),但更經(jīng)濟(jì)的是用一個(gè)三極管9012 或8550 驅(qū)動(dòng)即可,電路如圖所示:</p><p> 圖2.9 蜂鳴器報(bào)警驅(qū)動(dòng)電路</p><p> 2.4.2
60、LED驅(qū)動(dòng)電路</p><p> 根據(jù)LED 的參數(shù):電壓1.5~2.5V,電流10~20mA,則可用一電阻對(duì)電源進(jìn)行下拉,限流分壓后,LED 陰極接入單片機(jī)予以控制,電阻阻值大約為:</p><p> R=(VCC-VLED)/I=(5.5V-2V)/10mA=350Ω,</p><p> 選用330Ω 或360Ω 的電阻即可,具體電路如下圖所示:</
61、p><p> 圖2.10 報(bào)警LED驅(qū)動(dòng)電路</p><p> 2.5控制輸入電路設(shè)計(jì)</p><p> 本設(shè)計(jì)的控制輸入部分為簡(jiǎn)單的三個(gè)按鍵,由于單片機(jī)默認(rèn)狀態(tài)下端口引腳為高電平,可以接上按鍵與地相連,單片機(jī)檢測(cè)按鍵端口的電平情況來(lái)決定是否有按鍵按下和哪個(gè)按鍵被按下,抖動(dòng)問(wèn)題采用軟件延時(shí)方式,減少硬件電路設(shè)計(jì),電路如圖所示:</p><p&
62、gt; 圖2.11 控制輸入按鍵連接電路</p><p> 經(jīng)過(guò)上述對(duì)各個(gè)模塊的分布設(shè)計(jì),現(xiàn)在可給出系統(tǒng)主體部分的原理總圖。</p><p> 圖2.12 系統(tǒng)主體部分原理總圖</p><p> 考慮到 PCB 設(shè)計(jì)單面板布線的可行性,單片機(jī)的外部資源(端口引腳)分配按下進(jìn)行:</p><p> 傳感器DHT11 數(shù)據(jù)線——P11;
63、</p><p> 蜂鳴器HXD 驅(qū)動(dòng)三極管基極——P10;</p><p> 程序調(diào)試ISP 插座——P15、P16、P17;</p><p> 按鍵KEY1、2、3——P32、P33、P35;</p><p> 串口RXD、TXD——P30、P31;</p><p> 數(shù)碼管段選信號(hào)、位選信號(hào)——P0、P
64、23、P24、P25、P26;</p><p> LED 綠、黃、紅——P22、P21、P20。</p><p> 2.6 串口通信電路設(shè)計(jì)</p><p> 單片機(jī)AT89S52 有一個(gè)全雙工的UART 接口,即RXD(P3.0)和TXD (P3.1),因此可以用來(lái)和上層設(shè)備如PC 通信,但是由于PC 的串口使用RS232 電平通信協(xié)議,而單片機(jī)使用TTL
65、電平通信協(xié)議,這兩種電平的特點(diǎn)見(jiàn)下表:</p><p> 表2.4 RS232和TTL電平標(biāo)準(zhǔn)比較</p><p> 比較兩表,可以看出RS232 電平和TTL 電平并不兼容,為使單片機(jī)和PC 通信,必須先轉(zhuǎn)換電平,可采用新型集成芯片MAX232 實(shí)現(xiàn)數(shù)據(jù)發(fā)送轉(zhuǎn)換和接收轉(zhuǎn)換的雙重功能,依據(jù)芯片手冊(cè)上的推薦電路,經(jīng)合理簡(jiǎn)化后設(shè)計(jì)的串口發(fā)送數(shù)據(jù)部分電路為:</p><p
66、> 圖2.13 通信串口電路</p><p> 其中J1 與單片機(jī)串口相連,J2 經(jīng)針腳到插孔的RS232 數(shù)據(jù)線與電腦相連,即可實(shí)現(xiàn)電腦和單片機(jī)的全雙工通信。</p><p> 2.7 穩(wěn)定電源電路設(shè)計(jì)</p><p> 按照設(shè)計(jì)要求,系統(tǒng)供電要求多樣化,除了交流220V 的市電是必用的外,還應(yīng)該具備其他供電要求,如太陽(yáng)能電池,各種安全直流電壓源等,
67、而且還應(yīng)該有一定的蓄電能力。</p><p> 考慮到市電電壓太高且為正弦變化,而太陽(yáng)能電池輸出電壓不穩(wěn)定等問(wèn)題,必須要對(duì)市電進(jìn)行降壓,對(duì)變動(dòng)的電壓進(jìn)行穩(wěn)壓,而單片機(jī)系統(tǒng)的電壓要求在5V 左右,因此,可考慮用集成穩(wěn)壓模塊LM7805 進(jìn)行終端穩(wěn)壓。</p><p> LM7805 是三端正5V 電源穩(wěn)壓器件,輸入電壓為直流5~24V,輸出電壓為4.8~5.2V,最大允許電流為1.5A,
68、有電流限制、熱過(guò)載保護(hù)和短路保護(hù)功能,確保輸出電壓正常穩(wěn)定。</p><p><b> 具體電路設(shè)計(jì)如下:</b></p><p> 圖2.14 穩(wěn)壓電源電路</p><p> 該電路有四個(gè)電源插座,其中J1 為市電AC220V 供電輸入,J2 為太陽(yáng)能電池或其他輸出直流為5~24V 的電壓源的輸入,J3 為充電輸出接口,可為充電電池(1
69、.2V×4 只)恒流充電,J4 為系統(tǒng)供電+5V 電壓輸出端口,由此接到系統(tǒng)的電源端。</p><p> 當(dāng)用市電供電時(shí),先經(jīng)過(guò)220V/12V 的變壓器T1 把電壓降低至有效值為12V的交流電,再用電橋BR1 進(jìn)行全波整流為有效值12V(峰值大約為17.0V)的脈動(dòng)電壓,然后前置電容EC1 和C1 濾波,經(jīng)LM7805 穩(wěn)壓并后置電容C2 濾波,輸出大約為穩(wěn)定的+5V 直流電,一部分為系統(tǒng)供電,另一
70、部分為電池充電,通過(guò)調(diào)節(jié)電位器CR1 可調(diào)整充電電流,給不同的電池充電。 LED1 為電源指示燈。</p><p> 當(dāng)用太陽(yáng)能電池等輸出為直流電的電源設(shè)備時(shí),直接接入J2 端口,亦可為系統(tǒng)供電。</p><p> 使用這種設(shè)計(jì),可以確保系統(tǒng)有較寬的工作電壓,并且可以存儲(chǔ)少量電能,從而達(dá)到在不同場(chǎng)合供電的目的。</p><p> 2.8 系統(tǒng)三大部分的PCB設(shè)
71、計(jì)</p><p> 在Protel99 中新建設(shè)計(jì)文檔,根據(jù)以上分析,畫出系統(tǒng)主體部分、串口通信部分和電源部分的原理圖,并選擇合適的封裝外形,設(shè)計(jì)相應(yīng)的PCB 圖。三部分的PCB 圖及設(shè)計(jì)時(shí)應(yīng)注意的問(wèn)題簡(jiǎn)要介紹如下:</p><p> 2.8.1 系統(tǒng)主體部分PCB設(shè)計(jì)</p><p> 圖2.15 系統(tǒng)主體PCB圖</p><p>
72、<b> 設(shè)計(jì)要求:</b></p><p> ?。?)傳感器的安裝位置</p><p> 傳感器必須安置在PCB 的邊緣位置,不僅應(yīng)確保沒(méi)有發(fā)熱吸濕的器件在其附近,而且傳感器的感溫感濕柵窗應(yīng)朝向外部,否則可能會(huì)影響傳感器對(duì)外部環(huán)境中溫濕度的測(cè)量,如圖2.15 左下角的插座J2 即為傳感器的安裝位置。</p><p><b>
73、(2)數(shù)碼管的布線</b></p><p> 不僅數(shù)碼管的引腳較多,與單片機(jī)的連線也較多,而且制作實(shí)驗(yàn)硬件使用的是單面板,只能在底面布線,因此,在布線的時(shí)候應(yīng)該綜合考慮三方(單片機(jī)、數(shù)碼管和單面實(shí)驗(yàn)板)的特點(diǎn),選擇合理的布線方案。為保證多在底面布線,本設(shè)計(jì)對(duì)數(shù)碼管采用變碼布線,即數(shù)碼管a~Dp 段并沒(méi)有和單片機(jī)P00~P07 一一對(duì)應(yīng),而且位選信號(hào)線和部分段選信號(hào)線在頂面布線,詳細(xì)情況如圖2.15
74、所示,其中DG1 和DG2 為數(shù)碼管。</p><p> ?。?)電源開關(guān)、插頭插座和按鍵的位置</p><p> 電源開關(guān)、插頭插座和按鍵是經(jīng)常使用的器件,為方便操作,需要安裝在邊緣位置,和其他元件的距離不應(yīng)過(guò)小。如圖2.15 中的SW1、J1、J3、KEY-R、KEY1~KEY3 以及ISP1 等。</p><p><b> ?。?)單片機(jī)的位置&l
75、t;/b></p><p> 單片機(jī)是系統(tǒng)的核心,為了便于安裝和更換,單片機(jī)的周圍不應(yīng)放置過(guò)多元件,留有余地。</p><p><b> ?。?)布線要求</b></p><p> 布線不應(yīng)過(guò)密,特別是DIP 封裝的元件,引腳之間禁止布線,否則可能導(dǎo)致連線短路或信號(hào)相互干擾。</p><p> 2.8.2 串
76、口通訊PCB設(shè)計(jì)</p><p> 圖2.16 串口通信部分PCB圖</p><p><b> 設(shè)計(jì)要求:</b></p><p><b> ?。?)芯片安裝位置</b></p><p> 芯片U1 的凹槽朝向J2,便于和J2 連線。</p><p><b>
77、 ?。?)電容封裝選擇</b></p><p> 由于電容C4 引腳間有布線,封裝應(yīng)選用中間可布一線的外形,或把引腳間距較小的間距拉大,確??刹家痪€。</p><p> ?。?)J2 的焊盤尺寸</p><p> J2 的兩端的固定焊盤應(yīng)適當(dāng)加大,以增強(qiáng)焊接力。因?yàn)榇诓孱^較大,而且會(huì)有頻繁的插拔,若固定焊盤過(guò)小,可能出現(xiàn)松動(dòng)。</p>
78、<p> 2.8.3穩(wěn)壓電源部分PCB設(shè)計(jì)</p><p> 圖2.17 電源部分PCB圖</p><p><b> 設(shè)計(jì)要求:</b></p><p><b> (1)高壓部分</b></p><p> J1 為AC220V 的插頭,T1 為AC220V/12V 的變壓器,這
79、兩個(gè)器件在設(shè)計(jì)時(shí)應(yīng)考慮安全問(wèn)題。J1 的引腳間距應(yīng)加大,T1 的輸入輸出線應(yīng)適當(dāng)加粗,確保高壓隔離和大電流散熱良好。</p><p> ?。?)穩(wěn)壓器件的位置</p><p> 當(dāng)LM7805 工作電壓高于5V 時(shí),會(huì)有較大熱量產(chǎn)生,因此在設(shè)計(jì)時(shí)應(yīng)放在PCB 邊緣通風(fēng)散熱良好的地方,并且散熱片朝向外部。</p><p> 根據(jù)上述三部分的PCB 圖,用萬(wàn)用板和相
80、應(yīng)元器件焊接制作實(shí)驗(yàn)硬件,依據(jù)設(shè)計(jì)用細(xì)裸導(dǎo)線布線,完成三部分硬件的制作。</p><p><b> 第三章 程序的設(shè)計(jì)</b></p><p> 本章依據(jù)已經(jīng)設(shè)計(jì)好的的硬件,選用合適的語(yǔ)言給每一個(gè)模塊設(shè)計(jì)驅(qū)動(dòng)程序,最后綜合編譯,生成下載文件。程序文檔由傳感器通信、數(shù)碼管動(dòng)態(tài)掃描、LED和蜂鳴器報(bào)警、按鍵輸入檢測(cè)和串口發(fā)送數(shù)據(jù)五個(gè)部分組成。</p>&
81、lt;p> 3.1 程序功能描述、單片機(jī)內(nèi)部資源分配和程序流程圖</p><p> 3.1.1 程序功能描述</p><p> 程序設(shè)計(jì)的目的是控制單片機(jī)引腳的電平變化,從而控制相應(yīng)外圍電路按照要求工作,這些控制包括單總線溫濕度傳感器的數(shù)據(jù)獲取、數(shù)碼管的動(dòng)態(tài)掃描顯示、LED 和蜂鳴器的聯(lián)合驅(qū)動(dòng)報(bào)警、按鍵信號(hào)檢測(cè)和串口數(shù)據(jù)發(fā)送,并且這些控制必須保持協(xié)調(diào)統(tǒng)一、可靠穩(wěn)定地實(shí)現(xiàn)系統(tǒng)的要
82、求功能。</p><p> 3.1.2 單片機(jī)內(nèi)部資源分配——兩個(gè)定時(shí)器的分工</p><p> 數(shù)碼管的顯示在本系統(tǒng)中為關(guān)鍵部分,它的顯示有連續(xù)性(掃描兩位之間時(shí)間差不能過(guò)大,否則會(huì)斷續(xù)顯示)和暫留性(每一位顯示的停留時(shí)間不能過(guò)短,否則亮度不高),因此采用默認(rèn)中斷優(yōu)先級(jí)較高的定時(shí)器0 進(jìn)行中斷動(dòng)態(tài)掃描,掃描時(shí)間定為1 毫秒。</p><p> 報(bào)警LED 和
83、蜂鳴器的狀態(tài)變化也應(yīng)該有實(shí)時(shí)性,否則會(huì)出現(xiàn)報(bào)警滯后的問(wèn)題,因此用定時(shí)器1 進(jìn)行中斷報(bào)警掃描,蜂鳴器的響聲用最簡(jiǎn)單的“滴滴”聲響,采用頻率為5Hz 的方波,而LED 的閃爍也同步進(jìn)行,掃描時(shí)間定為100 微妙。此外,在串口發(fā)送數(shù)據(jù)期間,由于單片機(jī)本身要求,定時(shí)器1 用作波特率產(chǎn)生器。</p><p> 其他控制部分在主函數(shù)中進(jìn)行或附加在定時(shí)器的中斷服務(wù)中,但中斷服務(wù)不能處理太多操作,否則程序執(zhí)行效率很低。<
84、/p><p> 3.1.3 程序的流程圖</p><p> 根據(jù)單片機(jī)的特點(diǎn)和系統(tǒng)各部分的運(yùn)行時(shí)序,經(jīng)過(guò)多次試驗(yàn),最后確定系統(tǒng)高效穩(wěn)定工作的執(zhí)行順序?yàn)椋洪_始→初始化并啟動(dòng)兩個(gè)定時(shí)器→掃描按鍵→判斷按鍵值→執(zhí)行相應(yīng)功能→完畢返回至按鍵掃描,其中定時(shí)器0 中斷服務(wù)→掃描數(shù)碼管→每隔1 秒獲取傳感器數(shù)據(jù),定時(shí)器1 中斷服務(wù)→報(bào)警判斷(低溫,高溫,低濕,高濕),重復(fù)進(jìn)行此過(guò)程,即可實(shí)現(xiàn)系統(tǒng)循環(huán)工作
85、。</p><p> 詳細(xì)流程圖如下圖所示:</p><p> 圖 3-1 系統(tǒng)程序流程圖</p><p> 3.2 編程語(yǔ)言和工具的選擇以及程序文件的分配</p><p> 3.2.1 編程語(yǔ)言的選擇</p><p> 從程序的流程圖可以看出,系統(tǒng)的程序較為復(fù)雜,如果選用執(zhí)行效率相對(duì)較高的匯編來(lái)書寫,代碼會(huì)
86、很長(zhǎng),閱讀不便,并且調(diào)試也很困難。</p><p> 為了提高程序的可讀性和調(diào)試的便利性,選用C 語(yǔ)言來(lái)編寫。C 語(yǔ)言功能豐富,表達(dá)能力強(qiáng),使用靈活方便,應(yīng)用面廣,目標(biāo)程序效率高,可執(zhí)行性好,而且C 語(yǔ)言既有高級(jí)語(yǔ)言的特點(diǎn),也有匯編語(yǔ)言的特點(diǎn),能直接對(duì)單片機(jī)硬件進(jìn)行操作,因此使用起來(lái)十分方便。</p><p> 當(dāng)然,C 語(yǔ)言和MCS-51 單片機(jī)結(jié)合之后產(chǎn)生的C51 語(yǔ)言,與標(biāo)準(zhǔn)的C
87、 語(yǔ)言還有一定的差別,編程的時(shí)候應(yīng)該注意這些問(wèn)題。</p><p> 除此之外,C51 的強(qiáng)大功能及其高效率的重要體現(xiàn)之一在于其豐富的可直接調(diào)用的庫(kù)函數(shù),這使得程序代碼簡(jiǎn)單,結(jié)構(gòu)清晰,易于調(diào)試和維護(hù)。特別是本征庫(kù)的9 個(gè)函數(shù),雖然少,但都非常有用,其頭文件為intrins.h,主要功能為按位循環(huán)左移或右移,位測(cè)試等。</p><p> 3.2.2 編程工具的選擇</p>
88、<p> 由于單片機(jī)種類繁多,各大公司都紛紛開發(fā)了自己的編程軟件,而KEIL C51軟件是眾多單片機(jī)應(yīng)用開發(fā)的優(yōu)秀軟件之一,它集編輯、編譯、仿真于一體,支持匯編、PLM 語(yǔ)言和C 語(yǔ)言的程序設(shè)計(jì),界面友好,易學(xué)易用。</p><p> 此外,Keil 還支持自動(dòng)添加多款單片機(jī)的編譯預(yù)處理文件,包含各類單片機(jī)的頭文件,如51 單片機(jī)的頭文件reg51.h。</p><p>
89、3.2.3 程序文件的分配</p><p> 經(jīng)過(guò)上述分析,程序可用五個(gè)C 文件來(lái)存放五個(gè)功能獨(dú)立的程序模塊,另外有一個(gè)公共調(diào)用的延時(shí)函數(shù)文件和主函數(shù)文件,此外,各部分還有相應(yīng)的調(diào)用頭文件來(lái)進(jìn)行連接,從而實(shí)現(xiàn)了程序和硬件對(duì)應(yīng),設(shè)計(jì)模塊化,調(diào)試更為方便。</p><p><b> 具體文件分配如表:</b></p><p> 表 3.1 系
90、統(tǒng)程序文件分配</p><p> 3.3 傳感器通信程序設(shè)計(jì)</p><p> 由于DHT11 為單總線通信器件,為了確保單片機(jī)成功與其通信,編寫的程序必須嚴(yán)格遵守它獨(dú)特的通信協(xié)議。DHT11 的通信由兩部分組成——握手確認(rèn)和數(shù)據(jù)傳送。</p><p> 3.3.1 握手確認(rèn)</p><p> 先來(lái)看說(shuō)明書中的時(shí)序圖:</p&g
91、t;<p> 圖 3-2 傳感器與單片機(jī)握手確認(rèn)時(shí)序</p><p> 從圖中可以看出,傳感器和主機(jī)相互確認(rèn)的過(guò)程為:未通信時(shí),通信線保持高電平;通信開始后,主機(jī)先拉低電平至少18 毫秒,用以確保傳感器可以檢測(cè)到主機(jī)信號(hào),之后主機(jī)再拉高電平20~40 微妙等待傳感器響應(yīng);傳感器響應(yīng)后,先拉低電平40~50 微妙,予以通知主機(jī),再拉高電平同樣的時(shí)間之后就轉(zhuǎn)入數(shù)據(jù)傳輸時(shí)序,握手通信也就結(jié)束。部分程序
92、如下(DHT 為通信端口):</p><p> //主機(jī)與DHT11 通信開始</p><p> DHT=0;//主機(jī)先拉低總線電平</p><p> //調(diào)用延時(shí)函數(shù),延時(shí)18 毫秒</p><p> DHT=1;//再拉高總線電平</p><p> //調(diào)用延時(shí)函數(shù),延時(shí)40 微妙</p>
93、<p> DHT=1;//拉高電平,設(shè)置總線為輸入狀態(tài)</p><p> if(!DHT)//如果DHT11 輸出低電平響應(yīng),就開始接收數(shù)據(jù)</p><p><b> {</b></p><p> while(!DHT);//先等待DHT 響應(yīng)的低電平結(jié)束40~50 微秒</p><p> while
94、(DHT);//再等待DHT 響應(yīng)的高電平結(jié)束40~50 微妙</p><p> //下面開始接收數(shù)據(jù)</p><p><b> }</b></p><p> 3.3.2 數(shù)據(jù)傳送</p><p> 還是先來(lái)看說(shuō)明書中的時(shí)序圖。</p><p> 圖 3-3 傳感器發(fā)送數(shù)據(jù)0 時(shí)序<
95、;/p><p> 圖 3-4 傳感器發(fā)送數(shù)據(jù)1 時(shí)序</p><p> 從圖中可以看出,在數(shù)據(jù)傳輸時(shí),單片機(jī)只要按照時(shí)序檢測(cè)傳感器輸出的電平信號(hào)即可得到一位數(shù)據(jù),具體要求為:無(wú)論數(shù)據(jù)是0 還是1,都以12~14 微妙的低電平開始,之后,若數(shù)據(jù)是0,則傳感器拉高電平并保持26~28 微妙;若數(shù)據(jù)是1,則傳感器拉高電平并保持116~118 微妙,如此連續(xù)進(jìn)行,送出40位的數(shù)據(jù)。</p&g
96、t;<p> 由于電平變化時(shí)間是以微妙計(jì)算,非常小,因此寫程序時(shí)必須要嚴(yán)格精確的控制時(shí)間,這在設(shè)計(jì)時(shí)有兩個(gè)探索過(guò)程。</p><p> ?。?)初期構(gòu)想——定時(shí)器精確計(jì)時(shí)法</p><p> 晶振為12MHz 時(shí),定時(shí)器最小定時(shí)為1 微妙,先聲明一個(gè)大小為40 的無(wú)符號(hào)字符型數(shù)組,用來(lái)存儲(chǔ)定時(shí)器獲得的40 個(gè)微妙數(shù),單片機(jī)計(jì)時(shí)過(guò)程如下:</p><p&
97、gt; 圖 3-5 定時(shí)器計(jì)時(shí)接收數(shù)據(jù)流程</p><p> 那么這樣就得到了40 個(gè)微秒時(shí)間數(shù),再對(duì)這40 個(gè)時(shí)間數(shù)進(jìn)行判斷,得到數(shù)據(jù)0 或1,從而得到溫濕度數(shù)據(jù)。</p><p> 經(jīng)過(guò)分析和試驗(yàn)發(fā)現(xiàn),這樣處理,單片機(jī)的數(shù)據(jù)量會(huì)比較大,而且定時(shí)器的啟動(dòng)和關(guān)閉、數(shù)組的操作會(huì)額外花費(fèi)很多時(shí)間,這就導(dǎo)致雖然定時(shí)器計(jì)得很精確,但是總的來(lái)說(shuō),并不是很精確,而且傳感器的輸出也會(huì)有一定的誤差,
98、因此這種處理數(shù)據(jù)的方式不可取,必須尋求新的解決方案。</p><p> (2)合理方案——超時(shí)修改判斷法</p><p> 經(jīng)過(guò)后期的不斷實(shí)驗(yàn)分析,采用以下方案較為合理:</p><p> 圖 3-6 超時(shí)修改數(shù)據(jù)流程</p><p> 這種方案正是利用了數(shù)據(jù)0 和1 高電平的時(shí)間不同來(lái)判斷數(shù)據(jù),先認(rèn)為是數(shù)據(jù)0 的時(shí)間(26~28 微
99、妙),延時(shí)30 微秒越過(guò)這個(gè)時(shí)間已經(jīng)足夠了,再檢測(cè)數(shù)據(jù)線是否仍然為高電平,如果是高電平就修改數(shù)據(jù)為1,并且等待數(shù)據(jù)1 剩下的高電平結(jié)束,分字節(jié)接收,因此程序簡(jiǎn)要如下:</p><p> while(!DHT);//先出現(xiàn)低電平約12-14 微秒,等待結(jié)束</p><p> //延時(shí)30 微秒,越過(guò)數(shù)據(jù)0 的高電平時(shí)間26~28 微秒</p><p> Temp
100、_Data=0x00;//先判定數(shù)據(jù)為0</p><p> if(DHT)Temp_Data=0x01; //如果數(shù)據(jù)0 高電平超時(shí),則修改為數(shù)據(jù)1</p><p> while(DHT);//等待數(shù)據(jù)1 剩下的高電平時(shí)間結(jié)束,大約118-30=88 微秒</p><p> //以下為接收數(shù)據(jù)處理程序</p><p> 3.3.3 相
101、關(guān)問(wèn)題解決方案</p><p><b> ?。?)精確延時(shí)函數(shù)</b></p><p><b> 毫秒延時(shí):</b></p><p> // 一次for 循環(huán)大約8 個(gè)機(jī)器周期,加上while 判斷和函數(shù)調(diào)用、返回,大約共120×8+40= 1000us=1ms</p><p> v
102、oid Delay_ms(unsigned int ms )</p><p><b> {</b></p><p> unsigned char Temp;</p><p> while(ms--)</p><p> for(Temp=0;Temp<120;Temp++);</p><p
103、><b> }</b></p><p><b> 10 微秒延時(shí):</b></p><p> //nop 一次1 個(gè)機(jī)器周期,加上函數(shù)調(diào)用和返回各2 個(gè)周期,共6+2×2=10us</p><p> void Delay_10us()</p><p><b> {
104、</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p>
105、<p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> }</b></p><p> (2)采樣傳感器數(shù)據(jù)的時(shí)序安排</p><p> 前期設(shè)計(jì)時(shí),定義了兩個(gè)溫濕度全局變量,中斷使用這兩個(gè)
106、變量來(lái)顯示數(shù)據(jù);而主函數(shù)則采樣傳感器,修改這兩個(gè)全局變量,這種看似沒(méi)有問(wèn)題的設(shè)計(jì),在實(shí)驗(yàn)時(shí)卻始終得到的是亂碼數(shù)據(jù)。結(jié)合相關(guān)資料和分析實(shí)驗(yàn)結(jié)果后發(fā)現(xiàn),這種設(shè)計(jì)的問(wèn)題就在于中斷和主函數(shù)可能同時(shí)訪問(wèn)了這兩個(gè)變量,并且主函數(shù)在修改全局變量時(shí)可能被中斷打斷,導(dǎo)致溫度或濕度數(shù)據(jù)只修改了幾位,就被迫送入數(shù)碼管顯示,顯示的當(dāng)然也就是亂碼了。</p><p> 數(shù)據(jù)的修改和顯示應(yīng)遵從程序執(zhí)行的時(shí)序,即先修改數(shù)據(jù)再顯示或先顯示再修
107、改數(shù)據(jù)。考慮到傳感器通信并不復(fù)雜,且最壞情況也為25 毫秒左右,因此可在中斷掃描數(shù)碼管之前或之后,定時(shí)1s 來(lái)讀取傳感器,這樣安排程序位置后,經(jīng)調(diào)試,系統(tǒng)顯示數(shù)據(jù)正常。</p><p> 3.4 數(shù)碼管掃描程序設(shè)計(jì)</p><p> 根據(jù)硬件電路的設(shè)計(jì),數(shù)碼管采用動(dòng)態(tài)掃描方式驅(qū)動(dòng),而動(dòng)態(tài)掃描方式較多,在這里選用switch-case 結(jié)構(gòu)完成。</p><p>
108、 在設(shè)計(jì)硬件時(shí),為了方便在單面板上布線,共陽(yáng)極數(shù)碼管采用了變碼編碼方式,即數(shù)碼管的a~Dp 段和單片機(jī)的P00~P07 并不對(duì)應(yīng),實(shí)際安排為:</p><p> 表 3.2 數(shù)碼管段選信號(hào)線安排</p><p> 因此,10 個(gè)數(shù)字和報(bào)警設(shè)定顯示符號(hào)的編碼定義為下表方式:</p><p> 表3.3 數(shù)碼管顯示符號(hào)編碼</p><p>
109、; 注:編碼為十六進(jìn)制,其中“┣”和“┫”代表溫度和濕度,“L”和“H”代表低和高,如數(shù)碼管前兩位顯示“┣L”時(shí),代表正在進(jìn)行低溫報(bào)警值設(shè)定。</p><p> 當(dāng)數(shù)碼管顯示實(shí)時(shí)溫濕度數(shù)據(jù)時(shí),前兩位顯示溫度,后兩位顯示濕度;當(dāng)數(shù)碼管處于報(bào)警設(shè)定時(shí),前兩位顯示當(dāng)前設(shè)定的內(nèi)容,后兩位顯示設(shè)定的值,如┫H、60,表示當(dāng)前設(shè)定的為濕度上限,值為60%RH。以下為顯示實(shí)時(shí)溫濕度數(shù)據(jù)的部分程序:</p>&
110、lt;p> switch(Seg_Order)</p><p><b> {</b></p><p> case 0:Bit4=0;P0=Seg[Temperature /10];break;//顯示溫度高位</p><p> case 1:Bit3=0;P0=Seg[Temperature %10];break;//顯示溫度低位
111、</p><p> case 2:Bit2=0;P0=Seg[Humidity /10];break;//顯示濕度高位</p><p> case 3:Bit1=0;P0=Seg[Humidity %10];break;//顯示濕度低位</p><p><b> }</b></p><p> 顯示完畢后修改Seg
112、_Order 的程序?yàn)椋?lt;/p><p> Seg_Order++;</p><p> Seg_Order&=0x03;//超過(guò)四位后就返回第一位,從而顯示下一位數(shù)碼管。</p><p> 3.5 報(bào)警及設(shè)置程序設(shè)計(jì)</p><p> 報(bào)警程序包括兩個(gè)部分,一為報(bào)警驅(qū)動(dòng)信號(hào),另為報(bào)警值調(diào)整。</p><p&
113、gt; 3.5.1 報(bào)警驅(qū)動(dòng)</p><p> 這部分的程序較為簡(jiǎn)單,主要是作溫濕度超限的簡(jiǎn)單判斷并為蜂鳴器和LED引腳送出電平信號(hào)即可</p><p> 如,蜂鳴器閃爍報(bào)警時(shí)信號(hào)為Buzzer=~Buzzer;紅色LED 熄滅為L(zhǎng)ED_R=1。</p><p> 3.5.2 報(bào)警值調(diào)整</p><p> 程序設(shè)計(jì)思路為,進(jìn)入某個(gè)限
114、值設(shè)定狀態(tài)時(shí),先修改數(shù)碼管顯示狀態(tài)全局變量,使其顯示調(diào)整結(jié)果;再進(jìn)入一個(gè)死循環(huán),在循環(huán)中掃描按鍵,根據(jù)不同的按鍵執(zhí)行相應(yīng)操作:結(jié)束本次調(diào)整、調(diào)整值加一或調(diào)整值減一,流程如圖。</p><p> 圖 3-7 報(bào)警值調(diào)整流程</p><p> 如此進(jìn)行四次,設(shè)定四個(gè)報(bào)警點(diǎn),最后再把四個(gè)子函數(shù)放入一個(gè)主調(diào)函數(shù)中,即可實(shí)現(xiàn)一次完整的報(bào)警調(diào)整操作。</p><p> 3
115、.6 按鍵掃描程序設(shè)計(jì)</p><p> 由于系統(tǒng)只有三個(gè)按鍵,個(gè)數(shù)少,可采用if-else 結(jié)構(gòu)逐個(gè)掃描,采用經(jīng)濟(jì)型的延時(shí)去抖動(dòng)法,為了保證按鍵可靠被按下,實(shí)驗(yàn)表明,按鍵短按一次總的時(shí)間大約為300 毫秒,因此按鍵按下抖動(dòng)時(shí)間、按下時(shí)間和按鍵釋放抖動(dòng)時(shí)間的延時(shí)共300 毫秒為宜,而鍵KEY1 為多功能鍵,有長(zhǎng)按和短按之分,具體安排如下:</p><p> 表3.4 按鍵與鍵值分配&l
116、t;/p><p> 注:多功能鍵 KEY1 可靠短按總時(shí)間定為500 毫秒,只要超過(guò)此值即認(rèn)為0 是長(zhǎng)按,依舊采用超時(shí)檢測(cè)法</p><p><b> 程序簡(jiǎn)要如下。</b></p><p> if(Key1==0)//先掃描1號(hào)按鍵</p><p><b> {</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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的倉(cāng)庫(kù)溫濕度檢測(cè)系統(tǒng)
- 單片機(jī)溫濕度畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的倉(cāng)庫(kù)溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的溫濕度檢測(cè)儀【畢業(yè)設(shè)計(jì)】
- 基于單片機(jī)的溫濕度檢測(cè)
- 基于單片機(jī)的溫濕度檢測(cè)
- 基于單片機(jī)的溫濕度檢測(cè)系統(tǒng)的設(shè)計(jì)
- 單片機(jī)的溫濕度檢測(cè)儀畢業(yè)設(shè)計(jì)
- 單片機(jī)無(wú)線溫濕度測(cè)量系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的溫濕度控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的溫濕度檢測(cè)系統(tǒng)的設(shè)計(jì).pdf
- 基于單片機(jī)溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的溫濕度檢測(cè)畢業(yè)論文
- 基于單片機(jī)的溫濕度檢測(cè)畢業(yè)論文
- 基于單片機(jī)倉(cāng)庫(kù)溫濕度的監(jiān)測(cè)系統(tǒng)的畢業(yè)設(shè)計(jì)
- 開題報(bào)告基于單片機(jī)的溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的遠(yuǎn)程大棚溫濕度監(jiān)控系統(tǒng)
- 畢業(yè)設(shè)計(jì)_基于單片機(jī)的糧倉(cāng)溫濕度監(jiān)控系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的糧倉(cāng)溫濕度控制系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的大棚溫濕度光強(qiáng)監(jiān)測(cè)畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論