2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  (2017)屆本科生畢業(yè)論文</p><p>  論文工作時間 2016年11月 至 2017年5月</p><p>  基于STC15F2K60S2的霧霾監(jiān)測系統(tǒng)</p><p>  學(xué) 生:**</p><p><b>  指導(dǎo)老師:**</b></p><p&

2、gt;  摘 要:本文使用單片機完成了空氣污染監(jiān)測系統(tǒng)的軟硬件設(shè)計。系統(tǒng)使用STC15F2K60S2作為中央處理控制單元,負(fù)責(zé)系統(tǒng)中驅(qū)動控制傳感器,采集傳感器感知的連續(xù)電量并轉(zhuǎn)換為數(shù)字量,以及軟件通信處理的聯(lián)級調(diào)用。灰塵傳感器GP2Y1010AU0F利用光散射原理測量空氣粉塵濃度。其內(nèi)部發(fā)光二極管按驅(qū)動周期發(fā)光,通過測試光的衰減程度產(chǎn)出對應(yīng)線性關(guān)系的模擬電信號以供外部檢測。下位機得出結(jié)果后通過串口通訊傳輸給上位機顯示當(dāng)前空氣中粉塵濃度

3、或記錄數(shù)據(jù)。該設(shè)計工作結(jié)構(gòu)穩(wěn)固、電路簡單、測試結(jié)果準(zhǔn)確、實用性較高。</p><p>  關(guān)鍵詞:PM2.5;單片機;STC15F2K60S2;空氣質(zhì)量;GP2Y1010AU0F;自動檢測</p><p>  Haze Monitoring System Based on MCU</p><p>  Undergraduate: Zhang Yi</p>

4、<p>  Supervisor: Xiao Min</p><p>  Abstract:In this paper, the software and hardware design of the air pollution monitoring system is completed by using micro control process unit. The system uses ST

5、C15F2K60S2 as the central processing control unit, which is responsible for driving the sensor in the system, collecting the continuous voltage of the sensor and converting it into digital. Dust sensor GP2Y1010AU0F measu

6、rement of airborne dust concentration using light scattering principle. The internal light emitting diode is driven </p><p>  Keyword:PM2.5;MCU;STC15F2K60S2;Air Quality;GP2Y1010AU0F;Automatic Detection</p

7、><p><b>  目錄</b></p><p><b>  1緒論1</b></p><p>  1.1研究背景及其目的意義1</p><p>  1.2國內(nèi)外研究現(xiàn)狀1</p><p>  1.3課題研究的主要內(nèi)容1</p><p>  

8、2 霧霾監(jiān)測總體設(shè)計2</p><p>  2.1 系統(tǒng)設(shè)計的基本要求2</p><p>  2.1.1方案選擇2</p><p>  2.2 霧霾監(jiān)測系統(tǒng)結(jié)構(gòu)功能及簡介2</p><p>  2.2.1 15F2K60S2最小系統(tǒng)3</p><p>  2.2.2 GP2Y1010AU0F灰塵傳感器

9、3</p><p><b>  3 硬件部分3</b></p><p>  3.1 單片機STC15F2K60S2基本介紹及特性3</p><p>  3.1.1 集成AD模塊3</p><p>  3.1.2 GPIO配置模塊5</p><p>  3.1.3 定時器資源5<

10、;/p><p>  3.1.4 串口資源6</p><p>  3.2 GP2Y1010AU0F灰塵傳感器模塊7</p><p>  3.3 CH340G串口轉(zhuǎn)USB模塊8</p><p>  3.4電路原理圖及電路圖9</p><p>  4 下位機軟件10</p><p>  4

11、.1 KEIL UVISION4編輯編譯集成開發(fā)環(huán)境介紹10</p><p>  4.2程序示例11</p><p>  4.2.1 程序流程圖11</p><p>  4.2.2 main()調(diào)用介紹12</p><p>  5 軟硬件聯(lián)合調(diào)試13</p><p><b>  參考文獻(xiàn)15&

12、lt;/b></p><p><b>  致 謝16</b></p><p>  附錄1 實物圖17</p><p>  附錄2 程序清單18</p><p><b>  1緒論</b></p><p>  研究背景及其目的意義</p><p

13、>  世界文明前行至21世紀(jì),科學(xué)理論日新月異,技術(shù)突飛猛進(jìn)的同時也造成了環(huán)境的破壞。特別是霧霾天氣的增多,空氣污染惡化愈演愈烈。霧霾主要由PM2.5、PM10、PM0.1以及重金屬鎳砷鉻鉛等顆粒組成[1]。在相關(guān)的氣象學(xué)科中,顆粒物是以內(nèi)徑長短來區(qū)別的,粒徑小于100um的即是總懸浮物顆粒TSP (Total Suspended Particle);粒徑小于10um的即是吸入顆粒物 PM10 (Particulate Matte

14、r);粒徑小于2.5um的即是PM2.5,即可入肺顆粒物。由上述得知可入肺顆粒雖然不多,但它干擾區(qū)域廣,懸存久,降低可視度從而危害出行安全,且侵蝕暴露在空氣中的物體。大氣中眾多的懸浮物,擾亂太陽與地球表層的輻射,由此對氣候產(chǎn)生未知的影響。無論是國內(nèi)還是國外PM2.5導(dǎo)致平均壽命減少,致癌、引發(fā)呼吸道疾病的危害都越來越大。所以,霧霾的監(jiān)測便愈來愈必要。</p><p><b>  國內(nèi)外研究現(xiàn)狀</

