

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