畢業(yè)設(shè)計(jì)-基于單片機(jī)的環(huán)境溫濕度檢測(cè)系統(tǒng)_第1頁
畢業(yè)設(shè)計(jì)-基于單片機(jī)的環(huán)境溫濕度檢測(cè)系統(tǒng)_第2頁
畢業(yè)設(shè)計(jì)-基于單片機(jī)的環(huán)境溫濕度檢測(cè)系統(tǒng)_第3頁
畢業(yè)設(shè)計(jì)-基于單片機(jī)的環(huán)境溫濕度檢測(cè)系統(tǒng)_第4頁
畢業(yè)設(shè)計(jì)-基于單片機(jī)的環(huán)境溫濕度檢測(cè)系統(tǒng)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

摘要環(huán)境溫濕度檢測(cè)系統(tǒng)是日常生活、工業(yè)生產(chǎn)和農(nóng)業(yè)管理中廣泛使用的一種設(shè)備。該設(shè)備具備以下主要功能:實(shí)時(shí)檢測(cè)出環(huán)境中的溫度和濕度參數(shù)值,并顯示出來,根據(jù)設(shè)定的報(bào)警限予以報(bào)警指示,可以和上層控制器通信。隨著單片機(jī)的大規(guī)模應(yīng)用,單片機(jī)在檢測(cè)系統(tǒng)中也越來越多的被使用。本設(shè)計(jì)以AT89S52這款低功耗、高性能、在系統(tǒng)編程的8位單片機(jī)為系統(tǒng)控制處理核心,由單總線數(shù)字溫濕度傳感器DHT11、數(shù)碼管顯示屏、LED與蜂鳴器、通信串口和按鍵控制輸入等五個(gè)局部組成,從而實(shí)現(xiàn)環(huán)境問世的監(jiān)測(cè)系統(tǒng)的主要功能。后期的探索設(shè)計(jì)——換用紅外遙控控制和LCM為顯示屏、外加時(shí)鐘和存儲(chǔ)芯片、增加照度檢測(cè)電路,極大地提升了系統(tǒng)的性能,使系統(tǒng)不僅可以檢測(cè)并顯示環(huán)境溫度、濕度和照度變量,而且可以按照時(shí)間順序存儲(chǔ)適量的數(shù)據(jù)。此外,系統(tǒng)有降壓整流和穩(wěn)壓濾波電路,可用交流市電〔220V〕、各種平安直流電〔5~24V〕、太陽能電池等為系統(tǒng)供電,并且可以存儲(chǔ)少量電能〔900mAh〕,因此,系統(tǒng)有較寬的工作電壓,可滿足多種應(yīng)用場(chǎng)合。本設(shè)計(jì)由Protel畫出了電路原理圖和PCB圖,并由此完成了硬件的制作,使用C51語言對(duì)單片機(jī)進(jìn)行編程控制,并模塊化仿真,最后通過綜合調(diào)試,符合預(yù)期的設(shè)計(jì)要求。關(guān)鍵詞:AT89S52單片機(jī)DHT11傳感器PCB設(shè)計(jì)溫濕度檢測(cè)AbstractEnvironmenttemperatureandhumiditydetectionsystemisakindofequipmentwhichiswidelyusedindailylife,industrialproductionandagriculturalmenagement.Theequipmenthasfollowingmainfunction:detectingthetemperatureandhumidityparametersintheenvironmentreal-timeanddisplaythem,givingalarmindicationaccordingtothesetlimits,andbeingabletocontactwithuppercontroller.WiththeSCMusedlarge-scalely,theSCMismoreandmoreusedindetectionsystem.Thisdesign,usesthe8-bitSCMnamedAT89S52,whichhasalotofadvantagessuchaslow-powerdissipation,high-performanceandISP,andmadeupoffiveparts:single-wiredigitaltemperatureandhumiditysensor,digitrondisplay,LEDandbuzzer,serialcomunicationsandkeysinput,thusperformthefunctionofenvironmenttemperatureandhumiditydetectionsystem.Theexplorationdesigninlaterstage,includinginfraredremotecontrolandLCMdisplay,clockandmemorychips,andilluminationdetectioncircuit,immenselypromotesthepropertyofthesystem,makesitnotonlydetecteanddisplaythetemerature,humidityandillumination,butalsostoresomedatainorderoftime.Inaddition,withstep-downrectifierandstabilivoltfiltercircuit,thesystemcanuseutilitypowerAC220V,differentsafetyDC5~24V,solarbatterytosupplypower,andstoresomeelectricenergyabout900mAh,sothatithasawidepowersupplyvoltageandmeetsdifferentapplicationplaces.ThedesigngivesthecircuitdesignschematicsandPCBdiagramwithProtel,andcompletesthehardwarepartoftheproduction,andusesC51languagesystemtoaccomplishthecontrolprogramofSCM,andsimulateseverypartsuccessfully.Throughthesyntheticaldebugging,thedesignachievestherequireddesigns.Keywords:AT89S52SCM,DHT11sensor,serialcommunication,temperatureandhumiditydetection,PCBdesign目錄第一章前言11.1設(shè)計(jì)的目的意義調(diào)查11.2設(shè)計(jì)的市場(chǎng)現(xiàn)狀分析21.3設(shè)計(jì)的內(nèi)容要求說明31.4設(shè)計(jì)的實(shí)施方案設(shè)想4第二章硬件的設(shè)計(jì)52.1單片機(jī)的選用52.2傳感器的選用72.2.1初期設(shè)計(jì)72.2.2最正確方案82.2.3電路設(shè)計(jì)92.3數(shù)碼管驅(qū)動(dòng)電路設(shè)計(jì)102.3.1數(shù)碼管的選用102.3.2驅(qū)動(dòng)電路的設(shè)計(jì)102.4報(bào)警電路設(shè)計(jì)122.4.1蜂鳴器驅(qū)動(dòng)電路132.4.2LED驅(qū)動(dòng)電路132.5控制輸入電路設(shè)計(jì)142.6串口通信電路設(shè)計(jì)162.7穩(wěn)定電源電路設(shè)計(jì)172.8系統(tǒng)三大局部的PCB設(shè)計(jì)182.8.1系統(tǒng)主體局部PCB設(shè)計(jì)192.8.2串口通訊PCB設(shè)計(jì)20穩(wěn)壓電源局部PCB設(shè)計(jì)21第三章程序的設(shè)計(jì)233.1程序功能描述、單片機(jī)內(nèi)部資源分配和程序流程圖233.1.1程序功能描述233.1.2單片機(jī)內(nèi)部資源分配——兩個(gè)定時(shí)器的分工233.1.3程序的流程圖243.2編程語言和工具的選擇以及程序文件的分配253.2.1編程語言的選擇253.2.2編程工具的選擇263.2.3程序文件的分配263.3傳感器通信程序設(shè)計(jì)273.3.1握手確認(rèn)273.3.2數(shù)據(jù)傳送283.3.3相關(guān)問題解決方案313.4數(shù)碼管掃描程序設(shè)計(jì)323.5報(bào)警及設(shè)置程序設(shè)計(jì)333.5.1報(bào)警驅(qū)動(dòng)333.5.2報(bào)警值調(diào)整343.6按鍵掃描程序設(shè)計(jì)343.7串口發(fā)送數(shù)據(jù)程序設(shè)計(jì)363.7.1波特率設(shè)置363.7.2數(shù)據(jù)發(fā)送格式373.7.3發(fā)送方式373.8Keil綜合編譯和結(jié)果分析、程序下載383.8.1綜合編譯情況和結(jié)果分析383.8.2生成HEX文件下載至單片機(jī)中40第四章系統(tǒng)后期探索優(yōu)化設(shè)計(jì)簡介414.1換用紅外控制和LCM顯示的探索414.1.1紅外控制414.1.2LCM顯示444.2增加實(shí)時(shí)時(shí)鐘和存儲(chǔ)芯片來記錄數(shù)據(jù)的探索484.3增加照度檢測(cè)電路的探索50結(jié)束語54參考文獻(xiàn)56附錄57附1單片機(jī)驅(qū)動(dòng)程序57附2硬件制作元器件安裝圖、布線圖78第一章前言本章主要表達(dá)了溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)的一些根本情況,包括目的意義、市場(chǎng)現(xiàn)狀、設(shè)計(jì)要求和實(shí)施方案等幾個(gè)局部。1.1設(shè)計(jì)的目的意義調(diào)查現(xiàn)代社會(huì),隨著國家的經(jīng)濟(jì)不斷開展,人們的生活水平逐漸提高,在衣食住行根本滿足之后,追求一種健康長壽的生活方式已經(jīng)成為時(shí)代的潮流。家庭居室,工作場(chǎng)所是人們每天較長時(shí)間生活的兩個(gè)環(huán)境,而環(huán)境中的溫度和濕度變化那么和人們的生理、心理等身體健康狀況息息相關(guān)。相關(guān)研究結(jié)果摘錄如下;據(jù)生理學(xué)家研究,室內(nèi)溫度過高時(shí),會(huì)影響人的體溫調(diào)節(jié)功能,由于散熱不良而引起體溫升高、血管舒張、脈搏加快、心率加速。冬季,如果室內(nèi)溫度經(jīng)常保持在25度以上,人就會(huì)神疲力乏、頭暈?zāi)X脹、思維遲鈍、記憶力差。同時(shí),由于室內(nèi)外溫差懸殊,人體難以適應(yīng),容易患傷風(fēng)感冒。如果室內(nèi)溫度過低,那么使人體代謝功能下降,脈搏、呼吸減慢,皮下血管收縮,皮膚過度緊張,呼吸道粘膜的抵抗力減弱,容易誘發(fā)呼吸道疾病。因此,科學(xué)家們把人對(duì)‘冷耐受”的下限溫度和”冷耐熱”的上限溫度,分別定為11度和32度。然而,人的體感并不單純受氣溫或氣濕兩種因素的影響,而是兩者綜合作用的結(jié)果。通過實(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)的影響,最適宜的室內(nèi)溫度應(yīng)是工作效率最高的值。溫度應(yīng)是18度,濕度應(yīng)是40%至60%,此時(shí),人的精神狀態(tài)最好,思維最敏捷。因此,隨時(shí)關(guān)注環(huán)境的溫濕度變化而由此采取措施對(duì)人們的健康生活和高效工作有著重要的意義。除此之外,工業(yè)生產(chǎn)、農(nóng)業(yè)管理和醫(yī)療護(hù)理等環(huán)境中的溫濕度也是兩項(xiàng)重要的檢測(cè)控制參數(shù),對(duì)平安生產(chǎn)、糧食豐收和病人康復(fù)等意義重大。局部要求數(shù)據(jù)如下:由此看來,研究設(shè)計(jì)環(huán)境溫濕度檢測(cè)系統(tǒng)十分有必要。1.2設(shè)計(jì)的市場(chǎng)現(xiàn)狀分析縱觀市場(chǎng),溫濕度檢測(cè)技術(shù)已經(jīng)比擬成熟,已有的各種溫濕度檢測(cè)產(chǎn)品,五花八門,猶如八仙過海,各顯神通,如A2000家用溫濕度報(bào)警表、YD-808A工業(yè)用溫濕度顯示器等產(chǎn)品。從功能上分析這些產(chǎn)品可以看出,一個(gè)比擬完整的環(huán)境溫濕度檢測(cè)系統(tǒng)應(yīng)該具備以下主要的四個(gè)功能:〔1〕實(shí)時(shí)檢測(cè)出環(huán)境中的溫度和濕度參數(shù);〔2〕檢測(cè)的參數(shù)值顯示在顯示設(shè)備上〔如數(shù)碼管,液晶顯示器等〕;〔3〕根據(jù)環(huán)境要求,設(shè)定溫度濕度報(bào)警的上下限值,并實(shí)時(shí)報(bào)警;〔4〕與上層監(jiān)控設(shè)備通信〔如PC〕,實(shí)現(xiàn)數(shù)據(jù)傳輸〔雙向或單向〕;因此,本設(shè)計(jì)也應(yīng)該具備這些功能,并且對(duì)每一個(gè)局部進(jìn)行優(yōu)化設(shè)計(jì),也可以擴(kuò)展系統(tǒng)功能。除了功能上的分析之外,再看這些產(chǎn)品的造價(jià)和供電情況,有以下兩個(gè)問題:〔1〕價(jià)格太高,不符合普通消費(fèi)者的消費(fèi)水平,如A2000家用溫濕度報(bào)警表,淘寶網(wǎng)上售價(jià)300左右;〔2〕供電都比擬單一,規(guī)定在直流6V,9V,12V或交流220V等,除了購置產(chǎn)品主體之外,還需要一個(gè)特定的電源適配器;綜上所述,本設(shè)計(jì)設(shè)計(jì)出的環(huán)境溫濕度檢測(cè)系統(tǒng),除了具備市場(chǎng)上已有產(chǎn)品的功能之外,還應(yīng)盡量降低制作價(jià)格,確保有較寬的工作電壓。1.3設(shè)計(jì)的內(nèi)容要求說明根據(jù)上述市場(chǎng)調(diào)查情況和畢業(yè)設(shè)計(jì)任務(wù)書的要求,本設(shè)計(jì)的研究內(nèi)容包括以下幾個(gè)方面:1、根本要求〔1〕主要檢測(cè)環(huán)境變化中的溫度和適度參數(shù);〔2〕溫濕度參數(shù)顯示在LED數(shù)碼管屏幕上;〔3〕可以設(shè)置溫濕度報(bào)警點(diǎn),并能按照設(shè)置實(shí)時(shí)報(bào)警;2、控制要求〔1〕根據(jù)需求,溫濕度數(shù)據(jù)可以發(fā)送給上層監(jiān)控設(shè)備,如普通電腦等;〔2〕可以按照時(shí)間順序,以一定格式將溫濕度數(shù)據(jù)導(dǎo)出保存,以便進(jìn)行再分析處理;3、制作要求〔1〕造價(jià)低廉,工作可靠;〔2〕工作電壓較寬,滿足不同的供電測(cè)試條件;〔3〕做出產(chǎn)品樣機(jī),調(diào)試通過,可以正常工作;因此,本溫濕度檢測(cè)系統(tǒng)的設(shè)計(jì)應(yīng)以這三方面的要求為依據(jù),從而進(jìn)行各個(gè)局部的詳細(xì)設(shè)計(jì)。1.4設(shè)計(jì)的實(shí)施方案設(shè)想基于單片機(jī)的環(huán)境溫濕度檢測(cè)系統(tǒng)實(shí)施方案設(shè)想如下:1、由溫度和濕度傳感器對(duì)環(huán)境中的溫度和濕度變量進(jìn)行采樣;2、單片機(jī)和傳感器通信,獲得采樣數(shù)據(jù)并暫存;3、單片機(jī)對(duì)數(shù)據(jù)進(jìn)行預(yù)處理〔如校驗(yàn)等〕,對(duì)有效數(shù)據(jù)再進(jìn)行以下四種處理:驅(qū)動(dòng)顯示電路,把數(shù)據(jù)顯示在數(shù)碼管上;掃描輸入的控制信號(hào),設(shè)定報(bào)警限值;根據(jù)設(shè)定的報(bào)警,驅(qū)動(dòng)報(bào)警電路工作,予以報(bào)警指示;掃描輸入的控制信號(hào),根據(jù)需要發(fā)送數(shù)據(jù)給上層設(shè)備,在設(shè)備上進(jìn)行數(shù)據(jù)再處理或保存;在系統(tǒng)供電端有穩(wěn)壓濾波電路或電能存儲(chǔ)器件,保證系統(tǒng)正常工作;選用價(jià)格低廉的器件或設(shè)計(jì)電路,減少花費(fèi);在以上方案都實(shí)施的情況下,對(duì)系統(tǒng)進(jìn)行優(yōu)化創(chuàng)新設(shè)計(jì),強(qiáng)化功能;因此,本系統(tǒng)的設(shè)計(jì)應(yīng)按照這個(gè)思路進(jìn)行具體設(shè)計(jì),把每一步的設(shè)想轉(zhuǎn)化為現(xiàn)實(shí)的設(shè)計(jì)。系統(tǒng)的結(jié)構(gòu)圖如下:第二章硬件的設(shè)計(jì)根據(jù)緒論中的分析說明,可以明確溫濕度檢測(cè)系統(tǒng)的硬件電路分為電源穩(wěn)壓、傳感器檢測(cè)、數(shù)碼管顯示驅(qū)動(dòng)、報(bào)警驅(qū)動(dòng)、輸入控制、數(shù)據(jù)發(fā)送等六大局部,其中后五個(gè)局部都以單片機(jī)為核心,由單片機(jī)來進(jìn)行控制處理,因此單片機(jī)的選用至關(guān)重要。2.1單片機(jī)的選用自從20世紀(jì)70年代,因特爾公司推出第一代單片機(jī)以來,單片機(jī)的開展如雨后春筍。各大電氣商、半導(dǎo)體商根據(jù)不同的控制需求,尤其在嵌入式系統(tǒng)控制方面,以因特爾公司的51單片機(jī)的框架結(jié)構(gòu)為根底,研發(fā)了各種各樣的、功能強(qiáng)大的單片機(jī)。而今,我們已經(jīng)進(jìn)入了一個(gè)單片機(jī)可廣泛選擇的、百花齊放的時(shí)代。因此,選用一款價(jià)格低廉,性能優(yōu)良的單片機(jī)已不再困難。在MCS-51單片機(jī)8051的根底上,ATMEL公司開發(fā)的AT89系列的單片機(jī)自問世以來,以其較低廉的價(jià)格和獨(dú)特的程序存儲(chǔ)器——快速閃存器為用戶所親萊,尤其是AT89S52這款單片機(jī),它有以下幾個(gè)特點(diǎn):1、與MCS-51單片機(jī)產(chǎn)品兼容,完全可采用51指令系統(tǒng)用匯編或C51編程;2、8K字節(jié)在系統(tǒng)可編程FLASH存儲(chǔ)器,并且有1000次擦寫周期,這使得。調(diào)試程序和下載程序十分方便;3、全靜態(tài)操作,工作頻率范圍為0Hz~33MHz,頻率范圍寬,便于系統(tǒng)功耗控制;4、三級(jí)加密程序存儲(chǔ)器,使程序和系統(tǒng)更加難以仿制,確保了產(chǎn)品的知識(shí)產(chǎn)權(quán);5、32個(gè)可編程I/O口線,每個(gè)I/O都可以獨(dú)立或聯(lián)合使用,實(shí)現(xiàn)不同的數(shù)據(jù)操作,而且PI端口的高三位第二功能為ISP編程,實(shí)現(xiàn)在系統(tǒng)調(diào)試;6、三個(gè)16位定時(shí)器/計(jì)數(shù)器,其中定時(shí)器2也可以作為串口波特率的產(chǎn)生;7、八個(gè)中斷源,分為兩個(gè)優(yōu)先級(jí),可軟件設(shè)置;8、一個(gè)全雙工通用異步接收發(fā)送數(shù)據(jù)借口,以便與外設(shè)進(jìn)行串行數(shù)據(jù)通信;9、有低功耗空閑和掉電模式,掉點(diǎn)后可由中斷喚醒,可設(shè)置掉電標(biāo)識(shí)符;10、寬工作電壓范圍,VCC為2.7~5.5V,與TTL電平和CMOS電平兼容;總之,AT89系列單片機(jī)與MCS-51系列單片機(jī)相比,前者和后者有兼容性,但前者的性能價(jià)格比等指標(biāo)更為優(yōu)越。因此,選用AT89S52單片機(jī)可實(shí)現(xiàn)溫濕度檢測(cè)系統(tǒng)的功能,下列圖為該單片機(jī)的DIP40封裝外觀和引腳功能:圖2-1單片機(jī)的引腳圖根據(jù)單片機(jī)的推薦外圍電路,復(fù)位〔10K電阻,10uf電容〕、晶振〔12MHZ,電容22pf〕電路設(shè)計(jì)如上圖所示:圖2-2單片機(jī)復(fù)位電路圖2-3單片機(jī)晶振電路2.2傳感器的選用2.2.1初期設(shè)計(jì)本設(shè)計(jì)的初期設(shè)想是用一個(gè)溫度傳感器和一個(gè)濕度傳感器來檢測(cè)環(huán)境中的溫度和濕度參數(shù),其中溫度傳感器選用單總線數(shù)字溫度傳感器DS18B20,濕度傳感器選用數(shù)字式濕度傳感器SHT11,那么檢測(cè)局部功能框圖如下:圖2-4傳感器初期設(shè)計(jì)方案比擬DS18B20和SHT11,這兩個(gè)傳感器的通信都比擬復(fù)雜,具體過程為:主機(jī)發(fā)起通信、傳感器確認(rèn)通信、主機(jī)給傳感器寫命令字、傳感器給主機(jī)發(fā)送檢測(cè)數(shù)據(jù),且SHT11還要求外部輸入串行時(shí)鐘信號(hào)。這種通信的復(fù)雜,不僅表達(dá)在硬件電路的設(shè)計(jì)上,而且表達(dá)在程序的設(shè)計(jì)上,并且串行通信對(duì)時(shí)序要求比擬嚴(yán)格,這樣對(duì)單片機(jī)來說將是一個(gè)巨大的挑戰(zhàn),何況單片機(jī)還要進(jìn)行其他的后續(xù)控制處理。除此之外,這兩大傳感器的價(jià)格都不菲,DS18B20在8元左右,而SHT11那么在50元左右,這對(duì)支付能力也是一個(gè)巨大的考驗(yàn)。因此,這種方案不可取,必須尋求其他的傳感器解決方案,從而簡化硬件電路和程序設(shè)計(jì),讓單片機(jī)有更多的內(nèi)外部資源來處理后續(xù)操作。2.2.2最正確方案后期采用單總線數(shù)字溫濕度傳感器DHT11。這款傳感器由廣州奧松電子科技研發(fā),與單片機(jī)的通信十分簡潔方便,無需外接時(shí)鐘信號(hào),通信如下:圖2-5單總線數(shù)字溫濕度傳感器DHT11與單片機(jī)通信除此之外,它還有很多突出的優(yōu)點(diǎn):〔1〕溫濕度傳感器的一體化結(jié)構(gòu)能同時(shí)對(duì)相對(duì)濕度和溫度進(jìn)行測(cè)量,并以數(shù)字信號(hào)輸出,從而減少用戶對(duì)信號(hào)的預(yù)處理負(fù)擔(dān);〔2〕獨(dú)特的單總線數(shù)據(jù)傳輸線協(xié)議使得讀取傳感器更加便捷,而且還有全部校準(zhǔn)數(shù)據(jù)字節(jié),編碼方式為8位二進(jìn)制數(shù);〔3〕40位二進(jìn)制數(shù)據(jù)輸出,高位先出,格式為:濕度整數(shù)局部8位,小數(shù)局部8位;溫度整數(shù)局部8位,小數(shù)局部8位,最后8位為校驗(yàn)字節(jié),為前32位數(shù)據(jù)的和?!?〕寬工作電壓,幾乎與AT89S52的電壓相同,為3~5.5V,而且功耗較低,通信最大電流為2.5mA。其簡要的性能參數(shù)如下表所示;表2-1溫濕度傳感器DHT11性能參數(shù)從表中可以看出,它的測(cè)量范圍較小,但對(duì)實(shí)驗(yàn)或民用已經(jīng)足夠了,如果要工業(yè)使用的話,可選用該公司的同類工業(yè)級(jí)產(chǎn)品AM323,測(cè)量范圍為-55.0~+125.0度,測(cè)量范圍為0.0~100.0%RH,并且可以和DHT11完全互換。2.2.3電路設(shè)計(jì)按照說明書的要求,DHT11與單片機(jī)的連接距離小于20米時(shí),需要在VCC和DATA引腳之間接一個(gè)5K左右的電阻,因此電路設(shè)計(jì)如下:圖2-6溫濕度傳感器DHT11與單片機(jī)連接電路至此,傳感器的硬件電路設(shè)計(jì)完成,另一局部的工作就是編程問題,在下一章節(jié)介紹。2.3數(shù)碼管驅(qū)動(dòng)電路設(shè)計(jì)2.3.由于溫濕度傳感器DHT11測(cè)溫范圍為0~50℃,測(cè)濕范圍為20~90%RH,溫度和濕度都是兩位數(shù)據(jù),因此可以用兩個(gè)兩位一體的數(shù)碼管來顯示溫濕度數(shù)據(jù),共陰極或共陽極都可以,本設(shè)計(jì)中選用兩個(gè)型號(hào)為FJS5202FH2.3.數(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引腳只有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à)格廉價(jià)也為2元左右一塊,而三極管只有0.2元左右,四個(gè)三極管共8角錢,相對(duì)來說比擬經(jīng)濟(jì)實(shí)惠,因此選用后一種方案。而相關(guān)器件電氣參數(shù)為:〔1〕紅色共陽極數(shù)碼管〔實(shí)際上是八個(gè)并聯(lián)的紅色LED〕的電壓范圍1.5~2.0V,最大工作電流為20mA×8=160mA;〔2〕單片機(jī)每個(gè)引腳灌電流〔外部電流流入單片機(jī)〕大約為24mA,拉電流〔單片機(jī)電流流入外設(shè)〕小于1mA。根據(jù)這兩項(xiàng)參數(shù),初步確定三極管選用90系列PNP型,用集電極接數(shù)碼管位選引腳,基極用電阻限流后接單片機(jī)引腳予以位選控制。再考慮數(shù)碼管電流的限定,符合要求的三極管只有8550和9012,其簡要參數(shù)見下表:表2.2可選三極管參數(shù)由表可以看出,8550的電流和功率都很大,既浪費(fèi)資源又不利于降低系統(tǒng)功耗,因此選用9012較為適宜。因此,這局部的電路設(shè)計(jì)如下:圖2.7數(shù)碼管段選信號(hào)與單片機(jī)連接電路圖2.8數(shù)碼管位選信號(hào)與單片機(jī)連接電路用單片機(jī)P0端口作為數(shù)碼管段選信號(hào),P2端口的高四位作為位選信號(hào),四個(gè)電阻的粗略大小為:R=(VCC-VEB)/Ib=〔〕/1mA=4.8K,可選用E24系列的電阻4.7K或5.1K。2.4報(bào)警電路設(shè)計(jì)本設(shè)計(jì)需要指示一種溫濕度正常狀態(tài)、一種數(shù)據(jù)發(fā)送狀態(tài)和四種超限報(bào)警狀態(tài),即溫度超下限,溫度超上限,濕度超下限,濕度超上限,可采用簡單的聲〔蜂鳴器〕光〔LED〕報(bào)警電路。LED顏色和狀態(tài)及蜂鳴器狀態(tài)分配如下表所示:表2.3報(bào)警指示狀態(tài)分配注:“——”表示LED熄滅或蜂鳴器無聲。蜂鳴器驅(qū)動(dòng)電路根據(jù)蜂鳴器的參數(shù):電壓1.3~1.5V,電流20~80mA,電阻6~8Ω知,可用選用集成放大芯片LM386驅(qū)動(dòng),但更經(jīng)濟(jì)的是用一個(gè)三極管9012或8550驅(qū)動(dòng)即可,電路如下圖:圖2.9蜂鳴器報(bào)警驅(qū)動(dòng)電路2.4.2LED驅(qū)動(dòng)電路根據(jù)LED的參數(shù):電壓1.5~2.5V,電流10~20mA,那么可用一電阻對(duì)電源進(jìn)行下拉,限流分壓后,LED陰極接入單片機(jī)予以控制,電阻阻值大約為:R=(VCC-VLED)/I=(5.5V-2V)/10mA=350Ω,選用330Ω或360Ω的電阻即可,具體電路如下列圖所示:圖2.10報(bào)警LED驅(qū)動(dòng)電路2.5控制輸入電路設(shè)計(jì)本設(shè)計(jì)的控制輸入局部為簡單的三個(gè)按鍵,由于單片機(jī)默認(rèn)狀態(tài)下端口引腳為高電平,可以接上按鍵與地相連,單片機(jī)檢測(cè)按鍵端口的電平情況來決定是否有按鍵按下和哪個(gè)按鍵被按下,抖動(dòng)問題采用軟件延時(shí)方式,減少硬件電路設(shè)計(jì),電路如下圖:圖2.11控制輸入按鍵連接電路經(jīng)過上述對(duì)各個(gè)模塊的分布設(shè)計(jì),現(xiàn)在可給出系統(tǒng)主體局部的原理總圖。圖2.12系統(tǒng)主體局部原理總圖考慮到PCB設(shè)計(jì)單面板布線的可行性,單片機(jī)的外部資源〔端口引腳〕分配按下進(jìn)行:傳感器DHT11數(shù)據(jù)線——P11;蜂鳴器HXD驅(qū)動(dòng)三極管基極——P10;程序調(diào)試ISP插座——P15、P16、P17;按鍵KEY1、2、3——P32、P33、P35;串口RXD、TXD——P30、P31;數(shù)碼管段選信號(hào)、位選信號(hào)——P0、P23、P24、P25、P26;LED綠、黃、紅——P22、P21、P20。2.6串口通信電路設(shè)計(jì)單片機(jī)AT89S52有一個(gè)全雙工的UART接口,即RXD(P3.0)和TXD(P3.1),因此可以用來和上層設(shè)備如PC通信,但是由于PC的串口使用RS232電平通信協(xié)議,而單片機(jī)使用TTL電平通信協(xié)議,這兩種電平的特點(diǎn)見下表:表2.4RS232和TTL電平標(biāo)準(zhǔn)比擬比擬兩表,可以看出RS232電平和TTL電平并不兼容,為使單片機(jī)和PC通信,必須先轉(zhuǎn)換電平,可采用新型集成芯片MAX232實(shí)現(xiàn)數(shù)據(jù)發(fā)送轉(zhuǎn)換和接收轉(zhuǎn)換的雙重功能,依據(jù)芯片手冊(cè)上的推薦電路,經(jīng)合理簡化后設(shè)計(jì)的串口發(fā)送數(shù)據(jù)局部電路為:圖2.13通信串口電路其中J1與單片機(jī)串口相連,J2經(jīng)針腳到插孔的RS232數(shù)據(jù)線與電腦相連,即可實(shí)現(xiàn)電腦和單片機(jī)的全雙工通信。2.7穩(wěn)定電源電路設(shè)計(jì)按照設(shè)計(jì)要求,系統(tǒng)供電要求多樣化,除了交流220V的市電是必用的外,還應(yīng)該具備其他供電要求,如太陽能電池,各種平安直流電壓源等,而且還應(yīng)該有一定的蓄電能力??紤]到市電電壓太高且為正弦變化,而太陽能電池輸出電壓不穩(wěn)定等問題,必須要對(duì)市電進(jìn)行降壓,對(duì)變動(dòng)的電壓進(jìn)行穩(wěn)壓,而單片機(jī)系統(tǒng)的電壓要求在5V左右,因此,可考慮用集成穩(wěn)壓模塊LM7805進(jìn)行終端穩(wěn)壓。LM7805是三端正5V電源穩(wěn)壓器件,輸入電壓為直流5~24V,輸出電壓為4.8~5.2V,最大允許電流為1.5A,有電流限制、熱過載保護(hù)和短路保護(hù)功能,確保輸出電壓正常穩(wěn)定。具體電路設(shè)計(jì)如下:圖2.14穩(wěn)壓電源電路該電路有四個(gè)電源插座,其中J1為市電AC220V供電輸入,J2為太陽能電池或其他輸出直流為5~24V的電壓源的輸入,J3為充電輸出接口,可為充電電池〔1.2V×4只〕恒流充電,J4為系統(tǒng)供電+5V電壓輸出端口,由此接到系統(tǒng)的電源端。當(dāng)用市電供電時(shí),先經(jīng)過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)供電,另一局部為電池充電,通過調(diào)節(jié)電位器CR1可調(diào)整充電電流,給不同的電池充電。LED1為電源指示燈。當(dāng)用太陽能電池等輸出為直流電的電源設(shè)備時(shí),直接接入J2端口,亦可為系統(tǒng)供電。使用這種設(shè)計(jì),可以確保系統(tǒng)有較寬的工作電壓,并且可以存儲(chǔ)少量電能,從而到達(dá)在不同場(chǎng)合供電的目的。2.8系統(tǒng)三大局部的PCB設(shè)計(jì)在Protel99中新建設(shè)計(jì)文檔,根據(jù)以上分析,畫出系統(tǒng)主體局部、串口通信局部和電源局部的原理圖,并選擇適宜的封裝外形,設(shè)計(jì)相應(yīng)的PCB圖。三局部的PCB圖及設(shè)計(jì)時(shí)應(yīng)注意的問題簡要介紹如下:2.8.1系統(tǒng)主體局部PCB設(shè)計(jì)圖2.15系統(tǒng)主體PCB圖設(shè)計(jì)要求:〔1〕傳感器的安裝位置傳感器必須安置在PCB的邊緣位置,不僅應(yīng)確保沒有發(fā)熱吸濕的器件在其附近,而且傳感器的感溫感濕柵窗應(yīng)朝向外部,否那么可能會(huì)影響傳感器對(duì)外部環(huán)境中溫濕度的測(cè)量,如圖2.15左下角的插座J2即為傳感器的安裝位置。〔2〕數(shù)碼管的布線不僅數(shù)碼管的引腳較多,與單片機(jī)的連線也較多,而且制作實(shí)驗(yàn)硬件使用的是單面板,只能在底面布線,因此,在布線的時(shí)候應(yīng)該綜合考慮三方〔單片機(jī)、數(shù)碼管和單面實(shí)驗(yàn)板〕的特點(diǎn),選擇合理的布線方案。為保證多在底面布線,本設(shè)計(jì)對(duì)數(shù)碼管采用變碼布線,即數(shù)碼管a~Dp段并沒有和單片機(jī)P00~P07一一對(duì)應(yīng),而且位選信號(hào)線和局部段選信號(hào)線在頂面布線,詳細(xì)情況如圖2.15所示,其中DG1和DG2為數(shù)碼管。〔3〕電源開關(guān)、插頭插座和按鍵的位置電源開關(guān)、插頭插座和按鍵是經(jīng)常使用的器件,為方便操作,需要安裝在邊緣位置,和其他元件的距離不應(yīng)過小。如圖2.15中的SW1、J1、J3、KEY-R、KEY1~KEY3以及ISP1等?!?〕單片機(jī)的位置單片機(jī)是系統(tǒng)的核心,為了便于安裝和更換,單片機(jī)的周圍不應(yīng)放置過多元件,留有余地。〔5〕布線要求布線不應(yīng)過密,特別是DIP封裝的元件,引腳之間禁止布線,否那么可能導(dǎo)致連線短路或信號(hào)相互干擾。2.8.2圖2.16串口通信局部PCB圖設(shè)計(jì)要求:〔1〕芯片安裝位置芯片U1的凹槽朝向J2,便于和J2連線?!?〕電容封裝選擇由于電容C4引腳間有布線,封裝應(yīng)選用中間可布一線的外形,或把引腳間距較小的間距拉大,確??刹家痪€?!?〕J2的焊盤尺寸J2的兩端的固定焊盤應(yīng)適當(dāng)加大,以增強(qiáng)焊接力。因?yàn)榇诓孱^較大,而且會(huì)有頻繁的插拔,假設(shè)固定焊盤過小,可能出現(xiàn)松動(dòng)。2.8.3圖2.17電源局部PCB圖設(shè)計(jì)要求:〔1〕高壓局部J1為AC220V的插頭,T1為AC220V/12V的變壓器,這兩個(gè)器件在設(shè)計(jì)時(shí)應(yīng)考慮平安問題。J1的引腳間距應(yīng)加大,T1的輸入輸出線應(yīng)適當(dāng)加粗,確保高壓隔離和大電流散熱良好?!?〕穩(wěn)壓器件的位置當(dāng)LM7805工作電壓高于5V時(shí),會(huì)有較大熱量產(chǎn)生,因此在設(shè)計(jì)時(shí)應(yīng)放在PCB邊緣通風(fēng)散熱良好的地方,并且散熱片朝向外部。根據(jù)上述三局部的PCB圖,用萬用板和相應(yīng)元器件焊接制作實(shí)驗(yàn)硬件,依據(jù)設(shè)計(jì)用細(xì)裸導(dǎo)線布線,完成三局部硬件的制作。第三章程序的設(shè)計(jì)本章依據(jù)已經(jīng)設(shè)計(jì)好的的硬件,選用適宜的語言給每一個(gè)模塊設(shè)計(jì)驅(qū)動(dòng)程序,最后綜合編譯,生成下載文件。程序文檔由傳感器通信、數(shù)碼管動(dòng)態(tài)掃描、LED和蜂鳴器報(bào)警、按鍵輸入檢測(cè)和串口發(fā)送數(shù)據(jù)五個(gè)局部組成。3.1程序功能描述、單片機(jī)內(nèi)部資源分配和程序流程圖程序功能描述程序設(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)的要求功能。單片機(jī)內(nèi)部資源分配——兩個(gè)定時(shí)器的分工數(shù)碼管的顯示在本系統(tǒng)中為關(guān)鍵局部,它的顯示有連續(xù)性〔掃描兩位之間時(shí)間差不能過大,否那么會(huì)斷續(xù)顯示〕和暫留性〔每一位顯示的停留時(shí)間不能過短,否那么亮度不高〕,因此采用默認(rèn)中斷優(yōu)先級(jí)較高的定時(shí)器0進(jìn)行中斷動(dòng)態(tài)掃描,掃描時(shí)間定為1毫秒。報(bào)警LED和蜂鳴器的狀態(tài)變化也應(yīng)該有實(shí)時(shí)性,否那么會(huì)出現(xiàn)報(bào)警滯后的問題,因此用定時(shí)器1進(jìn)行中斷報(bào)警掃描,蜂鳴器的響聲用最簡單的“滴滴”聲響,采用頻率為5Hz的方波,而LED的閃爍也同步進(jìn)行,掃描時(shí)間定為100微妙。此外,在串口發(fā)送數(shù)據(jù)期間,由于單片機(jī)本身要求,定時(shí)器1用作波特率產(chǎn)生器。其他控制局部在主函數(shù)中進(jìn)行或附加在定時(shí)器的中斷效勞中,但中斷效勞不能處理太多操作,否那么程序執(zhí)行效率很低。程序的流程圖根據(jù)單片機(jī)的特點(diǎn)和系統(tǒng)各局部的運(yùn)行時(shí)序,經(jīng)過屢次試驗(yàn),最后確定系統(tǒng)高效穩(wěn)定工作的執(zhí)行順序?yàn)椋洪_始→初始化并啟動(dòng)兩個(gè)定時(shí)器→掃描按鍵→判斷按鍵值→執(zhí)行相應(yīng)功能→完畢返回至按鍵掃描,其中定時(shí)器0中斷效勞→掃描數(shù)碼管→每隔1秒獲取傳感器數(shù)據(jù),定時(shí)器1中斷效勞→報(bào)警判斷〔低溫,高溫,低濕,高濕〕,重復(fù)進(jìn)行此過程,即可實(shí)現(xiàn)系統(tǒng)循環(huán)工作。詳細(xì)流程圖如下列圖所示:圖3-1系統(tǒng)程序流程圖3.2編程語言和工具的選擇以及程序文件的分配編程語言的選擇從程序的流程圖可以看出,系統(tǒng)的程序較為復(fù)雜,如果選用執(zhí)行效率相對(duì)較高的匯編來書寫,代碼會(huì)很長,閱讀不便,并且調(diào)試也很困難。為了提高程序的可讀性和調(diào)試的便利性,選用C語言來編寫。C語言功能豐富,表達(dá)能力強(qiáng),使用靈活方便,應(yīng)用面廣,目標(biāo)程序效率高,可執(zhí)行性好,而且C語言既有高級(jí)語言的特點(diǎn),也有匯編語言的特點(diǎn),能直接對(duì)單片機(jī)硬件進(jìn)行操作,因此使用起來十分方便。當(dāng)然,C語言和MCS-51單片機(jī)結(jié)合之后產(chǎn)生的C51語言,與標(biāo)準(zhǔn)的C語言還有一定的差異,編程的時(shí)候應(yīng)該注意這些問題。除此之外,C51的強(qiáng)大功能及其高效率的重要表達(dá)之一在于其豐富的可直接調(diào)用的庫函數(shù),這使得程序代碼簡單,結(jié)構(gòu)清晰,易于調(diào)試和維護(hù)。特別是本征庫的9個(gè)函數(shù),雖然少,但都非常有用,其頭文件為intrins.h,主要功能為按位循環(huán)左移或右移,位測(cè)試等。編程工具的選擇由于單片機(jī)種類繁多,各大公司都紛紛開發(fā)了自己的編程軟件,而KEILC51軟件是眾多單片機(jī)應(yīng)用開發(fā)的優(yōu)秀軟件之一,它集編輯、編譯、仿真于一體,支持匯編、PLM語言和C語言的程序設(shè)計(jì),界面友好,易學(xué)易用。此外,Keil還支持自動(dòng)添加多款單片機(jī)的編譯預(yù)處理文件,包含各類單片機(jī)的頭文件,如51單片機(jī)的頭文件reg51.h。程序文件的分配經(jīng)過上述分析,程序可用五個(gè)C文件來存放五個(gè)功能獨(dú)立的程序模塊,另外有一個(gè)公共調(diào)用的延時(shí)函數(shù)文件和主函數(shù)文件,此外,各局部還有相應(yīng)的調(diào)用頭文件來進(jìn)行連接,從而實(shí)現(xiàn)了程序和硬件對(duì)應(yīng),設(shè)計(jì)模塊化,調(diào)試更為方便。具體文件分配如表:表3.1系統(tǒng)程序文件分配3.3傳感器通信程序設(shè)計(jì)由于DHT11為單總線通信器件,為了確保單片機(jī)成功與其通信,編寫的程序必須嚴(yán)格遵守它獨(dú)特的通信協(xié)議。DHT11的通信由兩局部組成——握手確認(rèn)和數(shù)據(jù)傳送。握手確認(rèn)先來看說明書中的時(shí)序圖:圖3-2傳感器與單片機(jī)握手確認(rèn)時(shí)序從圖中可以看出,傳感器和主機(jī)相互確認(rèn)的過程為:未通信時(shí),通信線保持高電平;通信開始后,主機(jī)先拉低電平至少18毫秒,用以確保傳感器可以檢測(cè)到主機(jī)信號(hào),之后主機(jī)再拉高電平20~40微妙等待傳感器響應(yīng);傳感器響應(yīng)后,先拉低電平40~50微妙,予以通知主機(jī),再拉高電平同樣的時(shí)間之后就轉(zhuǎn)入數(shù)據(jù)傳輸時(shí)序,握手通信也就結(jié)束。局部程序如下〔DHT為通信端口〕://主機(jī)與DHT11通信開始DHT=0;//主機(jī)先拉低總線電平//調(diào)用延時(shí)函數(shù),延時(shí)18毫秒DHT=1;//再拉高總線電平//調(diào)用延時(shí)函數(shù),延時(shí)40微妙DHT=1;//拉高電平,設(shè)置總線為輸入狀態(tài)if(!DHT)//如果DHT11輸出低電平響應(yīng),就開始接收數(shù)據(jù){while(!DHT);//先等待DHT響應(yīng)的低電平結(jié)束40~50微秒while(DHT);//再等待DHT響應(yīng)的高電平結(jié)束40~50微妙//下面開始接收數(shù)據(jù)}數(shù)據(jù)傳送還是先來看說明書中的時(shí)序圖。圖3-3傳感器發(fā)送數(shù)據(jù)0時(shí)序圖3-4傳感器發(fā)送數(shù)據(jù)1時(shí)序從圖中可以看出,在數(shù)據(jù)傳輸時(shí),單片機(jī)只要按照時(shí)序檢測(cè)傳感器輸出的電平信號(hào)即可得到一位數(shù)據(jù),具體要求為:無論數(shù)據(jù)是0還是1,都以12~14微妙的低電平開始,之后,假設(shè)數(shù)據(jù)是0,那么傳感器拉高電平并保持26~28微妙;假設(shè)數(shù)據(jù)是1,那么傳感器拉高電平并保持116~118微妙,如此連續(xù)進(jìn)行,送出40位的數(shù)據(jù)。由于電平變化時(shí)間是以微妙計(jì)算,非常小,因此寫程序時(shí)必須要嚴(yán)格精確的控制時(shí)間,這在設(shè)計(jì)時(shí)有兩個(gè)探索過程?!?〕初期設(shè)想——定時(shí)器精確計(jì)時(shí)法晶振為12MHz時(shí),定時(shí)器最小定時(shí)為1微妙,先聲明一個(gè)大小為40的無符號(hào)字符型數(shù)組,用來存儲(chǔ)定時(shí)器獲得的40個(gè)微妙數(shù),單片機(jī)計(jì)時(shí)過程如下:圖3-5定時(shí)器計(jì)時(shí)接收數(shù)據(jù)流程那么這樣就得到了40個(gè)微秒時(shí)間數(shù),再對(duì)這40個(gè)時(shí)間數(shù)進(jìn)行判斷,得到數(shù)據(jù)0或1,從而得到溫濕度數(shù)據(jù)。經(jīng)過分析和試驗(yàn)發(fā)現(xiàn),這樣處理,單片機(jī)的數(shù)據(jù)量會(huì)比擬大,而且定時(shí)器的啟動(dòng)和關(guān)閉、數(shù)組的操作會(huì)額外花費(fèi)很多時(shí)間,這就導(dǎo)致雖然定時(shí)器計(jì)得很精確,但是總的來說,并不是很精確,而且傳感器的輸出也會(huì)有一定的誤差,因此這種處理數(shù)據(jù)的方式不可取,必須尋求新的解決方案?!?〕合理方案——超時(shí)修改判斷法經(jīng)過后期的不斷實(shí)驗(yàn)分析,采用以下方案較為合理:圖3-6超時(shí)修改數(shù)據(jù)流程這種方案正是利用了數(shù)據(jù)0和1高電平的時(shí)間不同來判斷數(shù)據(jù),先認(rèn)為是數(shù)據(jù)0的時(shí)間〔26~28微妙〕,延時(shí)30微秒越過這個(gè)時(shí)間已經(jīng)足夠了,再檢測(cè)數(shù)據(jù)線是否仍然為高電平,如果是高電平就修改數(shù)據(jù)為1,并且等待數(shù)據(jù)1剩下的高電平結(jié)束,分字節(jié)接收,因此程序簡要如下:while(!DHT);//先出現(xiàn)低電平約12-14微秒,等待結(jié)束//延時(shí)30微秒,越過數(shù)據(jù)0的高電平時(shí)間26~28微秒Temp_Data=0x00;//先判定數(shù)據(jù)為0if(DHT)Temp_Data=0x01;//如果數(shù)據(jù)0高電平超時(shí),那么修改為數(shù)據(jù)1while(DHT);//等待數(shù)據(jù)1剩下的高電平時(shí)間結(jié)束,大約118-30=88微秒//以下為接收數(shù)據(jù)處理程序相關(guān)問題解決方案〔1〕精確延時(shí)函數(shù)毫秒延時(shí)://一次for循環(huán)大約8個(gè)機(jī)器周期,加上while判斷和函數(shù)調(diào)用、返回,大約共120×8+40=1000us=1msvoidDelay_ms(unsignedintms){unsignedcharTemp;while(ms--)for(Temp=0;Temp<120;Temp++);}10微秒延時(shí)://nop一次1個(gè)機(jī)器周期,加上函數(shù)調(diào)用和返回各2個(gè)周期,共6+2×2=10usvoidDelay_10us(){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}〔2〕采樣傳感器數(shù)據(jù)的時(shí)序安排前期設(shè)計(jì)時(shí),定義了兩個(gè)溫濕度全局變量,中斷使用這兩個(gè)變量來顯示數(shù)據(jù);而主函數(shù)那么采樣傳感器,修改這兩個(gè)全局變量,這種看似沒有問題的設(shè)計(jì),在實(shí)驗(yàn)時(shí)卻始終得到的是亂碼數(shù)據(jù)。結(jié)合相關(guān)資料和分析實(shí)驗(yàn)結(jié)果后發(fā)現(xiàn),這種設(shè)計(jì)的問題就在于中斷和主函數(shù)可能同時(shí)訪問了這兩個(gè)變量,并且主函數(shù)在修改全局變量時(shí)可能被中斷打斷,導(dǎo)致溫度或濕度數(shù)據(jù)只修改了幾位,就被迫送入數(shù)碼管顯示,顯示的當(dāng)然也就是亂碼了。數(shù)據(jù)的修改和顯示應(yīng)遵從程序執(zhí)行的時(shí)序,即先修改數(shù)據(jù)再顯示或先顯示再修改數(shù)據(jù)??紤]到傳感器通信并不復(fù)雜,且最壞情況也為25毫秒左右,因此可在中斷掃描數(shù)碼管之前或之后,定時(shí)1s來讀取傳感器,這樣安排程序位置后,經(jīng)調(diào)試,系統(tǒng)顯示數(shù)據(jù)正常。3.4數(shù)碼管掃描程序設(shè)計(jì)根據(jù)硬件電路的設(shè)計(jì),數(shù)碼管采用動(dòng)態(tài)掃描方式驅(qū)動(dòng),而動(dòng)態(tài)掃描方式較多,在這里選用switch-case結(jié)構(gòu)完成。在設(shè)計(jì)硬件時(shí),為了方便在單面板上布線,共陽極數(shù)碼管采用了變碼編碼方式,即數(shù)碼管的a~Dp段和單片機(jī)的P00~P07并不對(duì)應(yīng),實(shí)際安排為:表3.2數(shù)碼管段選信號(hào)線安排因此,10個(gè)數(shù)字和報(bào)警設(shè)定顯示符號(hào)的編碼定義為下表方式:表3.3數(shù)碼管顯示符號(hào)編碼注:編碼為十六進(jìn)制,其中“┣”和“┫”代表溫度和濕度,“L”和“H”代表低和高,如數(shù)碼管前兩位顯示“┣L”時(shí),代表正在進(jìn)行低溫報(bào)警值設(shè)定。當(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ù)的局部程序:switch(Seg_Order){case0:Bit4=0;P0=Seg[Temperature/10];break;//顯示溫度高位case1:Bit3=0;P0=Seg[Temperature%10];break;//顯示溫度低位case2:Bit2=0;P0=Seg[Humidity/10];break;//顯示濕度高位case3:Bit1=0;P0=Seg[Humidity%10];break;//顯示濕度低位}顯示完畢后修改Seg_Order的程序?yàn)椋篠eg_Order++;Seg_Order&=0x03;//超過四位后就返回第一位,從而顯示下一位數(shù)碼管。3.5報(bào)警及設(shè)置程序設(shè)計(jì)報(bào)警程序包括兩個(gè)局部,一為報(bào)警驅(qū)動(dòng)信號(hào),另為報(bào)警值調(diào)整。報(bào)警驅(qū)動(dòng)這局部的程序較為簡單,主要是作溫濕度超限的簡單判斷并為蜂鳴器和LED引腳送出電平信號(hào)即可如,蜂鳴器閃爍報(bào)警時(shí)信號(hào)為Buzzer=~Buzzer;紅色LED熄滅為LED_R=1。報(bào)警值調(diào)整程序設(shè)計(jì)思路為,進(jìn)入某個(gè)限值設(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)整值減一,流程如圖。圖3-7報(bào)警值調(diào)整流程如此進(jìn)行四次,設(shè)定四個(gè)報(bào)警點(diǎn),最后再把四個(gè)子函數(shù)放入一個(gè)主調(diào)函數(shù)中,即可實(shí)現(xiàn)一次完整的報(bào)警調(diào)整操作。3.6按鍵掃描程序設(shè)計(jì)由于系統(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為多功能鍵,有長按和短按之分,具體安排如下:表3.4按鍵與鍵值分配注:多功能鍵KEY1可靠短按總時(shí)間定為500毫秒,只要超過此值即認(rèn)為0是長按,依舊采用超時(shí)檢測(cè)法程序簡要如下。if(Key1==0)//先掃描1號(hào)按鍵{Delay_ms(500);//延時(shí)500毫秒越過短按時(shí)長if(Key1){While(!Key1);//等待按鍵釋放Delay_ms(100);//長按釋放去抖returnKey_M;//返回鍵值}else{returnKey_R}}else{//剩下程序?yàn)閽呙?,3號(hào)鍵}3.7串口發(fā)送數(shù)據(jù)程序設(shè)計(jì)由于串口發(fā)送數(shù)據(jù)時(shí),需要用定時(shí)器1發(fā)生波特率,而且用較高的波特率發(fā)送數(shù)據(jù)時(shí),定時(shí)器0也不能正常工作,因此在發(fā)送數(shù)據(jù)時(shí),兩個(gè)定時(shí)器的中斷效勞函數(shù)都被禁止訪問,因此需要關(guān)閉數(shù)碼管,關(guān)閉喇叭,而且還要重新初始化定時(shí)器為產(chǎn)生波特率,返回時(shí)再初始化為之前狀態(tài),恢復(fù)顯示與報(bào)警。因此,串口數(shù)據(jù)發(fā)送有三個(gè)問題:波特率設(shè)置,發(fā)送格式,發(fā)送方式。波特率設(shè)置為保證單片機(jī)和PC之間通信的實(shí)時(shí)性,再考慮定時(shí)器1的本身可以設(shè)置的大小,采用BR=2400bps的波特率比擬適宜。定時(shí)器采用自動(dòng)重裝方式2,初值計(jì)算為:由此對(duì)單片機(jī)的串口相關(guān)內(nèi)部資源設(shè)定如下:TMOD=0x20;//定時(shí)器1工作于方式2,八位自動(dòng)重裝計(jì)數(shù)SCON=0x50;//設(shè)置串口工作于方式1,10位為一幀的異步串行通信方式PCON=0x00;//波特率不加倍TH1=0xf3;//為定時(shí)器1寫入計(jì)數(shù)初值TL1=0xf3;TR1=1;//啟動(dòng)定時(shí)器,開始產(chǎn)生波特率數(shù)據(jù)發(fā)送格式在發(fā)送數(shù)據(jù)之前,先發(fā)送數(shù)據(jù)格式為“NUMT(℃)H(%RH)”,即數(shù)據(jù)編號(hào)、溫度數(shù)據(jù)、濕度數(shù)據(jù);再開始只發(fā)送數(shù)據(jù),格式如“0053052”。為使發(fā)送的數(shù)據(jù)可以在PC端的接收軟件“串口調(diào)試助手”上清楚明了地顯示,需要對(duì)發(fā)送的數(shù)據(jù)進(jìn)行轉(zhuǎn)碼,由十六進(jìn)制碼轉(zhuǎn)換為ASCII碼,比方,為使大小為25的溫度正常顯示,需要進(jìn)行如下轉(zhuǎn)換:String2[12]=Temperature/10+0x30;//轉(zhuǎn)化為32H的ASCII碼,對(duì)應(yīng)顯示為“2”String2[13]=Temperature%10+0x30;發(fā)送方式由于傳感器采樣時(shí)間規(guī)定為至少1s,發(fā)送數(shù)據(jù)的間隔應(yīng)大于1s,為使數(shù)據(jù)可靠轉(zhuǎn)換完成和成功發(fā)送,定為每2秒鐘發(fā)送一次,即用定時(shí)方式發(fā)送。此外,為表征數(shù)據(jù)成功發(fā)送,在每次數(shù)據(jù)發(fā)送完成之后,單片機(jī)為黃色LED送出一個(gè)脈沖信號(hào),閃燈一次。串口發(fā)送數(shù)據(jù)局部程序?yàn)椋?/按照說明書,只要向串口緩沖器SBUF送入數(shù)據(jù),就啟動(dòng)一次數(shù)據(jù)發(fā)送SBUF=Temp_Data;//等待發(fā)送完成,即標(biāo)志位TI為1while(!TI);//清零標(biāo)志位,為下一幀發(fā)送做準(zhǔn)備TI=0;除了這些操作之外,在每次發(fā)送數(shù)據(jù)之前先掃描按鍵,確定是否停止發(fā)送。最后,需要說明的是,主函數(shù)的工作很簡單——掃描按鍵,選擇進(jìn)入報(bào)警設(shè)定狀態(tài)或數(shù)據(jù)發(fā)送狀態(tài)。3.8Keil綜合編譯和結(jié)果分析、程序下載綜合編譯情況和結(jié)果分析在KEIL中新建工程,如下列圖所示,寫入各局部的代碼后,綜合編譯。修改錯(cuò)誤和消除警告后,得到如下內(nèi)容:圖3-8KEILC51工程建立與編譯編譯具體結(jié)果為:Buildtarget'Target1'assemblingSTARTUP.A51...compilingMpilingDpilingRead_DHT.pilingKey_SpilingSet_ApilingDigitron_SpilingSend_Function.c...linking...***WARNINGL15:MULTIPLECALLTOSEGMENTSEGMENT:?PR?READ_COM?READ_DHTCALLER1:?C_C51STARTUPCALLER2:?PR?TIMER1_SERVE?DIGITRON_SHOWProgramSize:data=68.0xdata=0code=1499creatinghexfilefrom"TAHDS"..."TAHDS"-0Error(s),1Warning(s).編譯結(jié)果分析綜合編譯后,成功創(chuàng)立了下載文件,但有一個(gè)警告,合理的分析和解釋如下:從編譯結(jié)果來看,警告的問題是屢次調(diào)用了函數(shù)Read_DHT,而函數(shù)Read_DHT又調(diào)用了函數(shù)Read_Com。第一次調(diào)用〔CALLER1〕是在主函數(shù)中,第二次調(diào)用〔CALLER2〕是在文件DIGITRON_SHOWT的中斷效勞函數(shù)TIMER1_SERVE中。檢查工程函數(shù)調(diào)用情況發(fā)現(xiàn),串口發(fā)送數(shù)據(jù)模塊和數(shù)碼管顯示模塊,都調(diào)用了傳感器數(shù)據(jù)讀取模塊中的函數(shù)Read_DHT。在串口發(fā)送數(shù)據(jù)模塊中的調(diào)用是從主函數(shù)中轉(zhuǎn)入的,而在數(shù)碼管顯示模塊中的調(diào)用那么是發(fā)生在中斷效勞函數(shù)內(nèi)。根據(jù)編譯器的要求,如果一個(gè)函數(shù)同時(shí)出現(xiàn)在主函數(shù)和中斷效勞函數(shù)中,那么程序運(yùn)行可能會(huì)發(fā)生一些不可預(yù)料的結(jié)果。如同本章局部溫濕度全局變量的問題,所以這種情況一般是不允許的,但不影響編譯完成,會(huì)予以以上內(nèi)容的警告。又因?yàn)楹瘮?shù)Read_DHT雖然被中斷效勞函數(shù)和主函數(shù)調(diào)用,但被調(diào)用的時(shí)序不同,即在程序執(zhí)行過程中,不會(huì)出現(xiàn)中斷效勞函數(shù)和主函數(shù)同時(shí)調(diào)用它的情況。從程序執(zhí)行的時(shí)序上來看,在中斷效勞函數(shù)調(diào)Read_DHT讀取數(shù)據(jù)予以數(shù)碼管顯示期間,主函數(shù)沒有調(diào)用它,相反,在主函數(shù)調(diào)用Read_DHT讀取數(shù)據(jù)予以串口發(fā)送期間,定時(shí)器被初始化為產(chǎn)生波特率,而且不允許任何中斷,那么中斷效勞函數(shù)也就沒法調(diào)用它了,所以兩個(gè)地方的調(diào)用并不矛盾,不會(huì)出現(xiàn)未知的結(jié)果。因此,這個(gè)警告可以不用消除。生成HEX文件下載至單片機(jī)中再次編譯工程,創(chuàng)立HEX下載文件,即TAHDS.hex。由于單片機(jī)AT89S52有ISP功能,可以用接頭為DIP10的排線連接系統(tǒng)主體PCB上的ISP1插座與編程器的ISP插座,把HEX文件下載至單片機(jī)U1;或直接把單片機(jī)在編程器中燒寫程序后,取下安裝在系統(tǒng)的DIP40底座上。第四章系統(tǒng)后期探索優(yōu)化設(shè)計(jì)簡介本系統(tǒng)由于前期已經(jīng)根本完成設(shè)計(jì),在后期又探索了一系列的優(yōu)化設(shè)計(jì)方案,以提升系統(tǒng)性能。這些設(shè)計(jì)有些已經(jīng)試驗(yàn)成功,并且也完成了硬件的制作和軟件的設(shè)計(jì);有些只是從理論上完成了設(shè)計(jì),給出了可能的電路圖或可行的解決方案,現(xiàn)簡要介紹如下。4.1換用紅外控制和LCM顯示的探索4.1.1紅外控制考慮到工業(yè)測(cè)控場(chǎng)合一般比擬危險(xiǎn),系統(tǒng)的報(bào)警設(shè)定和數(shù)據(jù)傳輸應(yīng)該用遠(yuǎn)距離無線控制比擬平安,再從系統(tǒng)本錢方面考慮,無線電通信代價(jià)比擬高,而紅外線那么正適合一些距離要求不是很高的場(chǎng)合。紅外遙控技術(shù)是一種利用紅外線進(jìn)行點(diǎn)對(duì)點(diǎn)通信的技術(shù),其相應(yīng)的軟件和硬件技術(shù)都已經(jīng)比擬成熟。它有通信設(shè)備體積小、功率低、本錢低廉,信號(hào)無干擾、傳輸準(zhǔn)確度高的優(yōu)點(diǎn)。當(dāng)然,它的通信缺點(diǎn)是只能點(diǎn)到點(diǎn)視距傳輸,距離有限,但這對(duì)一些要求不是很高的場(chǎng)合,遠(yuǎn)距離控制已經(jīng)足夠了。本設(shè)計(jì)使用型號(hào)為HS0038或SM0038的紅外發(fā)射和接收裝置,對(duì)系統(tǒng)進(jìn)行遠(yuǎn)距離控制的探索設(shè)計(jì)。HS0038或SM0038紅外系統(tǒng)的編碼和解碼操作都十分簡單,并且接收頭有信號(hào)整形濾波功能,輸出脈沖信號(hào)與TTL電平匹配,因此只須發(fā)射和接收特定個(gè)數(shù)的脈沖即可實(shí)現(xiàn)編碼和譯碼,但最少為2個(gè)脈沖,數(shù)據(jù)發(fā)送或接收幀編碼格式如下圖。圖4-1紅外發(fā)射和接收編碼格式紅外發(fā)送編碼方式:為使接收可靠,規(guī)定第一個(gè)碼寬為3ms,碼間間隔和其余的碼寬均為1ms,兩次發(fā)射間隔不小于10ms。此外,發(fā)射脈沖需要38KHz的載波進(jìn)行高頻調(diào)制。紅外接收譯碼方式:第一位碼的下降沿開始接收,如果第一位碼寬小于2ms,那么認(rèn)為是錯(cuò)誤的碼幀,停止接收;如果碼間高電平大于3ms,那么接收停止,一次數(shù)據(jù)的發(fā)送和接收完成,然后根據(jù)不同的脈沖個(gè)數(shù)來執(zhí)行后續(xù)的操作。由上分析可知,單片機(jī)可以實(shí)現(xiàn)紅外的編碼發(fā)送和接收譯碼,根據(jù)紅外發(fā)射管〔相當(dāng)于一只LED〕的參數(shù),用小型的單片機(jī)AT89S2051〔可在系統(tǒng)編程〕即可實(shí)現(xiàn)按鍵掃描和紅外發(fā)射的功能。電路原理圖和PCB圖如下圖:圖4-2紅外遙控器的電路電路分析:單片機(jī)AT89S2051作為控制器,引腳P33~P35接三個(gè)控制輸入按鍵Key1~Key3,高頻脈沖信號(hào)經(jīng)單片機(jī)P37引腳輸出,經(jīng)NPN型三極管9013或8050放大電流后,驅(qū)動(dòng)紅外發(fā)射管輸出高頻脈沖。調(diào)節(jié)滑動(dòng)變阻器CR1可實(shí)現(xiàn)發(fā)射距離的控制。單片機(jī)采用上電自動(dòng)復(fù)位方式。程序設(shè)計(jì)思路為:利用定時(shí)器裝載高頻載波信號(hào)初值,采用自動(dòng)重裝方式2,高八位存放定時(shí)初值0xf3,對(duì)信號(hào)輸出端口執(zhí)行取反操作,從而產(chǎn)生38KHz的高頻載波。圖4-3紅外遙控器PCB圖設(shè)計(jì)要求:紅外發(fā)射管的安裝位置紅外發(fā)射管應(yīng)該安裝在PCB的邊緣,便于發(fā)射紅外線而不受其他器件的阻擋。此外,紅外接收頭的電路比擬簡單,如下圖。為保證系統(tǒng)運(yùn)行的穩(wěn)定性和實(shí)時(shí)性,且紅外接收的第一位碼為低電平,可采用外部中斷方式觸發(fā),紅外接收程序的設(shè)計(jì)依舊可以采用前述的超時(shí)修改判斷法。圖4-4紅外遙控接收電路4.1.2LCM顯示考慮到數(shù)碼管顯示的字符比擬簡單,不能顯示出具體的檢測(cè)變量單位,因此可用LCM來作為顯示器件,清晰的表達(dá)出系統(tǒng)的檢測(cè)數(shù)據(jù)。LCM是液晶顯示模塊的英文簡寫,它具有顯示字符多,電路連接簡單等諸多優(yōu)點(diǎn)。按照顯示的字符種類可以分為英文字符液晶和中文字符液晶,其中英文字符液晶除了可以顯示ASCII碼表20H以后的字符外,還可以顯示一些特殊的符號(hào)。常用的英文字符集液晶1602與單片機(jī)的連接電路如下圖:圖4-51602LCM與單片機(jī)的連接電路電阻R4可以根據(jù)顯示亮度的需要,選用0~10K間的固定電阻或直接用一個(gè)滑動(dòng)變阻器代替;D0~D7為數(shù)據(jù)線,而最高位D7為液晶狀態(tài)位,RS、R/W和E為控制信號(hào)線。液晶顯示數(shù)據(jù)時(shí)需要執(zhí)行讀取器件狀態(tài)〔RS=0,RW=1,EN=1,D7為狀態(tài)〕、寫命令字〔RS=0,RW=0,EN=高脈沖,D0~D7為命令字〕和寫數(shù)據(jù)〔RS=1,RW=0,EN=高脈沖,D0~D7為字符編碼〕三種根本操作,這些操作可以實(shí)現(xiàn)在液晶的某個(gè)位置顯示某個(gè)字符的功能,這些操作都須遵從嚴(yán)格的時(shí)序。以下作簡要的編程分析?!?〕讀操作時(shí)序圖4-61602液晶的讀操作時(shí)序以讀器件狀態(tài)為例,從時(shí)序圖中可以看出,在讀狀態(tài)開始時(shí),首先要拉低RS電平,拉高RW電平,進(jìn)入讀命令狀態(tài),稍作延時(shí),再拉高EN電平,使能器件,再次稍作延時(shí),開始讀取D0~D7的數(shù)據(jù),并取出D7的位值,假設(shè)為1,那么器件禁止操作,反之為允許操作,從而讀取到器件的當(dāng)前狀態(tài),讀取完畢之后還應(yīng)該恢復(fù)器件狀態(tài),即拉低EN電平。相關(guān)程序如下:BitTemp_Status;//聲明一個(gè)狀態(tài)變量RS=0;//拉低電平,命令RW=1;//拉高電平,讀取EN=1;//拉高電平,使能器件_nop_();//少做延時(shí)Temp_Status=〔bit〕(P0&Ox80);//讀取最高狀態(tài)_nop_();EN=0;//恢復(fù)器件returnTemp_Status;//返回狀態(tài)值〔2〕寫操作時(shí)序圖4-71602液晶的寫操作時(shí)序以讀器件狀態(tài)為例,從時(shí)序圖中可以看出,在讀狀態(tài)開始時(shí),首先要拉低RS電平,拉高RW電平,進(jìn)入讀命令狀態(tài),稍作延時(shí),再拉高EN電平,使能器件,再次稍作延時(shí),開始讀取D0~D7的數(shù)據(jù),并取出D7的位值,假設(shè)為1,那么器件禁止操作,反之為允許操作,從而讀取到器件的當(dāng)前狀態(tài),讀取完畢之后還應(yīng)該恢復(fù)器件狀態(tài),即拉低EN電平。相關(guān)程序如下:bitTemp_Status;//聲明一個(gè)狀態(tài)變量RS=0;//拉低電平,命令RW=1;//拉高電平,讀取EN=1;//拉高電平,使能器件_nop_();//少做延時(shí)Temp_Status=(bit)(P0&0x80);//讀取最高位狀態(tài)_nop_();EN=0;//恢復(fù)器件returnTemp_Status;//返回狀態(tài)值〔2〕寫操作時(shí)序圖4-81602液晶的寫操作時(shí)序?qū)懨钭植僮骱蛯憯?shù)據(jù)操作的區(qū)別在于RS的電平不一樣,按照通信要求,寫命令字時(shí),首先應(yīng)讀取LCM的狀態(tài),等待器件允許操作后;再拉低RS、RW和EN的電平,并向數(shù)據(jù)線上送入命令字碼;然后稍作延時(shí),拉高EN電平,產(chǎn)生高脈沖;最后再次延時(shí)較長時(shí)間,待命令字寫入后,恢復(fù)器件。其中寫命令字的程序如下:while(LCM_Status());//等待器件允許操作RS=0;//拉低控制線電平RW=0;EN=0;_nop_();//稍作延時(shí)之后,向數(shù)據(jù)線送入命令字P0=Temp_Data;_nop_();EN=1;//拉高電平產(chǎn)生高脈沖_nop_();//延時(shí)確保命令字寫入_nop_();EN=0;//恢復(fù)器件狀態(tài)〔3〕LCM的命令字和初始化步驟表4.11602LCM命令字LCM的初始化步驟為:首先不檢測(cè)器件狀態(tài),寫入三次命令字0x38,每次寫入之后延時(shí)5ms,之后每次寫入命令字或數(shù)據(jù)必須檢測(cè)器件狀態(tài);再次寫入命令字0x38,設(shè)置LCM的顯示模式;顯示模式設(shè)置完之后就可以對(duì)LCM進(jìn)行字符顯示或屏幕處理的操作。4.2增加實(shí)時(shí)時(shí)鐘和存儲(chǔ)芯片來記錄數(shù)據(jù)的探索考慮到氣象研究可能需要較長時(shí)間內(nèi)的溫濕度數(shù)據(jù),為了使系統(tǒng)可以長時(shí)間的檢測(cè)和記錄環(huán)境中的溫濕度數(shù)據(jù),必須為系統(tǒng)擴(kuò)展存儲(chǔ)器和增加高精度的時(shí)鐘電路??紤]到單片機(jī)I/O資源的有限性,可選用串行通信的相關(guān)器件,存儲(chǔ)器選用芯片CSI93C86,時(shí)鐘芯片選用DS1302。兩款芯片簡要介紹如下:〔1〕CSI93C86是由CSIalyst公司生產(chǎn),可以定義為16位〔OGR=1〕或8〔ORG=0〕位,容量為16Kbit的串行EEPROM存儲(chǔ)器。它通過DI引腳寫入,DO引腳讀出,采用該公司先進(jìn)的CMOSEEPROM浮動(dòng)門工藝加工,器件可以經(jīng)受1,000,000次的寫入/擦除操作,片內(nèi)數(shù)據(jù)保存壽命到達(dá)100年。器件采用低功耗工藝生產(chǎn)、工作電壓寬達(dá)1.8~6.0V、可以以3MHz的時(shí)鐘信號(hào)進(jìn)行數(shù)據(jù)的高速讀寫?!?〕DS1302是由DALLAS〔達(dá)拉斯〕半導(dǎo)體公司生產(chǎn)的實(shí)時(shí)時(shí)鐘芯片,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),從而提供實(shí)時(shí)時(shí)鐘。該芯片采用同步串行通信,與控制器的通信僅需三根數(shù)據(jù)線:復(fù)位線〔RST〕、數(shù)據(jù)線〔I/O〕和串行時(shí)鐘線〔SCLK〕。同樣具有低功耗、寬電壓和高速通信的特點(diǎn)。DS1302必須外接32.768KHz的晶振,備用電源端VCC1接入一個(gè)紐扣電池或大容量的電容來提供掉電供電,確保時(shí)鐘的實(shí)時(shí)性。由此,兩芯片與單片機(jī)的通信電路設(shè)計(jì)如圖。圖4-9存儲(chǔ)器CSI93C86與單片機(jī)的連接電路圖4-10時(shí)鐘芯片DS1302與單片機(jī)的連接電路因此,可以用DS1302來精確記錄時(shí)間和日期,把這兩項(xiàng)數(shù)據(jù)發(fā)送給單片機(jī),單片機(jī)再采樣溫濕度數(shù)據(jù),匯總后存儲(chǔ)在93C86中,從而到達(dá)記錄過去特定時(shí)間的溫濕度數(shù)據(jù)。環(huán)境的溫濕度一般不會(huì)突變,具有連續(xù)性。如果每小時(shí)記錄一次,記錄格式為:時(shí)間月、日、時(shí)各一個(gè)字節(jié),溫濕度各一個(gè)字節(jié),一個(gè)數(shù)據(jù)項(xiàng)共有5個(gè)字節(jié),那么一片93C86可記錄16×1024bit/〔5×8bit〕=410個(gè)數(shù)據(jù)項(xiàng),也就是大約17天的數(shù)據(jù)。如果要研究過去兩周的溫濕度變化情況,只需在適當(dāng)時(shí)候,由單片機(jī)讀出,發(fā)送給電腦即可。4.3增加照度檢測(cè)電路的探索考慮到在工業(yè)、農(nóng)業(yè)和家庭的某些特定環(huán)境中,可能還需要監(jiān)測(cè)環(huán)境中的照度變量,因此可為系統(tǒng)增加照度檢測(cè)電路。照度測(cè)量初期設(shè)想可使用光敏電阻和模數(shù)轉(zhuǎn)換器件來進(jìn)行檢測(cè),但光敏電阻阻值與照度并不呈線性關(guān)系,大致如下列圖所示:圖4-11光敏電阻阻值與光強(qiáng)關(guān)系而且,光敏電阻不僅對(duì)可見光敏感,對(duì)不可見光如紅外線也敏感〔這常用來檢測(cè)紅外發(fā)射管是否完好〕,因此這種方案測(cè)量精度不是很高。后期,指導(dǎo)老師建議用硒光電池來作為可見光敏感元件。硒光電池輸出電壓較小,必須把電壓放大到適當(dāng)值域后,再經(jīng)模數(shù)轉(zhuǎn)換,由單片機(jī)比照標(biāo)準(zhǔn)照度予以數(shù)據(jù)修正,最后把照度顯示出來。簡要過程如下:圖4-12照度檢測(cè)過程但硒光電池價(jià)格比擬昂貴,在一些照度要求不高的的情況下,可以用光敏電阻或其他光敏材料,通過相關(guān)的算法,來實(shí)現(xiàn)照度的大致測(cè)量。相應(yīng)測(cè)量電路設(shè)計(jì)為:圖4-13用光敏電阻檢測(cè)照度電路其中,相應(yīng)照度算法為:例如,天氣晴朗時(shí),測(cè)得DO=0xcc,那么L=8400Lx。現(xiàn)在,可給出系統(tǒng)后期探索設(shè)計(jì)的結(jié)構(gòu)圖、原理總圖和PCB圖。圖4-14后期探索設(shè)計(jì)系統(tǒng)結(jié)構(gòu)圖圖4-15后期探索設(shè)計(jì)原理總圖圖4-16后期探索設(shè)計(jì)PCB圖設(shè)計(jì)要求:〔1〕紅外接收頭的安裝位置紅外接收頭應(yīng)安裝在PCB的邊緣,便于接收遙控器發(fā)射的紅外線,如圖5.11的IR1位置?!?〕光敏電阻的安裝方向光敏電阻的柵格應(yīng)朝向被測(cè)光線的方向,使光線充分照射在感光局部,確保測(cè)量的準(zhǔn)確性。至此,后期拓展設(shè)計(jì)到此就已經(jīng)結(jié)束,如果還有其他需求,亦可選用適宜的器件,來實(shí)現(xiàn)預(yù)期目標(biāo)。結(jié)束語為了設(shè)計(jì)出基于單片機(jī)的環(huán)境溫濕度檢測(cè)系統(tǒng),搜集了大量的芯片手冊(cè),查閱了較多的圖書資料,復(fù)習(xí)了所學(xué)的課本教材,分兩個(gè)階段對(duì)系統(tǒng)進(jìn)行了設(shè)計(jì)——前期的根本設(shè)計(jì)和后期的探索設(shè)計(jì)。前期的設(shè)計(jì),在種類繁多的溫度和濕度傳感器中選定了由廣州奧松公司生產(chǎn)的單總線數(shù)字溫濕度傳感器DHT11,這款傳感器的優(yōu)勢(shì)在于通信協(xié)議相對(duì)來說比擬簡潔,產(chǎn)品價(jià)格低廉,這對(duì)設(shè)計(jì)低本錢,高精度的溫濕度檢測(cè)系統(tǒng)十分有必要。對(duì)于功能方面的要求,在調(diào)查了市場(chǎng)上的同類產(chǎn)品之后,根據(jù)實(shí)際需求來設(shè)計(jì)的。市場(chǎng)上的溫濕度檢測(cè)系統(tǒng)的功能為:檢測(cè)并顯示溫濕度數(shù)據(jù),設(shè)置報(bào)警點(diǎn)并報(bào)警,與上層監(jiān)控設(shè)備通信。因此設(shè)計(jì)正是從這幾個(gè)方面的要求出發(fā),利用單片機(jī)本身的特點(diǎn),來實(shí)現(xiàn)系統(tǒng)的功能。后期的探索設(shè)計(jì),提升了系統(tǒng)的性能。紅外遙控是為實(shí)現(xiàn)遠(yuǎn)距離無線控制,從工業(yè)測(cè)控的平安角度考慮;LCM顯示是為顯示更多字符,從系統(tǒng)的閱讀便利、人性化角度考慮;數(shù)據(jù)存儲(chǔ)器和實(shí)時(shí)時(shí)鐘是為記錄監(jiān)測(cè)數(shù)據(jù),從氣象研究的角度考慮;照度檢測(cè)是為滿足某些特定場(chǎng)合的照明要求,從平安生產(chǎn)方面考慮。因此,探索設(shè)計(jì)從不同場(chǎng)合的實(shí)際要求出發(fā),根據(jù)需要擴(kuò)展系統(tǒng)的功能。由于第一次設(shè)計(jì)基于單片機(jī)的系統(tǒng),雖然完成了根本的設(shè)計(jì)要求,但在設(shè)計(jì)過程中遇到了許多硬件和軟件問題還沒有完全解決;設(shè)計(jì)的過程也是模塊式的,沒有完整系統(tǒng)的總體規(guī)劃;后期的探索設(shè)計(jì)只是從理論上進(jìn)行了可行性分析,沒有做出相應(yīng)的硬件并調(diào)試符合預(yù)期設(shè)想。因此,以后還必須加強(qiáng)單片機(jī)系統(tǒng)設(shè)計(jì)的能力,畢業(yè)設(shè)計(jì)只是一個(gè)淺薄的入門。當(dāng)然,在設(shè)計(jì)過程中,應(yīng)虛心聽取他人的建議和意見,對(duì)解決設(shè)計(jì)過程中的問題都很有幫助。展望未來,最終的系統(tǒng)應(yīng)該為基于單片機(jī)的多功能環(huán)境檢測(cè)系統(tǒng),它不僅可以檢測(cè)環(huán)境的溫度、濕度、照度等所需的環(huán)境變量并顯示在液晶屏幕上,可以根據(jù)設(shè)定的限值進(jìn)行報(bào)警提示,可以以時(shí)間順序存儲(chǔ)大量的檢測(cè)數(shù)據(jù),并根據(jù)需要發(fā)送給上層分析處理設(shè)備,還可以用紅外遙控實(shí)行遠(yuǎn)程無線控制,除此之外,電源系統(tǒng)可以適應(yīng)各種供電場(chǎng)合,并存儲(chǔ)局部電能,斷電后確保系統(tǒng)可繼續(xù)工作一定時(shí)間。參考文獻(xiàn)[1]李瀚蓀.簡明電路分析.北京:高等教育出版社,2002[2]康光華.電子技術(shù)根底-模擬局部.北京:高等教育出版社,1979[3]康光華.電子技術(shù)根底-數(shù)字局部.北京:高等教育出版社,1980[4]馬金龍.信號(hào)與系統(tǒng).北京:科學(xué)出版社,2006[5]唐穎.單片機(jī)原理與應(yīng)用.北京:北京大學(xué)出版社,2008[6]鄭莉,董淵,張瑞豐.C++語言程序設(shè)計(jì).北京:清華大學(xué)出版社,2004[7]唐文彥.傳感器.北京:機(jī)械工業(yè)出版社,2010[8]陳爾紹等.電子控制電路實(shí)例.北京:電子工業(yè)出版社,2004[9]姜威.實(shí)用電子系統(tǒng)設(shè)計(jì)根底.北京:北京理工大學(xué)出版社,2008[10]毛興武等.新型電子器件及其應(yīng)用技術(shù).北京:中國電力出版社,2010[11]孟貴華.電子元器件選用入門.北京:機(jī)械工業(yè)出版社,2004[12]黎小桃等.Protel99入門與提高.北京:電子工業(yè)出版社,2009[13]郭強(qiáng).液晶顯示模塊應(yīng)用與調(diào)試.北京:電子工業(yè)出版社,2010[14]陳濤.單片機(jī)應(yīng)用及C51程序設(shè)計(jì).北京:機(jī)械工業(yè)出版社,2008[15]鐘睿.MCS-51單片機(jī)原理及應(yīng)用開發(fā)技術(shù).北京:中國鐵道出版社,2006附錄附1單片機(jī)驅(qū)動(dòng)程序(1)主函數(shù)相關(guān)文檔程序文件——Main.c#include"read_dht.h"#include"key_scan.h"#include"set_alarm.h"#include"send_function.h"#include"digitron_show.h"http://主函數(shù)-報(bào)警設(shè)定或數(shù)據(jù)發(fā)送voidmain(){unsignedcharKey_Code;//開機(jī)進(jìn)入溫濕度顯示報(bào)警狀態(tài)Timer_Start_0();while(1){//掃描按鍵Key_Code=Key_Scan();switch(Key_Code){caseKey_R:Set_Alarm();break;//如果Key1鍵短按,那么進(jìn)入報(bào)警設(shè)定狀態(tài)caseKey_M:Send_Status();break;//如果Key1鍵長按,那么進(jìn)入數(shù)據(jù)發(fā)送狀態(tài)default:break;}}}(2)延時(shí)相關(guān)文檔頭文件——Delay.h#ifndef__DELAY_H__#define__DELAY_H__externvoidDelay_10us();externvoidDelay_ms(unsignedintms);#endif程序文件——Delay.c#include"intrins.h"http://延時(shí)10微秒函數(shù)voidDelay_10us(){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}//延時(shí)1毫秒函數(shù)voidDelay_ms(unsignedintms){unsignedcharTemp;while(ms--)for(Temp=0;Temp<120;Temp++);}(3)傳感器相關(guān)文檔頭文件——Read_DHT.h#ifndef__HT_DETECTOR_H__#define__HT_DETECTOR_H__externunsignedcharHumidity;externunsignedcharTemperature;externvoidRead_DHT();#endif程序文件——Read_DHT.c#include"reg51.h"#include"delay.h"#include"intrins.h"#include"read_dht.h"http://DHT連接端口sbitDHT=P1^1;//濕度數(shù)據(jù)存儲(chǔ)變量unsignedcharHumidity=0;//溫度數(shù)據(jù)存儲(chǔ)變量unsignedcharTemperature=0;//臨時(shí)接收數(shù)據(jù)數(shù)組unsignedcharDHT_Data[5];//8位串口數(shù)據(jù)接收函數(shù)unsignedcharRead_Com(){unsignedcharCom_Data=0x00,Temp_Data=0x00,Temp;for(Temp=0;Temp<8;Temp++){while(!DHT);//先出現(xiàn)低電平約12-14微秒,等待結(jié)束Delay_10us();//低電平結(jié)束后,先檢測(cè)數(shù)據(jù)“0”時(shí)的高電平時(shí)間為26-28Delay_10us();Delay_10us();Temp_Data=0x00;if(DHT)Temp_Data=0x01;//如果數(shù)據(jù)“0”的高電平超時(shí),那么轉(zhuǎn)為數(shù)據(jù)“1”while(DHT);//等待高電平結(jié)束Com_Data<<=1;//因?yàn)楦呶粩?shù)據(jù)先出,所以每接收一位數(shù)據(jù)必須把已接收數(shù)據(jù)向左移動(dòng)一位Com_Data|=Temp_Data;//處理接收的一位數(shù)據(jù),和已接收的數(shù)據(jù)按位相與,即加到最后一位上}returnCom_Data;//返回八位數(shù)據(jù)}voidRead_DHT(){DHT=0;//主機(jī)與DHT11通信開始,首先拉低總線Delay_ms(18);//延時(shí)至少為18毫秒DHT=1;//拉高總線電平40-50微秒Delay_10us();Delay_10us();Delay_10us();Delay_10us();DHT=1;//拉高電平,設(shè)置總線為輸入狀態(tài)if(!DHT)//如果DHT11響應(yīng),就開始處理數(shù)據(jù){while(!DHT);//先等待DHT響應(yīng)的低電平結(jié)束40-50微秒while(DHT);//再等待DHT響應(yīng)的高電平結(jié)束40-50微秒,然后開始讀取總線上DHT發(fā)送的五字節(jié)數(shù)據(jù)DHT_Data[0]=Read_Com();//接收濕度整數(shù)局部DHT_Data[1]=Read_Com();//接收濕度小數(shù)局部DHT_Data[2]=Read_Com();//接收溫度整數(shù)局部DHT_Data[3]=Read_Com();//接收溫度小數(shù)局部DHT_Data[4]=Read_Com();//接收校驗(yàn)位數(shù)據(jù)DHT=1;//數(shù)據(jù)接收完畢,拉高總線電平,為下一次通信做準(zhǔn)備if(DHT_Data[0]+DHT_Data[1]+DHT_Data[2]+DHT_Data[3]==DHT_Data[4])//開始校驗(yàn)數(shù)據(jù),前四個(gè)字節(jié)數(shù)據(jù)的和等于最后一字節(jié)開始校驗(yàn)數(shù)據(jù),前四個(gè)字節(jié)數(shù)據(jù)的和等于最后一字節(jié){Humidity=DHT_Data[0];//校驗(yàn)成功后,把獲得的濕度數(shù)據(jù)賦值給濕度變量Temperature=DHT_Data[2];//把獲得的溫度數(shù)據(jù)賦值給溫度變量}}(4)按鍵相關(guān)文檔頭文件——Key_Scan.h#ifndef__KEY_SCAN_H__#define__KEY_SCAN_H__#defineKey_M0x10#defineKey_R0x00#defineKey_U0x01#defineKey_D0x02externunsignedcharKey_Scan();#endif程序文件——Key_Scan.c#include"reg51.h

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論