15、b></p><p>  現(xiàn)在國內(nèi)外通常采納的可吸入顆粒監(jiān)測方法大多是以下三種:重量法、β射線吸收法及微量振蕩天平法。</p><p>  重量法,顧名思義就是將截留于濾膜上的可吸入顆粒用質(zhì)量測定裝置稱重。重量法雖然是作為標(biāo)準(zhǔn)的方式但卻必須人工稱重,過程十分耗時與復(fù)雜。所以,這種方法多使用于周期性長期性的環(huán)境污染調(diào)查研究。</p><p>  用β射線穿過有可

16、吸入顆粒的濾紙,射線穿過濾紙與顆粒物會因為散射而衰減,衰減程度與可吸入顆粒之質(zhì)量有線性關(guān)系。由此得出霧霾的濃度,即是所謂的β射線吸收法。</p><p>  基于微量振蕩天平法工作原理如下??諝鈴囊惶刂瓶招牟AЧ艽诸^進(jìn),細(xì)頭出,可吸入顆粒就被截留在內(nèi)部安置濾芯上。細(xì)頭由于電場驅(qū)動會以相應(yīng)頻率振蕩,而該頻率和細(xì)頭質(zhì)量的平方根成反比,由此關(guān)系得出PM2.5濃度[2]。</p><p>  以上

17、方法操作復(fù)雜,不適合家庭個人使用,因此本系統(tǒng)采用利用光散射原理測定顆粒物濃度的方法。該測定方法的原理是:大氣中的顆粒物濃度會影響光的散射,濃度越高,散射衰減越嚴(yán)重,由此可得霧霾濃度。</p><p>  1.3課題研究的主要內(nèi)容</p><p>  利用光散射原理測定灰塵濃度的方法設(shè)計系統(tǒng)實現(xiàn)對空氣中PM2.5濃度的測定。首先使用PM2.5粉塵傳感器將周圍環(huán)境中的PM2.5濃度值從非電量轉(zhuǎn)

18、化為電量,再利用15F2K60S2自帶的AD轉(zhuǎn)換模塊將采集到的模擬量轉(zhuǎn)化為數(shù)字量,微控制器對數(shù)據(jù)進(jìn)行處理分析后將結(jié)果利用串口通信方式傳輸給上位機軟件進(jìn)行顯示,當(dāng)空氣質(zhì)量正常時會進(jìn)行提示。若PM2.5濃度過高,會加快檢測速度,以確認(rèn)周圍空氣質(zhì)量。</p><p>  2 霧霾監(jiān)測總體設(shè)計</p><p>  2.1 系統(tǒng)設(shè)計的基本要求</p><p>  能正確實時

19、顯示出空氣中的灰塵濃度(單位:mg/m^3);</p><p>  當(dāng)空氣情況優(yōu)良時,上位機進(jìn)行簡單報告;</p><p>  環(huán)境空氣中霾濃度較高時,進(jìn)行反應(yīng)迅速的檢測和上位機顯示;</p><p><b>  2.1.1方案選擇</b></p><p>  方案一:以 AT89S52 單片機為基本核心,主要包含粉塵傳

20、感器,A/D 模數(shù)轉(zhuǎn)換ADC0832模塊,單片機作為控制部分,1602液晶顯示屏作為顯示部分。設(shè)計系統(tǒng)通過傳感器電路檢測PM2.5粉塵信息,由AD模數(shù)轉(zhuǎn)換,經(jīng)過單片機的計算,最后在液晶上面顯示[3]。</p><p>  方案二:以ARM Cortex-M3內(nèi)核處理器STM32F103系列為核心,使用雙電源供電,以及PM2.5檢測模塊和聲光報警模塊以及LCD顯示模塊組成。使用STM32F103內(nèi)置AD采集傳感器濃

21、度后,進(jìn)行數(shù)據(jù)處理及顯示[4]。</p><p>  方案三:以STC15F2K60S2 單片機為基本核心,主要包括粉塵傳感器GP2Y1010AU0F采集模塊,CH340串口轉(zhuǎn)USB作為串口通信模塊,STC15F2K60S2 單片機使用I/O強推挽輸出模式驅(qū)動傳感器檢測周圍環(huán)境PM2.5粉塵信息,轉(zhuǎn)換為電量,經(jīng)過15F2K60S2單片機自帶AD模塊的采集并做數(shù)據(jù)處理后,最后傳輸給上位機顯示。</p>

22、<p>  PM2.5檢測儀工作環(huán)境多為灰塵多,溫濕度不穩(wěn)定場合,為使得電路可靠性更大,所使用的電路應(yīng)越簡潔越合理。故本系統(tǒng)不采用前兩個方案,使用方案三。</p><p>  2.2 霧霾監(jiān)測系統(tǒng)結(jié)構(gòu)功能及簡介</p><p>  本系統(tǒng)的框架結(jié)構(gòu)如圖2-1。</p><p>  輸出可采集GPIO強推挽輸出</p><p>

23、;  的電信號 驅(qū)動傳感器LED</p><p><b>  圖2-1總體結(jié)構(gòu)</b></p><p>  2.2.1 15F2K60S2最小系統(tǒng)</p><p>  15F2K60S2最小系統(tǒng)是包含單片機以及能使單片機正常發(fā)揮其功能的外圍電路的整個電路板。</p><p>  2.2.2 GP2

24、Y1010AU0F灰塵傳感器</p><p>  系統(tǒng)使用GP2Y1010AU0F來檢測空氣中的灰塵,輸出模擬信號量以供外部檢測。工作電路如圖2-2。</p><p>  圖2-2 GP2Y1010AU0F工作電路</p><p><b>  3 硬件部分</b></p><p>  3.1 單片機STC15F2K60S

25、2基本介紹及特性</p><p>  本系統(tǒng)選用的STC15F2K60S2是由宏晶科技生產(chǎn)的以51單片機內(nèi)核為基礎(chǔ)的功能更強大的單片機。其內(nèi)置ADC,DAC,PWM,多個異步串口,多個定時器,內(nèi)置RC振蕩電路,因此可以去除墜余的晶振電路,且可不進(jìn)行分頻,則可比傳統(tǒng)51單片機快12倍以滿足反應(yīng)更迅速的控制場合。另外I/O口有四種工作類型,使得單片機適應(yīng)更復(fù)雜的輸入輸出環(huán)境。兼容8051指令系統(tǒng),可使用keil開發(fā)環(huán)

26、境進(jìn)行軟件制作,雖然可以使用“reg51.h”,但為了使用其內(nèi)部豐富的功能通常還是應(yīng)引入“stc15f2k60s2.h”頭文件。</p><p>  3.1.1 集成AD模塊</p><p>  AD轉(zhuǎn)換器(Analog to Digital Converter)即是模數(shù)轉(zhuǎn)變。顧名思義,即是把模擬的連續(xù)電壓轉(zhuǎn)換成處理器可使用的數(shù)字電平。</p><p>  本系統(tǒng)

27、采用的中央控制單元自帶的模擬數(shù)字轉(zhuǎn)換器是逐次比較型模擬數(shù)字轉(zhuǎn)換器。該轉(zhuǎn)換器由數(shù)字模擬轉(zhuǎn)換元件和比較器組成。從最高位開始,順序地將輸入電壓與每一級內(nèi)置D/A轉(zhuǎn)換器輸出進(jìn)行比較,通過逐次比較邏輯按位數(shù)次數(shù)比較,使轉(zhuǎn)換所得的數(shù)字量逐次逼近輸入模擬量對應(yīng)值[5]。逐次比較型模擬數(shù)字轉(zhuǎn)換器有著速度快,功耗低等優(yōu)勢。</p><p>  本系統(tǒng)采用的STC15系列單片機ADC(模數(shù)轉(zhuǎn)換器)的結(jié)構(gòu)如圖3-1所示</p&g

28、t;<p>  圖3-1 數(shù)模轉(zhuǎn)換器結(jié)構(gòu)圖</p><p>  由圖3-1可以知道,ADC0~7的連續(xù)電壓信號通過模擬多路開關(guān)送給比較器。將輸入的連續(xù)電壓與數(shù)模轉(zhuǎn)換器轉(zhuǎn)換的電壓信號以比較器相鑒別。轉(zhuǎn)換結(jié)果通過保存在逐次比較寄存器以供給外部使用。模擬數(shù)字轉(zhuǎn)變結(jié)束后,數(shù)據(jù)存留在ADC轉(zhuǎn)換結(jié)果寄存器ADC_RES與ADC_RESL,同時,置位A/D轉(zhuǎn)換結(jié)束標(biāo)志位AD C_FLAG(ADC控制寄存器ADC_

29、CONTR_register4),以供中斷申請或指令查詢。ADC控制寄存器ADC_CONTR(CHS2~CHS0)確定模擬通道的選擇控制[6]。SPEED1和SPEED0位(ADC控制寄存器中)確定ADC的轉(zhuǎn)換速度。使用ADC前需要給ADC上電,即置位ADC_POWER位(ADC控制寄存器中)。當(dāng)CLK_DIV.5(PCON2.5) /ADRJ=0時,A/D轉(zhuǎn)換結(jié)果寄存器格式如下圖3-2:</p><p>  圖

30、3-2 A/D采集結(jié)果寄存器</p><p>  公式計算:當(dāng)ADRJ=0且取10位結(jié)果時10-bit A/D Conversion Result:</p><p>  (ADC_RES[7:0], ADC_RESL[1:0]) = 1024 * Vin / Vcc </p><p>  當(dāng)ADRJ=0且取8位結(jié)果時8-bit A/D Conversion Resu

31、lt:</p><p>  (ADC_RES[7:0])= 256 * Vin/Vcc </p><p>  當(dāng)ADRJ=1時且取10位結(jié)果時10-bit A/D Conversion Result:</p><p>  (ADC_RES[1:0], ADC_RESL[7:0]) = 1024 * Vin /Vcc </p><p>  各公

32、式之中,Vin是需要采集以供數(shù)模轉(zhuǎn)換的輸入電信號,Vcc是本系統(tǒng)的電源電壓,用系統(tǒng)電源電壓作為模擬參照電平。另需注意:AD采集的復(fù)用I/O應(yīng)設(shè)置為高阻模式(詳細(xì)見下節(jié)),防止單片機被外電壓損壞。</p><p>  3.1.2 GPIO配置模塊</p><p>  宏晶15系列單片機最多有46個I/O口(如48-pin單片機):P0.0-P0.7,P1. 0- P1.7, P2.0-P2

33、.7, P3.0-P3.7, P4.0-P4.7, P5.0-P5.5。其所有I/O口都可由程序配置使用四種工作類型之一,如下圖:</p><p>  圖3-3 I/O工作類型</p><p>  各個I/O口由相應(yīng)的兩個寄存器P*M1和P*M0來控制每個口的輸出模式,位一一對應(yīng)。強推挽上拉每個I/O口驅(qū)動能力均可達(dá)到20mA(40-pin及40-pin以上型號整個芯片電流最大不超過120

34、mA,16-pin及以上/32-pin及以下型號最大不超過90mA)</p><p>  3.1.3 定時器資源</p><p>  系統(tǒng)中驅(qū)動傳感器時需要準(zhǔn)確的脈沖周期10ms,串口也需要定時器作為通信的時鐘基準(zhǔn),因此定時器是必要的資源之一。定時器在單板機里是一個實在的器件,是處理器芯片出廠時即存在的一個十分實用的計數(shù)器,傳統(tǒng)51單片機上定時器來源是最小系統(tǒng)上必須的晶振電路,而本系統(tǒng)采

35、用的STC15F2K60S2上計數(shù)的是內(nèi)置RC振蕩電路振蕩周期脈沖。因此單片機各計數(shù)方波之間的時間差也是非常準(zhǔn)確的1微秒。當(dāng)RC電路振蕩產(chǎn)生一次脈沖,則定時器內(nèi)的計數(shù)寄存器計數(shù)加一,直到加到最大值(16位時是65536,8位時是256)觸發(fā)定時器中斷,進(jìn)入中斷服務(wù)程序,由此設(shè)計出對于電路有時間或狀態(tài)機要求的系統(tǒng)設(shè)計。</p><p>  STC15F2K60S2中內(nèi)置5個16位定時器,T0,T1,T2,T3,T4

36、。相關(guān)寄存器如下。TCON是定時器或計數(shù)器T0與T1的控制寄存器,同時也包含有T0與T1溢出中斷源和外部請求中斷源等,TCON詳細(xì)如下圖:</p><p>  圖3-4 TCON寄存器</p><p>  SFR name指本寄存器在“reg51.h”頭文件被宏定義為TCON。Address指寄存器地址是88H。Bit7的TF1是定時器1中斷標(biāo)志位,定時器計數(shù)滿時觸發(fā)該中斷,TF1由硬件控

37、制置為1。中斷被CPU響應(yīng)后由硬件控制清0。Bit6是TR1,定時器1的開啟關(guān)閉位,由程序員設(shè)定運行或停止。Bit5的TF0是定時器0中斷標(biāo)志位,功能與TF1同,但控制作用定時器0。Bit4是TR0,是定時器0的開啟關(guān)閉位,功能與TR1同,但控制作用定時器0。Bit3的IE1是外部中斷1的標(biāo)志位,為‘1’時,外部有中斷需CPU響應(yīng)。Bit2的IT1是外部中斷1觸發(fā)方式的控制位,為‘1’時上下降沿都可觸發(fā),為‘0’則只能是下降沿。Bit1

38、的 IE0是外部中斷0的標(biāo)志位,為‘1’時,外部有中斷需CPU響應(yīng)。Bit0的IT0是外部中斷0觸發(fā)方式的控制位,為‘1’時上下降沿都可觸發(fā),為‘0’則只能是下降沿。TMOD寄存器各位的控制功能如下表。</p><p>  表3-1 TMOD寄存器</p><p>  3.1.4 串口資源</p><p>  在市面上大多需要空氣質(zhì)量監(jiān)測的場合,如空氣凈化器,采集

39、數(shù)據(jù)研究等??偸切枰獙?shù)據(jù)從下位機傳輸?shù)狡渌幚硇酒?。所以本系統(tǒng)采用串口通信將數(shù)據(jù)上傳至上位機調(diào)試。串口通訊是每次以二進(jìn)制中的一位接收和發(fā)送byte數(shù)據(jù)的一種通信協(xié)議。雖然慢于直接發(fā)送一字節(jié)八位的并行通信,但是其可以在使用TX數(shù)據(jù)線發(fā)送字節(jié)的同時用RX數(shù)據(jù)線接收字節(jié)[6]。STC15F2K60S2系列單片機有2個高速異步串行通信端口. </p><p>  串行口1的相關(guān)寄存器如圖3-5</p>&

40、lt;p>  圖3-5串口相關(guān)寄存器</p><p>  串行控制寄存器SCON的具體功能如下。SM0,SM1控制以多少位的方式進(jìn)行傳輸,8位或9位(加一校驗位)。SM2控制是否可以多機通訊。REN允許或禁止串行口接收。TB8、RB8校驗位相關(guān)設(shè)置。TI、RI發(fā)送、接收請求標(biāo)志位。</p><p>  波特率選擇特殊功能寄存器PCON具體功能如下[6]。SMOD控制波特率的倍速。SM

41、OD0用于檢驗幀錯誤。其余與串行口1無關(guān)。宏晶15系列單片機的UART1緩沖寄存器事實上有2個寄存器,向SBUF寫即是將需發(fā)送的數(shù)據(jù)寫入只寫寄存器,讀出SBUF即是從只讀寄存器獲得已接收的byte。</p><p>  接收會使用SBUF寄存器及輸入移位寄存器。因此把一字節(jié)數(shù)據(jù)從輸入移位寄存器送入SBUF寄存器后應(yīng)立即把數(shù)據(jù)取走,否則SBUF中得數(shù)據(jù)會丟失。故CPU應(yīng)在下一幀接收結(jié)束前從SBUF寄存器中取走數(shù)據(jù),

42、否則失去前一幀信息。SBUF與內(nèi)部數(shù)據(jù)總線以并行方式連接。</p><p>  3.2 GP2Y1010AU0F灰塵傳感器模塊</p><p>  通過調(diào)查得知本系統(tǒng)使用的傳感器GP2Y1010AU0F測試精度較高,安裝方便,價格合理。該傳感器使用光學(xué)傳感系統(tǒng),通過輸出電壓來反映空氣中灰塵濃度。內(nèi)部安置有一紅外發(fā)光二極管和一個用于測量空氣中灰塵的光強度的光敏三極管。尤其對空氣中的細(xì)小物質(zhì)

43、如香煙顆粒較敏感,另外該傳感器可以通過輸出的電壓的脈沖模式來區(qū)別煙霧和室內(nèi)灰塵。內(nèi)部原理圖如圖3-6:</p><p>  根據(jù) LED 驅(qū)動周期(脈沖周期:T(ms)),LED 驅(qū)動時間(脈沖寬度 Pw(m s))輸出電壓會變動, 規(guī)格書特性的規(guī)格值是脈沖周期 T:10ms脈沖寬度Pw:0.32ms, 取樣時間:0.28ms[7]。根據(jù)此條件變動,規(guī)格書上規(guī)定的特性值(無塵時輸出電壓、檢出感度)也隨之變動[8]

44、。GP2Y1010AU 插上電源后 1 秒內(nèi)會穩(wěn)定、正常運作,此時GP2Y1010AU輸出電壓的絕對值可以被準(zhǔn)確檢出[9]。</p><p>  圖3-6 灰塵傳感器內(nèi)部原理圖</p><p>  但據(jù)傳感器制造方提供數(shù)據(jù)可知更準(zhǔn)確方法是由無塵時的輸出電壓變化決定,公式如下。</p><p>  判定值 = 檢出濃度(mg/m3) ÷ 10 ×K

45、(V/(0.1 mg/m3) + 無塵輸出電壓(V)</p><p>  粉塵濃度特性數(shù)據(jù)如圖3-7</p><p>  圖3-7粉塵濃度-電壓</p><p>  3.3 CH340G串口轉(zhuǎn)USB模塊</p><p>  本系統(tǒng)中用CH340G將串口信號轉(zhuǎn)換為一般家用計算機的USB口,CH340 G是其他通訊方式轉(zhuǎn)換為USB方式的轉(zhuǎn)接芯片

46、。因為現(xiàn)在的計算機不再有異步的串行接口,所以必須采用CH340G轉(zhuǎn)換單片機的數(shù)據(jù)為上位機使用。</p><p>  其引腳VCC與GND分別為電源正與地,注意期間需加上耦合電容防止電源紋波對芯片的傷害,TXD與RXD分別連接單片機對應(yīng)I/O口,V3需加上耦合電容接地,XI與XO間需加一12M晶振振蕩電路,D+和D-分別連接計算機USB的RX,TX。RTS、DTR、DCD、RI、CTS是modem聯(lián)絡(luò)信號使用口,與

47、本系統(tǒng)無關(guān)[9][10][11]。其工作電路如圖3-8</p><p>  圖3-8 CH340G工作電路</p><p>  3.4電路原理圖及電路圖</p><p>  系統(tǒng)使用Altium Designer 軟件輔助完成電路設(shè)計。Altium Designer軟件是Altium公司于2006年年初推出的一種電子設(shè)計自動化(Electronic Designer

48、 Automation,EDA)設(shè)計軟件。該軟件幾乎將電子電路所有的設(shè)計工具集成在單一應(yīng)用程序中[12] [13]。</p><p>  電路實圖及原理圖如圖3-9及圖3-10。從圖3-10可以看出整個電路由三個部分組成。第一部分是單片機最小系統(tǒng),第二部分是電源開關(guān)以及基本的濾除紋波的電路,注意濾波電容不能超過250uf,否則會使GP2Y1010AU0F不能正常供電以致輸出濃度模擬電信號出錯。第三部分是與GP2Y

49、1010AU0F的接口電路??紤]霧霾檢測系統(tǒng)工作的暴露于空氣,多灰的惡劣環(huán)境,電路設(shè)計應(yīng)越簡易越可行,因此丟棄前人設(shè)計的開關(guān)管驅(qū)動GP2Y1010AU0F內(nèi)置發(fā)光管的電路,采用STC15F2K60S2的I/O口強推挽輸出達(dá)到的20mA大電流驅(qū)動GP2Y1010A U0F。</p><p><b>  圖3-9 系統(tǒng)電路</b></p><p>  圖3-10 系統(tǒng)電路

50、原理圖</p><p><b>  4 下位機軟件</b></p><p>  4.1 Keil uvision4編輯編譯集成開發(fā)環(huán)境介紹</p><p><b>  圖4-1 軟件界面</b></p><p>  系統(tǒng)下位機軟件使用Keil uvision4集成環(huán)境進(jìn)行開發(fā)。Keil uvisio

51、n4是可以運行在WindowsXP及以上操作系統(tǒng)的單片機或ARM系列微處理機開發(fā)工具。</p><p>  因為C語言的可移植性,模塊化和位操作,宏定義,指針操作等的便利性使得在單片機的開發(fā)中占據(jù)最大的市場。Keil uvision4可使用C語言進(jìn)行編輯,并且一鍵編譯連接。而在目標(biāo)選項中勾選了創(chuàng)建HEX文件后,更是可以將絕對文件生成可下載運行的十六進(jìn)制文件,直接燒錄進(jìn)入設(shè)備使用。不用再自己編寫makefile等相

52、關(guān)文件。十分實用且方便。軟件界面如圖4-1:</p><p><b>  4.2程序示例</b></p><p>  4.2.1 程序流程圖</p><p><b>  否</b></p><p><b>  否</b></p><p><b&g

53、t;  是</b></p><p>  圖4-2 程序流程圖</p><p>  4.2.2 main()調(diào)用介紹</p><p>  void main(){</p><p>  AD_init();</p><p>  uart_init();</p><p>  timer

54、0_init();</p><p>  GP2Y1010AU0F_init();</p><p>  while(1){</p><p>  if(MS_20){</p><p>  MS_20=flase;</p><p>  GP2Y1010AU0F_led=1;</p><p><

55、;b>  }</b></p><p>  if(MS_3_2){//3.2ms標(biāo)志位為真時使用ad采集并做顯示處理,以及將GP2Y1010AU0F的LED驅(qū)動I/O關(guān)閉</p><p>  AD_routine();</p><p>  GP2Y1010AU0F_led=0;</p><p>  if(ad_value&l

56、t;5){</p><p>  ad_00000++;</p><p>  if(ad_00000>5&&display_couter%10==0){ //當(dāng)空氣質(zhì)量較好時,(我國標(biāo)準(zhǔn)低于75ug/m^3)進(jìn)行一下操作</p><p>  ad_00000=0;//暫時不將數(shù)據(jù)傳輸給上位機(避免混亂,高于5次并且時間在100ms以上再傳輸)

57、 </p><p>  display();</p><p>  if(display_couter>50){</p><p>  display_couter=0;</p><p>  uartsend_byte('g');</p><p>  uartsend_byte(

58、'o');</p><p>  uartsend_byte('o');</p><p>  uartsend_byte('d');</p><p>  uartsend_byte('\n');</p><p>  }//若空氣質(zhì)量持續(xù)優(yōu)良,則報告good</p>

59、<p><b>  }</b></p><p><b>  }</b></p><p>  else {//若顆粒含量有一次超過50ug/m^3則說明空氣質(zhì)量較差,空氣優(yōu)良的計數(shù)清0</p><p>  display();</p><p>  display_couter=0;</

60、p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }[14][15]</b></p><p>  首先是一系列需要用到的基本組件初始化。A/D

61、轉(zhuǎn)換器初始化,本系統(tǒng)P1口未作其他處理僅使用P10口做A/D采集,故直接將P1口8位全部設(shè)置為高阻模式以防止采集時外部可能遇到的大電流從而對單片機帶來損傷。設(shè)置ADC_CONTR寄存器,打開A/D電源,速度設(shè)置為540A/D轉(zhuǎn)換一次(本系統(tǒng)速度要求并不高,所以不用使用AD部分的陷入中斷),開始轉(zhuǎn)換的控制位需要清0,輸入通道選擇P10。精度要求不是特別高,所以直接使用8位。初試化中應(yīng)把ADC數(shù)據(jù)寄存器中的垃圾數(shù)清0,關(guān)閉中斷,A/D轉(zhuǎn)換器

62、初始化就完成了。</p><p>  串口初始化,輔助寄存器AUXR中定時器1和串口的速率都設(shè)置為12分頻模式,串口使用八位一字節(jié)傳輸,波特率可變,打開啟動位,把接收和發(fā)送標(biāo)志位中斷RI,TI清零。把定時器1工作方式定義為八位自動重裝,設(shè)定波特率為盡量高速而又穩(wěn)定的9600。</p><p>  定時器初始化,本系統(tǒng)使用了定時器0和定時器2,把定時器0和2中斷標(biāo)志開啟,將定時器0和2打開。

63、因為GP2Y1010AU0F的驅(qū)動要求時間是10ms周期中3.2ms的高電平方波。所以定時器0高八位和低八位計數(shù)寄存器一起存放初值10000,即計時出12分頻時的10ms。定時器2高八位和低八位計數(shù)寄存器一起存放初值3200,即計時出3.2ms。定時器0中斷服務(wù)程序內(nèi)容是將10ms全局變量標(biāo)志MS_20置為1,并將定時器2打開。時間周期計數(shù)加一次。定時器2中斷服務(wù)程序內(nèi)容是將3.2ms全局變量標(biāo)志MS_3_2置為1,將定時器2自身關(guān)閉,

64、等待下一個10ms周期開始再開始計時,并讓ADC開始工作。</p><p>  GP2Y1010AU0F初始化,第一步需延時1秒鐘使傳感器內(nèi)部電路穩(wěn)定,接著將P2口每一位都設(shè)置為強推挽輸出,因為其實并未使用除了P20(GP2Y101 0AU0F_led)之外的I/O口所以不必?fù)?dān)心整個芯片電流輸出超過80mA,最后僅將P20位置為1上拉輸出。</p><p>  接著開始進(jìn)行系統(tǒng)例行的自動檢

65、測,當(dāng)10ms標(biāo)志為1時, GP2Y1010AU 0F_led設(shè)為1,當(dāng)3.2ms標(biāo)志位為真時,AD_routine()即ADC采集子函數(shù)啟用,將結(jié)果寄存器中的數(shù)據(jù)取出。再把轉(zhuǎn)換得出的十進(jìn)制數(shù)據(jù)轉(zhuǎn)為可一位一位串口發(fā)送的字符串ASCII碼。</p><p>  最后使用串口進(jìn)行數(shù)據(jù)的傳送。由上得知,系統(tǒng)下位機可在GP2Y1010AU 0 F_led置為高,即驅(qū)動傳感器內(nèi)部發(fā)光二極管時的3.2ms時間內(nèi)進(jìn)行AD采集,

66、完全符合該傳感器使用方法。至此一次數(shù)據(jù)采集傳輸完成,系統(tǒng)再次檢測10毫秒標(biāo)志以及3.2毫秒標(biāo)志是否到達(dá),循環(huán)自動監(jiān)測。</p><p><b>  5 軟硬件聯(lián)合調(diào)試</b></p><p>  本系統(tǒng)主要目的是將空氣中灰塵濃度測出,上位機數(shù)據(jù)顯示可視化及后續(xù)處理等不是本系統(tǒng)所關(guān)注重點,故使用串口助手進(jìn)行調(diào)試。本系統(tǒng)測試結(jié)果使用串口調(diào)試助手波特率設(shè)置9600,顯示文本

67、模式將空氣中灰塵濃度顯示出(單位:mg/m^3),如圖5-1所示。</p><p>  圖5-1 調(diào)試結(jié)果</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 周艷軍. PM2_5的污染危害及預(yù)防對策.產(chǎn)業(yè)與科技論壇[J].2013,12(11):114-115.</p><p>  [2]

68、引用自PM2.5監(jiān)測及評價研究進(jìn)展[J]. 氣象與減災(zāi)研究, 2011, 34(4):1-6.傅敏寧, 鄭有飛, 徐生,等.</p><p>  [3] 林喆,孫清,于瑩瑩.基于STC89C52 的單片機開發(fā)系統(tǒng)的研究與設(shè)計[J].電大理工,2011, 3.</p><p>  [4] 周文平.基于STM32的室內(nèi)PM2_5監(jiān)測器設(shè)計[D].安徽:安徽大學(xué),2016. </p&g

69、t;<p>  [5] 閻石. 數(shù)字電路基礎(chǔ)[M].第五版.北京:高等教育出版社,2006.524-545.</p><p>  [6] STC15F2K60S2 Data Sheet.WWW.STCMCU.com.2017,2. </p><p>  [7] GP2Y1010AU0F Hand Book. https://www.sharp.cn/.2017,2.&l

70、t;/p><p>  [8] 傳感器應(yīng)用技術(shù)王曉紅 主編 李文秀、梁艷 副主編 唐榮霞 參編</p><p>  [9] 華成英、童詩白. 模擬電子技術(shù)基礎(chǔ)[M].第四版.北京:高等教育出版社,2006.74-115</p><p>  [10] CH340G Data Sheet. http://cn.sanyo.com/.2017,2.</p>

71、<p>  [11] 李江全、魏中巖、姚帥. 單片機通信與控制應(yīng)用編程實例[M].第三版.北京:中國電力出版社,2012.1-32、100-150</p><p>  [12] 谷樹忠、倪虹霞、張磊. Altium Designer教程-原理圖、PCB設(shè)計與仿真[M].第二版.三河市:三河市雙峰印刷裝訂有限公司,2014.1-6.</p><p>  [13] 吳建明、張紅

72、琴. 電子工藝實訓(xùn)教程[M].北京:機械工業(yè)出版社,2011.40-60.</p><p>  [14] 張齊、朱寧西.單片機應(yīng)用系統(tǒng)設(shè)計技術(shù)-基于C51的Proteus仿真[M].第三版.北京:北京中新偉業(yè)印刷有限公司,2013.9-32、156-194</p><p>  [15] 郭天祥. 新概念:51單片機C語言教程[M].北京:電子工業(yè)出版社,2009.80-205.<

73、/p><p><b>  致 謝</b></p><p>  夏天總讓人感到是一個陽光燦爛,揮汗發(fā)奮的季節(jié)。在蟬鳴吱吱,鳥聲啾啾之中,在《基于15F2K60S2單片機的霧霾監(jiān)測系統(tǒng)》這篇文章即將論寫結(jié)束之際,我的內(nèi)心頗不能平靜。</p><p>  從畢業(yè)設(shè)計選題到論文完成,從寫定初稿到反復(fù)修改,我經(jīng)歷了新奇、喜悅、焦躁、最后定稿的感動,為自己,

74、也因為幫助我的老師和同學(xué)們。本次的畢業(yè)論文是在我的指導(dǎo)導(dǎo)師肖敏老師的熱心關(guān)懷與嚴(yán)格要求下完成的,肖老師諄諄告誡、緊貼實踐的課堂風(fēng)格及治學(xué)嚴(yán)謹(jǐn)、務(wù)實創(chuàng)新的研究方式使我受益匪淺。從論文的選題、參考理論、分析方法及論文寫作格式等方面,肖敏老師以其淵博的理論知識和豐富的電子設(shè)計經(jīng)驗為我提出了許多實際的指導(dǎo)意見。謹(jǐn)向肖敏老師表示崇高的敬意和衷心的感謝!</p><p>  從大學(xué)一年級到達(dá)綿陽師范學(xué)院學(xué)習(xí)到如今論文的定稿,

75、有多少令人敬重的師長、友善的同學(xué)、熱心的朋友給了我無私的幫助,在這里請接受我真誠的謝意!感謝我們可愛的母校綿陽師范學(xué)院四年來帶給我的良好學(xué)習(xí)氛圍,謝謝!</p><p><b>  附錄1 實物圖 </b></p><p><b>  附錄2 程序清單</b></p><p>  #include<stc15f2k6

76、0s2.h></p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  #define ad_in P10</p><p>  #define GP2Y1010AU0F_led P20</p><p> 

77、 #define AD_SET_IO 0X80</p><p>  #define AD_CONTORL 0x80</p><p>  #define ADRJ_8BIT 0XDF</p><p>  #define zero_clear 0</p><p>  #define ADCINT_CLOSE 0</p><p&

78、gt;  #define ture 1</p><p>  #define flase 0</p><p>  #define ADC_POWER 0X80</p><p>  #define ADC_START 0X08</p><p>  #define ADC_FLAG 0X10</p><p>  #defi

79、ne ADC_SPEED 0X00</p><p>  void timer0_init();</p><p>  void AD_init();</p><p>  void AD_routine();</p><p>  void uart_init();</p><p>  void uartsend_byte(

80、uchar byte);</p><p>  void delay(int t);</p><p>  void GP2Y1010AU0F_init();</p><p>  void display();</p><p>  uint MS_20,MS_3_2,ad_catch_t=0,display_couter;</p>

81、<p>  uchar uart_busy;</p><p>  uchar ad_value,ad_00000;</p><p>  uchar some_word;</p><p>  void main()</p><p><b>  {</b></p><p>  AD_init

82、();</p><p>  uart_init();</p><p>  timer0_init();</p><p>  GP2Y1010AU0F_init();</p><p><b>  while(1)</b></p><p><b>  {</b></p&

83、gt;<p><b>  if(MS_20)</b></p><p><b>  {</b></p><p>  MS_20=flase;</p><p>  GP2Y1010AU0F_led=1;</p><p><b>  }</b></p>&

84、lt;p>  if(MS_3_2){</p><p>  AD_routine();</p><p>  GP2Y1010AU0F_led=0;</p><p>  if(ad_value<5){</p><p>  ad_00000++;</p><p>  if(ad_00000>5&

85、&display_couter%10==0){ad_00000=0; </p><p>  display();</p><p>  if(display_couter>50){</p><p>  display_couter=0;</p><p>  uartsend_byte(&

86、#39;g');</p><p>  uartsend_byte('o');</p><p>  uartsend_byte('o');</p><p>  uartsend_byte('d');</p><p>  uartsend_byte('\n');</p&

87、gt;<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else {</b></p><p>  display();</p><p

88、>  display_couter=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  vo

89、id timer0_init()</p><p><b>  {</b></p><p><b>  ET0=1;</b></p><p><b>  TR0=1;</b></p><p>  TH0=(65535-15000)/256;</p><p>

90、;  TL0=(65535-15000)%256;</p><p>  AUXR|=0X10;</p><p>  IE2|=0X04;</p><p>  T2H=(65535-3500)/256;</p><p>  T2L=(65535-3500)%256;</p><p><b>  EA=1;<

91、;/b></p><p><b>  }</b></p><p>  void AD_init()</p><p><b>  {</b></p><p><b>  P1M1=1;</b></p><p><b>  P1M0=0;&l

92、t;/b></p><p>  P1ASF=AD_SET_IO;</p><p>  ADC_CONTR=AD_CONTORL;</p><p>  CLK_DIV&=ADRJ_8BIT;</p><p>  ADC_RES=zero_clear;</p><p>  ADC_RESL=zero_cle

93、ar;</p><p>  EADC=ADCINT_CLOSE;</p><p><b>  }</b></p><p>  void AD_routine()</p><p><b>  {</b></p><p>  if(ADC_CONTR&ADC_FLAG)

94、</p><p><b>  {</b></p><p>  ad_value=ADC_RES;</p><p>  MS_3_2=flase;</p><p>  ADC_CONTR&=~ADC_FLAG;</p><p>  ADC_CONTR&=~ADC_START;<

95、/p><p><b>  }</b></p><p><b>  }</b></p><p>  void uart_init()</p><p><b>  {</b></p><p><b>  AUXR=0; </b></p

96、><p>  SCON|=0X50; </p><p>  TMOD|=0X20;</p><p>  PCON&=0X3F;</p><p><b>  ES=1;</b></p><p><b>  TR1=1;</b></p><p>

97、  TH1=0XFD; </p><p><b>  TL1=0XFD;</b></p><p><b>  }</b></p><p>  void uartsend_byte(uchar byte)</p><p><b>  {</b></p><p

98、>  SBUF=byte;</p><p>  uart_busy=1;</p><p>  while(uart_busy);</p><p><b>  }</b></p><p>  void uart_int() interrupt 4</p><p><b>  {<

99、;/b></p><p><b>  if(TI)</b></p><p><b>  {</b></p><p><b>  TI=0;</b></p><p>  uart_busy=0;</p><p><b>  }</b&

100、gt;</p><p><b>  if(RI)</b></p><p><b>  {</b></p><p><b>  RI=0;</b></p><p>  some_word=SBUF;</p><p><b>  }</b&g

101、t;</p><p><b>  }</b></p><p>  void timer0_routine() interrupt 1 using 0</p><p><b>  {</b></p><p>  MS_20=ture;</p><p>  AUXR|=0X10;

102、</p><p>  display_couter++;</p><p><b>  }</b></p><p>  void delay(int t){</p><p><b>  int i;</b></p><p>  for(;t>0;t--)</p>

103、;<p>  for(i=1000;i>0;i--);</p><p><b>  }</b></p><p>  void GP2Y1010AU0F_init(){</p><p>  delay(1000);</p><p><b>  P2M1=0;</b></p&g

104、t;<p>  P2M0=0XFF;</p><p><b>  P20=1;</b></p><p><b>  }</b></p><p>  void display(){</p><p>  uint voltage,concentration_temp;</p>

105、<p>  voltage=ad_value*500/256;</p><p>  concentration_temp=voltage/2;</p><p>  uartsend_byte(concentration_temp/100+'0');</p><p>  uartsend_byte('.');</p&g

106、t;<p>  uartsend_byte(concentration_temp%100/10+'0');</p><p>  uartsend_byte(concentration_temp%10+'0');</p><p>  uartsend_byte('\t');</p><p><b>

107、;  }</b></p><p>  void timer1_routine() interrupt 12 using 0{</p><p>  MS_3_2=ture;</p><p>  AUXR&=0Xef;</p><p>  ADC_CONTR=ADC_POWER|ADC_START|ADC_SPEED;<

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論