版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第一章緒論1.1課題研究背景及意義隨著社會的不斷發(fā)展,生活質(zhì)量的提高,人們對于自己所居住的室內(nèi)環(huán)境有了不斷的追求,現(xiàn)代所采用的裝修材料中有很多含有有害物質(zhì),這些有害物質(zhì)揮發(fā)為氣體導(dǎo)致室內(nèi)環(huán)境質(zhì)量下降,直接危害到人體的身體健康。但是各類室內(nèi)裝飾及裝修材料中往往含有大量的甲醛等有害物質(zhì),這些有害物質(zhì)在室內(nèi)久久不能散去,直接對人們的身體健康造成了影響。如果人們生活在PM2.5或者甲醛超高的地方,可能就會造成不同程度的頭暈、惡心、失眠等癥狀,這是因為甲醛對于人們的神經(jīng)系統(tǒng)有一系列的干擾。目前市場上的室內(nèi)環(huán)境監(jiān)測儀種類繁多,相對功能比較單一化,同時價格也較貴,所以對功能多元化的多參數(shù)綜合環(huán)境監(jiān)測系統(tǒng)的設(shè)計有所需要[1]?,F(xiàn)代生活中,人們對于身體健康更為注重,盡管對家具、建材等各類裝修所需材料的環(huán)保性要求更高,但是仍然避免不了受到甲醛等有害氣體的影響。由于甲醛無色無味,但是對身體健康影響較大,所以在室內(nèi)安全甲醛測量儀和通風(fēng)設(shè)備,可有效增加人們的健康指數(shù)。在我國,對于環(huán)境監(jiān)測系統(tǒng)的研究開始較晚,大約始于20世紀(jì)的80年代,當(dāng)時的生產(chǎn)力水平較低,科技并不發(fā)達(dá),技術(shù)設(shè)備也比較落后,因此對環(huán)境系統(tǒng)的研究能力及水平也有限,大部分相關(guān)的設(shè)備都需要從國外引進(jìn),而且研究的經(jīng)費較高,對于研究者的素質(zhì)要求也高,環(huán)境監(jiān)測系統(tǒng)很難大規(guī)模的推廣和使用,近年來,我國吸收借鑒了國外的先進(jìn)技術(shù),在此基礎(chǔ)上加以改進(jìn),已經(jīng)取得了較大的成效,研究環(huán)境監(jiān)測的工作人員目前已經(jīng)熟練掌握了環(huán)境技術(shù),取得了突飛猛進(jìn)的發(fā)展。隨著科技及傳感器技術(shù)的不斷發(fā)展,將單片機(jī)技術(shù)應(yīng)用到環(huán)境的檢測中的設(shè)計也在不斷的研究和發(fā)展中[2]。由此可見,對于室內(nèi)控制質(zhì)量的檢測是非常有必要的。因此本設(shè)計針對室內(nèi)環(huán)境的技術(shù)指標(biāo)需求,使用pm2.5傳感器和VOC傳感器對室內(nèi)pm2.5和甲醛體監(jiān)測為主要手段,對有害氣體進(jìn)行數(shù)據(jù)采樣后根據(jù)預(yù)設(shè)值可在手機(jī)上進(jìn)行數(shù)據(jù)顯示,同時將數(shù)據(jù)通過藍(lán)牙模塊反饋至手機(jī)中。1.2課題研究現(xiàn)狀隨著科技及傳感器技術(shù)的不斷發(fā)展,將單片機(jī)技術(shù)與無線技術(shù)相結(jié)合的環(huán)境監(jiān)測系統(tǒng)也在不斷的研究和發(fā)展中。廣西民族大學(xué)的邢凱在基于單片機(jī)的室內(nèi)無線環(huán)境監(jiān)測系統(tǒng)設(shè)計與應(yīng)用一文中,針對人們長期居住的室內(nèi)及工作場所設(shè)計了一款以STC89C52單片機(jī)作為核心的無線環(huán)境監(jiān)測系統(tǒng),該系統(tǒng)利用DHT21溫濕度傳感器實時采集室內(nèi)的溫濕度,MS1100傳感器實時檢測甲醛濃度,將檢測到的數(shù)據(jù)通過NRF905無線收發(fā)模塊以無線的方式發(fā)送到PC端來處理,并可將數(shù)據(jù)處理顯示,如果檢測到溫濕度值或者甲醛濃度已經(jīng)高于設(shè)定的標(biāo)準(zhǔn)值時,蜂鳴器發(fā)出報警,避免空氣污染對人體出現(xiàn)的危害。該系統(tǒng)可進(jìn)行無線傳輸,可靠性高,適用于室內(nèi)環(huán)境的測量與監(jiān)控[3]。2017年王永順,閆等人在基于nRF905的無線環(huán)境監(jiān)測系統(tǒng)設(shè)計與實現(xiàn)的文章中,介紹了一款采用NRF905無線收發(fā)模塊作為無線傳輸模塊的溫度、濕度檢測與傳輸系統(tǒng),該系統(tǒng)所采用的單片機(jī)型號為STC89C52單片機(jī),利用精度較高的DS18B20傳感器和DHT11傳感器分別檢測溫度和濕度,再將采集到的溫度及濕度數(shù)據(jù)通過NRF905傳輸給接收部分,通過OLED屏實時顯示數(shù)據(jù)。該系統(tǒng)具有傳輸速率高、軟硬件設(shè)計簡單,通信穩(wěn)定等特定[4]。國外目前已經(jīng)開始發(fā)展研究長光程吸收光譜儀,這種設(shè)備以激光光源為基礎(chǔ)進(jìn)行檢測,靈敏度更高,但是目前處于測試的階段。同時,激光雷達(dá)等可以在距離較遠(yuǎn)的范圍內(nèi)進(jìn)行實時測量的技術(shù),已經(jīng)應(yīng)用到環(huán)境檢測中,可以實時測量范圍較廣的區(qū)域,得到了國際范圍內(nèi)的重視,已經(jīng)成為空氣環(huán)境監(jiān)測方面的系統(tǒng)發(fā)展的目標(biāo),給環(huán)境監(jiān)測的創(chuàng)新提供了新方向[5]。另外將衛(wèi)星測試、地面觀測相結(jié)合,向軌跡模型、空氣質(zhì)量預(yù)報模型構(gòu)建天地空一體化的大氣環(huán)境監(jiān)測和預(yù)報系統(tǒng),可對大氣環(huán)境形成一個立體的、全方位的認(rèn)識,這也是目前環(huán)境空氣質(zhì)量自動監(jiān)測系統(tǒng)的發(fā)展趨勢之一。綜上所述,將單片機(jī)技術(shù)與無線技術(shù)相結(jié)合的環(huán)境系統(tǒng)會不斷的向微型化、高穩(wěn)定性、抗干擾性、易開發(fā)的方向迅速發(fā)展。1.3本文研究內(nèi)容及章節(jié)安排本文主要研究的是一種可以準(zhǔn)確檢測室內(nèi)空氣質(zhì)量,對室內(nèi)的PM2.5濃度及甲醛濃度進(jìn)行檢測,并將檢測到的數(shù)據(jù)通過藍(lán)牙模塊發(fā)送給手機(jī)APP端實時監(jiān)控,主要對系統(tǒng)的功能、軟件部分、硬件設(shè)計都做了詳細(xì)的介紹,論文的具體章節(jié)安排如下所示:第一章是緒論,主要對空氣質(zhì)量監(jiān)測系統(tǒng)的研究背景、研究意義、論文的研究內(nèi)容和章節(jié)如何安排做闡述,為其余章節(jié)做鋪墊。第二章是系統(tǒng)的方案設(shè)計,主要對空氣質(zhì)量監(jiān)測系統(tǒng)的硬件結(jié)構(gòu)組成做了詳細(xì)的說明,并繪制系統(tǒng)結(jié)構(gòu)圖,通過對元器件特性、性價比、功能等各方面條件的可對比,選擇出最佳元器件方案。第三章為系統(tǒng)的電路設(shè)計,主要對空氣質(zhì)量監(jiān)測系統(tǒng)的各電路做詳細(xì)的介紹,每個電路如何連接做了詳細(xì)的說明。第四章為系統(tǒng)的軟件設(shè)計,主要對系統(tǒng)的主程序如何設(shè)計、各模塊子程序如何設(shè)計做了簡要介紹,并根據(jù)主程序的流程繪制出主程序流程圖,各模塊的工作流程繪制出子程序流程圖。第五章為系統(tǒng)的測試,在完成系統(tǒng)的硬件設(shè)計及軟件設(shè)計后,可對實物的功能進(jìn)行測試并將實物的演示步驟拍照記錄,系統(tǒng)調(diào)試成功。第六章為總結(jié),主要對系統(tǒng)完成了哪些功能進(jìn)行總結(jié)并對存在的問題、不足及可擴(kuò)展的功能進(jìn)行展望。
第二章系統(tǒng)方案設(shè)計在本章中將對系統(tǒng)功能進(jìn)行分析,并根據(jù)系統(tǒng)功能對系統(tǒng)的總體框圖進(jìn)行設(shè)計,再對完成系統(tǒng)功能所需的元器件型號進(jìn)行選擇。2.1系統(tǒng)功能需求室內(nèi)環(huán)境的質(zhì)量對于人體的身心健康有著直接的影響,在不外出的情況下,室內(nèi)的光照、溫度都對舒適性有著較大的影響,因此,對于室內(nèi)環(huán)境的實時檢測可以給人們提供很大的參考。根據(jù)目前人們對于室內(nèi)環(huán)境監(jiān)測系統(tǒng)的需求,本設(shè)計預(yù)計實現(xiàn)以下功能:室內(nèi)環(huán)境質(zhì)量監(jiān)測儀采用單片機(jī)和Java開發(fā)的APP作為的核心控制部,其主要實現(xiàn)功能如下:1、PM2.5檢測功能:采用pm2.5檢測模塊實時采集室內(nèi)的pm2.5濃度;2、甲醛檢測功能:采用甲醛傳感器實時檢測室內(nèi)的甲醛濃度;3、與手機(jī)APP連接功能:通過無線傳輸模塊將系統(tǒng)與手機(jī)APP相連接,檢測到的PM2.5濃度與甲醛濃度可通過手機(jī)APP顯示出來;4、報警功能:通過按鍵可設(shè)置甲醛濃度及PM2.5濃度的上限,在任一項數(shù)據(jù)過高時,蜂鳴器會發(fā)出聲光報警,手機(jī)APP也會提示濃度過高;5、電子鐘功能:通過DS1302時鐘芯片對時間進(jìn)行存儲,顯示屏?xí)@示當(dāng)前的時間,時間可以通過按鍵校正。2.2系統(tǒng)總體框圖設(shè)計根據(jù)以上功能需求分析,系統(tǒng)需要實現(xiàn)PM2.5檢測功能、甲醛檢測功能、與手機(jī)APP的連接功能、報警功能及電子鐘功能。本系統(tǒng)為室內(nèi)環(huán)境質(zhì)量監(jiān)測儀,系統(tǒng)由電源模塊、主控制器模塊、PM2.5檢測模塊、甲醛檢測模塊、按鍵模塊、AD檢測模塊、DS1302時鐘模塊組成。系統(tǒng)總體框圖設(shè)計如圖2-1所示。
電源模塊電源模塊PM2.5傳感器主控制器PM2.5傳感器主控制器顯示模塊顯示模塊甲醛傳感器AD轉(zhuǎn)換模塊甲醛傳感器AD轉(zhuǎn)換模塊通信模塊手機(jī)APP通信模塊手機(jī)APPDS1302DS1302報警模塊報警模塊圖2-1系統(tǒng)整體框圖設(shè)計2.3主要器件選擇與論證根據(jù)以上對室內(nèi)環(huán)境質(zhì)量監(jiān)測儀的功能要求概述及系統(tǒng)總體框圖的設(shè)計,需要對系統(tǒng)所需核心器件進(jìn)行選擇,下面將對主控器、PM2.5檢測模塊、AD轉(zhuǎn)換模塊、甲醛檢測模塊、顯示模塊及通信模塊選擇出兩種方案進(jìn)行對比,從傳感器模塊的參數(shù)、性能、價格等各方面實行方案對比,選擇出最佳型號器件。2.3.1主控芯片的選擇與論證方案一:FPGA的開發(fā)與傳統(tǒng)的單片機(jī)、PC機(jī)相比較有著很多的不同。對于FPGA的開發(fā),主要以運(yùn)算的方式為主,采用硬件來實現(xiàn)對語言的描述。相對于個各結(jié)構(gòu)的單片機(jī)、PC機(jī),在開發(fā)必須從頂層設(shè)計、軟硬件的調(diào)試、邏輯實現(xiàn)等多方面著手,開發(fā)入門非常困難[6]。方案二:單片機(jī)是一種常見的主控制芯片,與其它芯片相比,單片機(jī)的體積小、功耗低、使用更為方便、控制力強(qiáng),這些優(yōu)點促使單片機(jī)成為儀器、儀表、現(xiàn)代通信設(shè)備等多方面的主控芯片,運(yùn)用非常廣泛。單片機(jī)可以方便的與計算機(jī)實現(xiàn)數(shù)據(jù)的互相通信,且單片機(jī)編程較為簡單,支持C語言、匯編等多種語言,入門簡單,且具有超高性價比[7]。通過對比,單片機(jī)入門容易,編程簡單,F(xiàn)PGA開發(fā)極為復(fù)雜,不容易開發(fā),因此通過對比選擇單片機(jī)作為系統(tǒng)的主控芯片。2.3.2主控制器的選擇與論證方案一:STM32F103C8T6單片機(jī)屬于ARM內(nèi)核版本的單片機(jī),有32位的閃存,運(yùn)行及工作的速度都很快,接口較為簡單,具有實時性、高性能、功耗低、所需電壓低的優(yōu)點,單片機(jī)具有很強(qiáng)的集成性,開發(fā)更為簡單,STM32F103C8T6單片機(jī)采用是內(nèi)核為ARMCORTEX-M,外設(shè)也屬于一流水平,功耗和集成度方面也有著不俗的一面,但是開發(fā)難度較大,不適用于單片機(jī)初學(xué)者使用[8]。方案二:STC89C52RC單片機(jī)是STC公司在近些年來退出的一款CMOS8的單片機(jī),具有低功耗、高性能的熱點。雖然單片機(jī)內(nèi)部所使用的內(nèi)核依然是51系列單片機(jī)經(jīng)典的內(nèi)核MCS-51,但是在傳統(tǒng)的51單片機(jī)上有所改善,CPU有為8位,開發(fā)容易,可以為嵌入式應(yīng)用系統(tǒng)提供有效靈活的開發(fā)方案。結(jié)論:通過以上的對比,雖然STM32F103C8T6單片機(jī)的性能更為強(qiáng)大,外設(shè)一流,但單片機(jī)的開發(fā)難度較大,而STC89C52單片機(jī)不但在性價比上高于STM32單片機(jī),且編程簡單,容易開發(fā),因此選擇STC89C52單片機(jī)。2.3.3PM2.5檢測模塊的選擇與論證方案一:MQ2煙霧傳感器可以靈敏的檢測到可燃?xì)怏w,且反應(yīng)較快,在使用中的穩(wěn)定性極強(qiáng),且連線簡單,無論是軟件控制還是硬件控制都很方便。另外,MQ2傳感器也可以檢測液化氣體、天然氣等,即使是多種氣體混合在一起,MQ2也可以輕而易舉的排除掉其它氣體,檢測出混合氣體中的可燃?xì)怏w。方案二:夏普GP2Y1010AU0F傳感器采用光學(xué)檢測的方式可以靈敏的檢測出空氣內(nèi)的粉塵、PM2.5等有害氣體,空氣中的粉塵類的有害顆粒會反射出光,傳感器恰好利用了這一反射原理,準(zhǔn)確的檢測出空氣中的粉塵,即使是非常微小的煙草、煙霧的顆粒也能被檢測到,非常適用于空氣凈化[9]。結(jié)論:MQ2傳感器在檢測煙霧及可燃?xì)怏w方面更為靈敏,但是無法檢測出PM2.5濃度,夏普GP2Y1010AU0F傳感器可準(zhǔn)確的檢測出空氣中的PM2.5濃度,因此選擇方案二中的GP2Y1010AU0F傳感器。2.3.4通信模塊的選擇與論證方案一:ESP8266WIFI模塊,是常見的一種無線模塊之一,具有體積小、價格低廉、檢測距離遠(yuǎn)等優(yōu)點,僅僅指甲蓋大小的傳感器可鑲嵌于各種產(chǎn)品中,內(nèi)部含有LWIP協(xié)議實現(xiàn)WIFI搜索連接,兼容P模式、STA模式與AP+STQ這3種無線模式,AT指令方便實時發(fā)送與接收,方便用戶使用開發(fā),但是只有在有網(wǎng)絡(luò)熱點的情況下才能使用,如果沒有網(wǎng)絡(luò)則不能啟動模塊與系統(tǒng)之間的無線連接。方案二:藍(lán)牙模塊HC-05的協(xié)議為標(biāo)準(zhǔn)的V2.0協(xié)議,不同的波特率可以匹配不同的設(shè)備,用戶可根據(jù)相對應(yīng)的波特率進(jìn)行選擇,藍(lán)牙的連接狀態(tài)通過觀察即可得出,未連接狀態(tài)下模塊的指示燈是快閃的狀態(tài),在連接設(shè)備的狀態(tài)下指示燈會有節(jié)奏的慢閃,藍(lán)牙連接后可進(jìn)入AT指令。藍(lán)牙技術(shù)目前使用已經(jīng)非常廣泛,大部分手機(jī)、電腦等設(shè)備均可與藍(lán)牙相連接[10]。結(jié)論:通過綜合的比較,ESP8266WIFI模塊與藍(lán)牙模塊HC-05均可實現(xiàn)無線傳輸,WIFI模塊在有網(wǎng)絡(luò)熱點的情況下才可以使用,HC-05僅可用于具有藍(lán)牙裝置的設(shè)備,可實現(xiàn)點對點通信,適用于與手機(jī)APP通信,因此選用方案二中的藍(lán)牙模塊。2.3.5顯示模塊的選擇與論證方案一:ZLG7290數(shù)碼管內(nèi)部含有顯示RAM,可以自動實現(xiàn)動態(tài)顯示,將所需要顯示的內(nèi)容在數(shù)碼管上實時顯示。ZLG7290數(shù)碼管與單片機(jī)通過內(nèi)部的I2C串行接口相連接,無論是8位數(shù)碼管還是64位獨立的LED燈均可驅(qū)動。采用數(shù)碼管作為顯示器件的設(shè)備在數(shù)字上更為直觀,如果需要顯示數(shù)字,可選擇該顯示模塊[11]。方案二:LCD1602液晶顯示模塊與單片機(jī)相連接所采用的是標(biāo)準(zhǔn)的16引腳接口,在硬件電路的設(shè)計與焊接中較為方便??捎糜陲@示字符、字母及數(shù)字等多種顯示模式。內(nèi)部顯示是由幾個5*7或5*11的點陣字符構(gòu)成的,無論是每位字符還是每行之間都有字符間隔與行間隔。體積小、超薄輕巧,且可以顯示豐富的內(nèi)容。結(jié)論:ZLG7290數(shù)碼管更適用于顯示數(shù)字,如果在本設(shè)計的現(xiàn)實中只顯示數(shù)字,用戶無法判斷是哪種氣體濃度。而LCD1602可顯示字符、數(shù)字,顯示內(nèi)容更為豐富,在使用過程中更為方便,因此選擇方案二中的LCD1602液晶顯示屏。2.3.6甲醛檢測模塊的選擇與論證方案一:CJMCU-100甲醛傳感器主要用于對甲苯、苯、甲醛等揮發(fā)性有機(jī)化合物,傳感器屬于半導(dǎo)體類型,靈敏度極高穩(wěn)定性好,精度在0.1ppm,可以輕松偵測0.1ppm以上的氣體,如果在空氣檢測中需要檢測甲醛等有機(jī)揮發(fā)氣體,小巧的體積可廣泛用于各設(shè)備上容易鑲嵌,價格便宜,是一款高靈敏、高性價比的甲醛檢測模塊[12]。方案二:KB03型空氣質(zhì)量檢測模塊是一種半導(dǎo)體氣敏元件,可用于檢測一氧化碳、酒精、氨氣、煙霧等揮發(fā)氣體,在檢測的過程中具有很高的靈敏度,長期穩(wěn)定性優(yōu)異,在出場時就已經(jīng)標(biāo)定校準(zhǔn),使用中無需再校準(zhǔn)。傳感器壽命長、使用功耗較低。但是在甲醛檢測方面較弱,靈敏度不高。結(jié)論:通過兩種傳感器的對比,CJMCU-100甲醛傳感器可專門用于檢測空氣中的甲醛濃度,KB03型空氣質(zhì)量檢測模塊檢測甲醛方面較弱,本系統(tǒng)中需要檢測甲醛,因此通過對比選擇CJMCU-100甲醛傳感器。2.3.7AD轉(zhuǎn)換模塊的選型方案一:ADC0832轉(zhuǎn)換芯片是一款具有8位分辨率的A/D轉(zhuǎn)換芯片,256級的最高分辨率可以滿足大部分的模擬換轉(zhuǎn)換需求。模塊的模擬輸出電壓在0-5V之間,通過僅32μS就可以實現(xiàn)轉(zhuǎn)換,內(nèi)部的雙數(shù)據(jù)輸出可減少模擬轉(zhuǎn)換的誤差,轉(zhuǎn)換速度快并具有很強(qiáng)的穩(wěn)定性[13]。方案二:PCF8591是一款單獨供電的低功耗A/D轉(zhuǎn)換芯片,模塊具有4個模擬輸入接口、1個模擬輸出接口和1個I2C總線的接口。PCF8591內(nèi)部引腳可用于實現(xiàn)硬件地址的編程,并可以在無需額外硬件的情況下允許同一個I2C總線接入器件,但是電路較為復(fù)雜,穩(wěn)定性不強(qiáng)。結(jié)論:通過對兩款模塊的比較,ADC0832轉(zhuǎn)換模塊具有很強(qiáng)的穩(wěn)定性,并能滿足本系統(tǒng)中對于模擬轉(zhuǎn)換的要求,PCF8591需要單獨供電且電路復(fù)雜,因此選擇方案一中的ADC0832轉(zhuǎn)換模塊。
第三章系統(tǒng)硬件電路的設(shè)計通過元器件的選型,根據(jù)各型號器件的引腳功能對系統(tǒng)的硬件電路進(jìn)行設(shè)計,系統(tǒng)硬件電路主要包括STC89C52單片機(jī)的最小系統(tǒng)電路設(shè)計、LCD1602液晶顯示屏顯示電路設(shè)計、藍(lán)牙模塊的電路設(shè)計、PM2.5傳感器的電路設(shè)計、甲醛傳感器的電路設(shè)計及步進(jìn)電機(jī)的電路設(shè)計。下面將對各器件及傳感器電路如何連接做詳細(xì)的介紹。3.1單片機(jī)最小系統(tǒng)電路設(shè)計系統(tǒng)所采用的核心控制單片機(jī)型號為STC89C52,STC89C52單片機(jī)的特點如下,F(xiàn)LASH有8K,內(nèi)部RAM為512字節(jié),I/O口線為32位,單片機(jī)的外部中斷有4個,內(nèi)部存儲有4KB,可進(jìn)行全雙工工作。另外單片機(jī)也具有掉電保存、節(jié)點等功能。CPU在空閑的模式下停止工作,但CPU內(nèi)部的定時器、中斷、串口等可繼續(xù)保持工作狀態(tài),而在掉電保護(hù)的模式下,單片機(jī)停止工作,振蕩器將不再發(fā)生作用,直到單片機(jī)接收到下一個中斷指令或者硬件被復(fù)位。單片機(jī)的最高運(yùn)作頻率可達(dá)到35MHZ,另外單片機(jī)程序可直接使用串口下載。3.1.1晶振電路設(shè)計在本系統(tǒng)中,STC89C52單片機(jī)所連接的晶振電路的作用的非常大的,主要作用為連接單片機(jī)內(nèi)部的電路產(chǎn)生時鐘的頻率,從而提高單片機(jī)的運(yùn)行速度,晶振為單片機(jī)提供的時鐘的頻率直接影響到單片機(jī)的處理和運(yùn)行速度,因此,晶振電路所提供的時鐘頻率也是單片機(jī)執(zhí)行指令的基礎(chǔ)[14]。在晶振電路的設(shè)計中,單片機(jī)的XTAL2引腳與XTAL1引腳分別連接11.0592晶振引腳的兩端,連接30PF的電容濾波,再連接系統(tǒng)電路的GND端,共同組成晶振電路。晶振電路設(shè)計如圖3.1所示。圖3-1晶振電路設(shè)計3.1.2復(fù)位電路設(shè)計在本系統(tǒng)中添加了一個復(fù)位電路,單片機(jī)的復(fù)位電路簡而言之就是將單片機(jī)的電路進(jìn)行初始化,在單片機(jī)的內(nèi)部對單片機(jī)復(fù)位后就會把一些寄存器和存儲設(shè)備恢復(fù)到廠商的預(yù)設(shè)值。如果單片機(jī)的程序有120行,在程序運(yùn)行到60行時程序突然卡死或者系統(tǒng)出現(xiàn)停電問題,這時候單片機(jī)內(nèi)部的數(shù)據(jù)就有丟失的可能,有些數(shù)據(jù)可以不回丟失,如果想要下次再上電時系統(tǒng)正常運(yùn)行,因此在上電后單片機(jī)內(nèi)部就會重新初始化,這個過程就可以理解成為復(fù)位的過程,上電復(fù)位可以保證單片機(jī)每次開始后可以從固定的相同狀態(tài)開始工作,與電腦、手機(jī)重啟的過程是一樣的。在程序運(yùn)行時,如果遇到意外的干擾出現(xiàn)死機(jī)的現(xiàn)象,或者程序啟動后出現(xiàn)亂碼的現(xiàn)象,那么就可以通過按鍵進(jìn)行復(fù)位,按下復(fù)位按鍵后事程序重新啟動,這種就是手動復(fù)位。STC89C52單片機(jī)復(fù)位電路的原理為在單片機(jī)的復(fù)位引腳RST外部連接電阻和電容及按鍵,實現(xiàn)上電后通過按鍵復(fù)位。在本系統(tǒng)中,采用了按鍵復(fù)位的方式對系統(tǒng)程序進(jìn)行復(fù)位,在單片機(jī)的RST引腳連接了10UF的電容與10K的電阻,按下按鍵后系統(tǒng)程序就會實現(xiàn)重啟。圖3-2為系統(tǒng)復(fù)位電路設(shè)計。圖3-2系統(tǒng)復(fù)位電路設(shè)計3.1.3電源電路設(shè)計電源電路在單片機(jī)的系統(tǒng)中的作用是至關(guān)重要的,為保證電子設(shè)計的完整性,需要以安全、可靠、穩(wěn)定的電源為基礎(chǔ)。為克服單片機(jī)在運(yùn)行過程中系統(tǒng)受到干擾后的出現(xiàn)亂碼或死機(jī)現(xiàn)象,配置一個可靠穩(wěn)定的電源模塊是重要的手段之一。電源電路是電子設(shè)備中不可缺少的供電電路,本系統(tǒng)中所采用的ST89C52單片機(jī)采用5V電源為系統(tǒng)供電[15]。圖3-3為系統(tǒng)電源電路設(shè)計。圖3-3電源電路設(shè)計3.2顯示電路設(shè)計空氣質(zhì)量檢測器采用LCD1602液晶顯示屏作為顯示器件,用于顯示PM2.5傳感器所檢測到的PM2.5濃度及甲醛傳感器檢測到的甲醛濃度及系統(tǒng)的工作狀態(tài)等信息內(nèi)容。用戶通過該器件可了解到室內(nèi)空氣質(zhì)量中PM2.5及甲醛的數(shù)值,如果濃度過高及時作出相應(yīng)應(yīng)對措施,保障身體健康。LCD1602液晶顯示屏所連接的I/O口為單片機(jī)的P0口,由于P0口的驅(qū)動能力較弱,因此連接了1K的排阻,也就是上拉電阻。字符的顯示,采用LCD1602液晶顯示字符的過程較為復(fù)雜,每個字符都是有6*8或者8*8的點陣組成,因此既要找到顯示位置所對應(yīng)的顯示RAM,又要使每個字節(jié)的不同位為“1”,對應(yīng)的RAM區(qū)為8字節(jié),當(dāng)判斷到這8個字節(jié)的不同位為“1”,其它的字節(jié)不同位為“0”,不同位為“1”的字節(jié)點亮,為“0”的不亮,這樣就是可以組成需要顯示的某個字符。LCD1602液晶顯示IP內(nèi)帶字符發(fā)生器控制,顯示字符就比較簡單,直接在LCD上找到需要顯示的行列的對應(yīng)地址,將字符對應(yīng)的代碼送到設(shè)立的光標(biāo)即可實現(xiàn)顯示[16]。圖3-4LCD1602顯示電路設(shè)計LCD1602顯示電路設(shè)計如圖3.4所示。LCD1602液晶顯示屏與STC89C52單片機(jī)的電路中采用16個引腳分別與單片機(jī)相連接,每個引腳對應(yīng)的功能不一致,與單片機(jī)的引腳電路連接設(shè)計也不同。STC89C52單片機(jī)的P0口驅(qū)動能力不強(qiáng),在運(yùn)行中的電流較弱會影響到模塊顯示的清晰度,因此連接了1K的排阻,增強(qiáng)了I/O口的驅(qū)動能力。LCD1602的D0引腳-D7引腳屬于控制引腳,分別連接單片機(jī)的P0.0口-P0.7口,實現(xiàn)單片機(jī)對LCD1602的控制。RS、RW與E這3個引腳分別為讀、寫和使能端,分別連接單片機(jī)的P2.5口-P2.7口。VL連接滑動變阻器用于調(diào)節(jié)LCD1602液晶顯示屏的亮度,VSS與VDD分別連接系統(tǒng)電路的電端與地端。3.3按鍵電路設(shè)計室內(nèi)環(huán)境質(zhì)量監(jiān)測儀采用獨立按鍵來設(shè)置系統(tǒng)的時間,及甲醛濃度、PM2.5濃度的上限,在單片機(jī)系統(tǒng)的制作及智能設(shè)備的設(shè)計中,獨立式鍵盤的應(yīng)用是非常多的。這種獨立式的鍵盤所采用的軟件驅(qū)動非常簡單,具有硬件焊接與軟件編程簡單的特點,但是在所采用的按鍵較多時,連線就會變得復(fù)雜,且需要占用大量的單片機(jī)I/O口。當(dāng)按鍵按下后,會拉低對應(yīng)I/O的電壓與GND導(dǎo)通,單片機(jī)通過按鍵掃描程序就會讀到對應(yīng)的I/O為低電平,反之為高。所以,通過判斷單片機(jī)I/O口的高低電平就可以很直觀的知道按鍵的打開和關(guān)閉。系統(tǒng)共有4個按鍵,分別連接單片機(jī)的P1.0口、P1.1口、P1.2口和P1.3口。通過按鍵可設(shè)置溫度的最高值,當(dāng)超過所設(shè)定的最高溫度時,蜂鳴器開始報警。按下K1可進(jìn)入時間設(shè)置,按下K2可設(shè)置定時間,按下K3可設(shè)置溫度的上限,通過按鍵4可選擇系統(tǒng)模式。圖3-5為按鍵電路設(shè)計。圖3-5按鍵電路圖3.4PM2.5傳感器電路設(shè)計夏普GP2Y1010AU0F傳感器的檢測原理為傳感器的中心有一個小洞,在空氣自由流過時會定向的發(fā)射LED光,如果經(jīng)過小洞的空氣中含有PM2.5,就會折射過來的光線,通過空氣中的粉塵類的有害顆粒會反射出光,傳感器恰好里用了這一反射原理。夏普GP2Y1010AU0F傳感器實物圖如圖3.6所示。圖3.6夏普GP2Y1010AU0F傳感器實物圖如圖3.6所示,1藍(lán)色線為LED燈的正極,2綠色線為LED燈的GND,3白色線為LED燈,4黃色線S-GND,5黑色線VO,6紅色線為VCC。在與單片機(jī)相連接的電路中,V-LED、LED-GND與S-GND引腳連接220UF的電容及150歐姆的電阻再連接系統(tǒng)的VCC電源端,LED引腳連接單片機(jī)的P1.6口,VCC連接整個電路的正極,VO引腳連接單片機(jī)的P1.7引腳。在LED燈點亮的瞬間,檢測到空氣中的PM2.5濃度。圖3-7為夏普GP2Y1010AU0F傳感器電路設(shè)計。圖3-7夏普GP2Y1010AU0F傳感器電路設(shè)計3.5甲醛檢測電路設(shè)計系統(tǒng)中所采用的CJMCU-100甲醛傳感器是一種半導(dǎo)體傳感器,所采用的材料屬于表面離子式的氣敏材料。當(dāng)與空氣中的甲醛等有害氣體相接觸時,半導(dǎo)體中的電阻受到甲醛的影響而發(fā)生變化,從而引起傳感器表面導(dǎo)電率的變化,利用這一點變化就可以獲得甲醛存在的信息。檢測到的甲醛濃度越高,傳感器的導(dǎo)電率就會隨之變得更大,而輸出的電阻就越低,此時輸出的模擬信號(甲醛濃度)就越大[17]。CJMCU-100甲醛傳感器的GND引腳連接系統(tǒng)電路的地端,VCC引腳連接系統(tǒng)電路的電端,AOUT引腳連接ADC0832的IN1引腳,實現(xiàn)ADC0832對甲醛濃度的采集與數(shù)字轉(zhuǎn)換。甲醛檢測電路設(shè)計如圖3-8所示。圖3-8甲醛檢測電路設(shè)計3.6藍(lán)牙通信模塊電路設(shè)計藍(lán)牙通信模塊可以很方便的與單片機(jī)相連接,實際接線只用到4根線即可實現(xiàn)連接。通電后,在尚未實現(xiàn)藍(lán)牙連接之前,模塊上的LED燈會不停閃爍,一旦成功的與手機(jī)或者計算機(jī)等藍(lán)牙裝置,LED燈將會進(jìn)入長亮的狀態(tài)。藍(lán)牙無線通信模塊有兩種工作方式,一個是命令響應(yīng)工作模式,另一個是自動連接工作模式。在命令響應(yīng)工作模式下,使用者通過向模塊發(fā)送AT工作指令來對模塊的控制參數(shù)進(jìn)行設(shè)定和下達(dá)控制指令。藍(lán)牙模塊的4個引腳分別為電源、地、傳送和接收,在與藍(lán)牙裝置的通訊中接收(RXD)所傳入的數(shù)據(jù)轉(zhuǎn)化成無線信號實現(xiàn)信號的發(fā)送,或者是將傳送(TXD)所接收到的無線數(shù)據(jù)傳送給單片機(jī),而藍(lán)牙模塊本身是不解讀數(shù)據(jù)的??刂扑{(lán)牙模塊的指令為AT指令,AT指令不是通過藍(lán)牙實現(xiàn)實現(xiàn)無線傳輸,而是通過模塊的接收引腳和發(fā)送引腳實現(xiàn)數(shù)據(jù)的傳輸。藍(lán)牙模塊只有在AT的模式下,才能實現(xiàn)AT指令的接收。HC-05模塊在與手機(jī)APP相連接之前,處于AT模式狀態(tài),上電后即可進(jìn)入AT模式。藍(lán)牙模塊采用9600bps的波特率對數(shù)據(jù)進(jìn)行傳輸[12]。在本系統(tǒng)電路的設(shè)計中,藍(lán)牙模塊的VCC連接整個電路的VCC端(電端),GND(地端)連接整個電路的地端,接收(RXD)連接單片機(jī)的P3.0口,傳送(TXD)連接單片機(jī)的P3.1口,實現(xiàn)與單片機(jī)之間數(shù)據(jù)的相互通信。HC-05藍(lán)牙模塊電路設(shè)計如圖3-9所示。圖3-9HC-05藍(lán)牙模塊電路設(shè)計?3.7ADC0832電路設(shè)計ADC0832與單片機(jī)的連接下,需要4個引腳,分別是CS引腳(使能端)、SCLK引腳(時鐘引腳)、DI引腳(信號輸入)與DO(信號輸出)引腳,由于DO引腳與DI引腳與單片機(jī)通信是雙向的,但是通信時不能同時有效,因此在電路的設(shè)計中將D0引腳與DI引腳相連接同時連接單片機(jī)的引腳。ADC0832芯片在未工作的情況下,CS輸入引腳的電平為高電平,芯片處于禁用的狀態(tài),其它三個引腳的電平無限制[14]。在進(jìn)行AD轉(zhuǎn)換時,CLK會提供給芯片時序,芯片開始工作,DI與DO引腳會通過DI引腳對數(shù)據(jù)信號選擇。在本電路中,ADC0832用于采集夏普GP2Y1010AU0F傳感器和甲醛傳感器所采集到的PM2.5濃度和甲醛濃度,然后將數(shù)據(jù)通過藍(lán)牙HC-05傳送到手機(jī)APP。其中模塊的CS使能端連接單片機(jī)的P3.6口,SCLK時鐘引腳連接單片機(jī)的P3.4口,DI引腳與DO引腳并聯(lián)到P3.5口,GND連接整個電路的地端,VCC引腳連接整個電路的電端。圖3-10為ADC0832采集芯片電路設(shè)計。圖3-10ADC0832芯片電路設(shè)計3.8蜂鳴器報警電路設(shè)計在檢測到當(dāng)前的PM2.5濃度或者甲醛濃度過高時,系統(tǒng)會驅(qū)動蜂鳴器發(fā)出聲光報警。蜂鳴器報警電路的原理為電路是由NPN三極管、蜂鳴器及LED燈構(gòu)成的,其中三級管的基極(中間引腳)是由單片機(jī)的I/O進(jìn)行控制的,在單片機(jī)I/O口出現(xiàn)高電平是三極管被導(dǎo)通,從而使整個電路接通,蜂鳴器實現(xiàn)發(fā)聲,當(dāng)單片機(jī)的I/O口處于低電平的狀態(tài)下,蜂鳴器電路斷開,報警結(jié)束[15]。在本設(shè)計中的蜂鳴器報警電路,三極管的基級與單片機(jī)的P2.0口相連接,由單片機(jī)控制,正極連接蜂鳴器的負(fù)極再連接整個電路的VCC(電端),負(fù)極連接LED燈的正極再連接整個電路的GND端,在P2.0口處于高電平時,控制三極管打開,蜂鳴器報警電路實現(xiàn)報警。蜂鳴器報警電路如圖3-11所示。圖3-11蜂鳴器報警電路設(shè)計3.9DS1302時鐘芯片電路設(shè)計系統(tǒng)采用DS1302時鐘芯片來實現(xiàn)時間存儲,即使在系統(tǒng)電源關(guān)閉又重啟的情況下,也可以保證時間的準(zhǔn)確性。DS1302時鐘芯片有兩個電源引腳,分別為VCC1和VCC2,一個是主電源,一個是后備電源,也就是在主電源關(guān)閉的情況下,后備電源供電,保證時鐘的持續(xù)運(yùn)行。而X1和X2引腳是晶振的引腳,與單片機(jī)晶振電路一樣,可以連接外部晶振,為模塊提供時序,DS1302時鐘芯片所連接的是32.768MHZ的晶振。模塊的RST為片選引腳,通過該引腳可實現(xiàn)數(shù)據(jù)的傳送,CE、I/O及SCLK分別為數(shù)據(jù)的輸出、與單片機(jī)通信及輸入端,3個引腳分別需要連接單片機(jī)的I/O口,實現(xiàn)與單片機(jī)的通信,在本電路中CE、I/O與SLK引腳分別連接的是單片機(jī)的P2.3口、P2.2口和P2.1口。DS1302時鐘芯片電路設(shè)計如圖3-12所示。圖3-12DS1302時鐘芯片電路設(shè)計
第四章軟件設(shè)計4.1開發(fā)環(huán)境及工具介紹在室內(nèi)環(huán)境質(zhì)量監(jiān)測儀的軟件代碼的編程與設(shè)計中,包括單片機(jī)程序設(shè)計和手機(jī)APP的程序設(shè)計,其中單片機(jī)程序是由KEIL軟件來編程,C語言編寫代碼,手機(jī)APP程序是由MyEclipse軟件編程,JAVA語言編寫。Java開發(fā)語言:java編程語言是SUN公司上世紀(jì)九十年代的產(chǎn)物,到現(xiàn)在依然在廣泛使用,它吸取了C++強(qiáng)大功能的同時去掉了一些它們的復(fù)雜特性,不如指針之類的,并增加了強(qiáng)大的web編程支持,才使得我們今天可以用java開發(fā)本系統(tǒng)。MyEclipse:MyEclipse是基于eclipse而來,是應(yīng)用廣泛的企業(yè)級開發(fā)環(huán)境,可應(yīng)用于javaEE、javaweb等開發(fā)。是目前很流行的跨平臺的集成開發(fā)環(huán)境,同時可編寫、編譯、運(yùn)行、調(diào)試代碼一站式全部完成。KEIL軟件:KEIL軟件是一種可以兼容單片機(jī)C語言開發(fā)的程序開發(fā)的軟件系統(tǒng)。KEIL可以為各類語言、鏈接器和庫管理提供完整的開發(fā)方案,在集成的開發(fā)環(huán)境中將這些部分組成在一起,實現(xiàn)軟件編程。C語言:本系統(tǒng)中所采用的編程語言為C語言,結(jié)構(gòu)上、功能上與可讀性等方面都有較強(qiáng)的優(yōu)勢,更容易使用。代碼質(zhì)量與匯編語言相比生成效率更高,代碼編寫更簡潔,描述迅速,可讀性好,因此使用較廣。4.2單片機(jī)部分主程序設(shè)計單片機(jī)部分的主程序也稱為main函數(shù),是程序編寫時的框架。單片機(jī)軟件部分主要實現(xiàn)傳感器對霧霾及甲醛的檢測以及對手機(jī)app數(shù)據(jù)的接收,判斷接收到數(shù)據(jù)是否在手機(jī)APP所設(shè)置閾值內(nèi),若接收數(shù)據(jù)異常驅(qū)動蜂鳴器報警。主程序首先經(jīng)過初始化串口及定時器,讀取PM2.5濃度、甲醛后連接WIFI成功后,發(fā)送數(shù)據(jù)后接收數(shù)據(jù),判斷檢測到的PM2.5濃度是否超過手機(jī)APP所設(shè)置的上限,超過上限蜂鳴器報警。系統(tǒng)主程序設(shè)計如圖4-1所示。
開始開始初始化顯示屏初始化顯示屏初始化串口初始化串口讀取PM2.5讀取PM2.5讀取甲醛讀取甲醛接收數(shù)據(jù)接收數(shù)據(jù)顯示顯示YY設(shè)置閾值讀取按鍵設(shè)置閾值讀取按鍵NNY溫度過高Y溫度過高蜂鳴器報警蜂鳴器報警NNY甲醛過高Y甲醛過高蜂鳴器報警蜂鳴器報警NN發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù)圖4-1系統(tǒng)主程序設(shè)計
4.3手機(jī)APP端程序設(shè)計及APP開發(fā)4.3.1手機(jī)端程序設(shè)計手機(jī)APP界面通過JAVA語言開發(fā)的,通過藍(lán)牙模塊接收單片機(jī)系統(tǒng)的PM2.5傳感器所測得的PM2.5濃度及甲醛濃度實時顯示,并在PM2.5與甲醛濃度過高時出現(xiàn)文字提醒。程序在開始后首先需要初始化串口,連接藍(lán)牙連接成功后實現(xiàn)手機(jī)界面的顯示,接收下位機(jī)發(fā)送的數(shù)據(jù)并顯示,PM2.5與甲醛濃度過高時出現(xiàn)提示。手機(jī)APP端程序設(shè)計如圖4-2所示。開始開始初始化串口初始化串口連接藍(lán)牙連接藍(lán)牙N接收數(shù)據(jù)N接收數(shù)據(jù)YY手機(jī)界面顯示手機(jī)界面顯示N接收數(shù)據(jù)N接收數(shù)據(jù)濃度過高YY顯示提示顯示提示結(jié)束結(jié)束圖4-2手機(jī)APP端流程設(shè)計4.3.2手機(jī)APP的開發(fā)室內(nèi)環(huán)境質(zhì)量監(jiān)測儀手機(jī)APP端主要起到控制及顯示的作用,開發(fā)環(huán)境為Eclipse,編寫語言為JAVA語音。與單片機(jī)系統(tǒng)中開發(fā)的KEIL軟件環(huán)境編程,C語言來編寫程序是一樣的。編譯手機(jī)APP軟件的過程如下:(1)首先創(chuàng)建工程文件,需要雙擊打開eclipse.exe的工程文件,這時會出現(xiàn)eclipse的界面,直接創(chuàng)建一個工程文件即可。如圖4-3所示。圖4-3創(chuàng)建工程文件(2)可在軟件中查找工程目錄,在工程目錄下的菜單找到Res目錄,在Res目錄的菜單下對Layout文件進(jìn)行查找,找到Layout文件后打開main.xml文件。在main.xml文件的目錄下就可以對手機(jī)APP軟件進(jìn)行程序的編寫了。編譯界面如圖4-4所示。圖4-4手機(jī)編譯界面手機(jī)APP的編程語言為JAVA,因此需要在“BTClient.java”這個目錄下對源代碼進(jìn)行編寫,完成手機(jī)APP代碼的編寫。如圖4-5所示。圖4-5源代碼編程在完成手機(jī)APP源代碼的編寫以及APP界面的繪制后,就可以對編寫好的源代碼進(jìn)行編譯了,編譯通過后會直接生成一個APK文件,在bin的目錄下可找到生成好的APK文件。APK文件生成如圖4-6所示。圖4-6生成APK文件將生成好的APK文件下載到安卓系統(tǒng)的手機(jī),在手機(jī)上安裝,然后打開APK軟件即可實現(xiàn)運(yùn)行,即可對手機(jī)APP的功能進(jìn)行測試。
第五章系統(tǒng)調(diào)試通過硬件電路設(shè)計及程序的編寫與設(shè)計后,就可以對硬件電路的連接和程序編寫進(jìn)行調(diào)試。軟件與硬件的調(diào)試及軟硬件的綜合調(diào)試都是實物制作過程中非常重要的環(huán)境。任何實物的硬件在焊接好之后都需要對各模塊及各電路進(jìn)行測試,確保沒有問題后再進(jìn)行軟件編寫,因此硬件環(huán)境的測試也可以說是軟件編寫的良好基礎(chǔ)。以正確的方式對軟件及硬件進(jìn)行調(diào)試,可避免很多不必要的錯誤,提高實物運(yùn)行的成功率,確保完成所有功能。在完成系統(tǒng)的電路設(shè)計和程序設(shè)計后,即可對電路及程序進(jìn)行調(diào)試,這是實物制作中非常重要的一個環(huán)節(jié)。5.1單片機(jī)軟件調(diào)試系統(tǒng)程序開發(fā)環(huán)境為KEIL4軟件,程序編寫完成后可進(jìn)入軟件自帶的編譯器中查找代碼編寫是否有錯誤,如果檢查出錯誤可進(jìn)行更改然后編譯程序。如果程序編譯失敗,可進(jìn)入斷點調(diào)試,在斷點調(diào)試的工具欄中逐句對程序進(jìn)行調(diào)試。在斷點調(diào)試完成后,點擊編譯按鈕對程序進(jìn)行編譯。程序編譯如圖5-1所示。圖5-1程序編譯在編程中錯誤檢查是必不可少的一項,有事因為疏忽就會出現(xiàn)語法錯誤,在變異后編譯器就會提示相關(guān)的錯誤信息。例如,即使少寫一個‘:’,都會導(dǎo)致程序編譯失敗。由于第一次編寫程序,出現(xiàn)的錯誤較多。程序編譯錯誤如圖5-2所示。圖5-2錯誤檢查經(jīng)過反復(fù)查找錯誤與修改,終于完成了程序的編寫,就可以對程序進(jìn)行編譯了,編譯成功后會提示“0error”(即無錯誤),那么就可以生成后綴為.hex鏡像文件。如圖5-3所示。圖5-3程序編譯通過然后通過燒寫軟件將編譯好的鏡像文件下載到單片機(jī)中運(yùn)行即可,由此程序的軟件部分調(diào)試完成。在軟件調(diào)試戲中遇到了一下問題:1、編譯不通過問題:在編寫好代碼后,屢次出現(xiàn)編譯不通過的現(xiàn)象,經(jīng)過仔細(xì)的檢查,發(fā)現(xiàn)是在編譯過程中未選擇createhexfile,因此就未鏡像文件就不能生成,所以編譯程序的過程中,這些都是要重點留意的。2、變量未定義產(chǎn)生的錯誤:在對程序進(jìn)行編寫的過程中,我們要自主對一些變量進(jìn)行定義,假如沒有對其進(jìn)行設(shè)置,后續(xù)將產(chǎn)生錯誤的情況。3、最后的檢查:燒錄完成,再次核對實物的功能是否滿足要求,在對設(shè)計的程序進(jìn)行給電,觀察是否達(dá)到預(yù)期功能,如果未達(dá)標(biāo)準(zhǔn),在分程序檢測,發(fā)現(xiàn)問題并予以修正,直到保障程序完全無誤。
5.2JAVA開發(fā)手機(jī)APP調(diào)試在使用eclipse.exe開發(fā)手機(jī)APP時,可能會遇到一些開發(fā)方面的問題,同時采用JAVA語言開發(fā)時也會出現(xiàn)一些編程或者編譯方面的錯誤。首先需要雙擊eclipse.exe打開軟件,進(jìn)行編程。軟件運(yùn)行如圖5-4所示。圖5-4軟件運(yùn)行圖標(biāo)在使用JAVA的編程中,需要定義privateTextViewdis_6,在定義時即使少寫一個‘;’,軟件也會將錯誤的位置進(jìn)行自動提示。如圖5-5所示。圖5-5錯誤示意圖手機(jī)APP與單片機(jī)系統(tǒng)通信時,可以按照需要在APP程序中定義通信數(shù)據(jù)的指令,對于每條發(fā)送的指令進(jìn)行監(jiān)聽,當(dāng)v.getId()監(jiān)聽到觸發(fā)信號的指令時,會將對應(yīng)的信號指令傳送給單片機(jī)。發(fā)送指令示意圖,如圖5-6所示。圖5-6數(shù)據(jù)發(fā)送手機(jī)APP通過編寫好的按鍵指令發(fā)送指令信息到單片機(jī)系統(tǒng),單片機(jī)系統(tǒng)接收到指令信息后解析數(shù)據(jù),發(fā)送到手機(jī)APP進(jìn)行代碼解析,顯示相應(yīng)的內(nèi)容,在每次接收到數(shù)據(jù)指令時,手機(jī)APP都需要對數(shù)據(jù)進(jìn)行解析。接收數(shù)據(jù)處理函數(shù),如圖5-7所示。圖5-7接收數(shù)據(jù)執(zhí)行函數(shù)在完成手機(jī)APP代碼編寫后,即可在工具欄點擊運(yùn)行來運(yùn)行手機(jī)APP,點擊編譯后運(yùn)行,實現(xiàn)代碼的編譯。如圖5-8所示。圖5-8編譯示意圖在代碼編譯成功后,即可彈出模擬器的界面,點擊bin目錄,在目錄下即可生成手機(jī)APK的文件,再倒入安卓手機(jī)中安裝。手機(jī)APP代碼軟件部分調(diào)試完畢。如圖5-9所示。圖5-9編譯調(diào)試完成5.3硬件調(diào)試硬件調(diào)試主要是指對系統(tǒng)硬件電路的焊接與調(diào)試,根據(jù)單片機(jī)引腳、元器件個引腳性能等方面進(jìn)行研究后,采用Altiumdesigner繪制完成電路圖,再根據(jù)電路圖焊接實物的電路。在焊接過程中也需要注意元器件的正負(fù)極及電路的導(dǎo)通情況,萬用表是必不可少的電路檢查工具。通過萬用表可檢查電路是否確實導(dǎo)通,如果電路未導(dǎo)通就需要對電路再逐一檢查,如果有虛焊現(xiàn)象就需要再確認(rèn)是哪個電路或者元器件的引腳出現(xiàn)了虛焊現(xiàn)象,對虛焊部分進(jìn)行補(bǔ)錫操作。然后再檢查元器件的正負(fù)極是否有接反的現(xiàn)象,如果有接反現(xiàn)象所導(dǎo)致的結(jié)果是較為嚴(yán)重的,可能會導(dǎo)致傳感器無法正常工作,嚴(yán)重時會直接燒毀元器件。在確認(rèn)電路無任何問題后,才能將軟件代碼燒寫進(jìn)單片機(jī),接通電源,查看實物功能。
5.4實物功能展示5.4.1實物成品展示室內(nèi)環(huán)境質(zhì)量監(jiān)測儀系統(tǒng)采用洞洞板制作,以LCD1602液晶顯示屏作為顯示模塊,STC89C52單片機(jī)作為主控器,PM2.5傳感器實時檢測PM2.5濃度,甲醛傳感器檢測甲醛濃度,通過藍(lán)牙模塊將檢測到的數(shù)據(jù)發(fā)送到手機(jī)APP,并實現(xiàn)手機(jī)APP對PM2.5濃度及甲醛濃度的顯示。系統(tǒng)實物成品展示如圖5-10所示。圖5-10實物成品展示5.4.2顯示功能展示系統(tǒng)所采用的供電電源為5V,系統(tǒng)上電后,藍(lán)牙模塊顯示屏?xí)疗?,LCD1602液晶顯示屏?xí)@示當(dāng)前檢測到的PM2.5濃度及甲醛濃度,當(dāng)前的時間等信息。系統(tǒng)顯示功能展示如圖5-11所示。圖5-11顯示功能展示5.4.3按鍵設(shè)置上限通過按鍵可以設(shè)置PM2.5濃度及甲醛濃度的上限,如果檢測到的PM2.5的濃度或者甲醛濃度超過了用戶所設(shè)置的上限值時,會自動報警。按鍵設(shè)置上限功能展示如圖5-12所示。圖5-12按鍵設(shè)置上限5.4.4手機(jī)APP功能展示手機(jī)APP端與單片機(jī)部分采用藍(lán)牙模塊進(jìn)行連接,實現(xiàn)手機(jī)端與系統(tǒng)的通信。連接成功后,APP界面會顯示當(dāng)前的PM2.5濃度、甲醛濃度的開關(guān)等信息。圖5-12手機(jī)界面顯示5.4.5報警功能展示在設(shè)置完畢PM2.5濃度及甲醛濃度上限后,如果檢測到的PM2.5濃度或者甲醛超過設(shè)置的上限時,蜂鳴器會發(fā)出聲光報警,同時手機(jī)APP端所顯示的也會出現(xiàn)濃度過高的提示,提醒用戶注意防范。有害氣體濃度過高報警如圖5-13所示。圖5-13報警功能展示
結(jié)論通過對系統(tǒng)軟件的調(diào)試、手機(jī)APP調(diào)試及實物功能的測試,實現(xiàn)了基于Java的室內(nèi)空氣質(zhì)量檢測器的所有功能。具體總結(jié)如下:(1)系統(tǒng)實現(xiàn)了對霧霾中PM2.5濃度、甲醛濃度的實時檢測,完成了手機(jī)APP的開發(fā)并可以通過藍(lán)牙與系統(tǒng)相連接實現(xiàn)與手機(jī)之間數(shù)據(jù)的傳輸,電路簡單,實用性強(qiáng),更為智能化。(2)系統(tǒng)硬件組成有藍(lán)牙模塊、STC89C52單片機(jī)、夏普GP2Y1010AUOFPM2.5傳感器、甲醛傳感器、DS1302時鐘芯片電路、蜂鳴器、LED燈等元器件,采用AD軟件對系統(tǒng)的電路進(jìn)行繪制。(3)系統(tǒng)軟件部分包括主程序設(shè)計、手機(jī)APP端的程序設(shè)計及手機(jī)APP的開發(fā)部分,單片機(jī)程序部分采用KEIL軟件,C語言編程,手機(jī)APP部分采用JAVA語言編寫。另外系統(tǒng)功能還有一些可以改善的地方,例如可在單片機(jī)部分增加空氣凈化器,如果PM2.5濃度或者甲醛濃度過高,自動啟動空氣凈化器對空氣進(jìn)行凈化。通過這次的畢業(yè)設(shè)計,也發(fā)現(xiàn)了自身的不足,應(yīng)提高自己的實踐能力,不能紙上談兵。
參考文獻(xiàn)[1]王明霞,楊秀菊,羅劉敏.基于單片機(jī)的無線室內(nèi)環(huán)境檢測儀設(shè)計[J].電腦知識與技術(shù),2018,14(11):269-270.[2]陳達(dá).基于單片機(jī)的室內(nèi)環(huán)境監(jiān)測設(shè)計[J].電子測試,2018(Z1):25-26.[3]邢凱.基于單片機(jī)的室內(nèi)無線環(huán)境監(jiān)測系統(tǒng)設(shè)計與應(yīng)用[D].廣西民族大學(xué),2014.[4]劉繽璐,王永順,閆麗紅.基于nRF905的無線環(huán)境監(jiān)測系統(tǒng)設(shè)計與實現(xiàn)[J].工業(yè)和信息化教育,2017(08):89-94.[5]甄智,陸中宏.基于STC89C52單片機(jī)的室內(nèi)環(huán)境監(jiān)測預(yù)警系統(tǒng)設(shè)計[J].工業(yè)技術(shù)與職業(yè)教育,2017,15(03):16-18.[6]陳東杰,許中石.單片機(jī)的室內(nèi)環(huán)境監(jiān)測系統(tǒng)設(shè)計探討[J].信息技術(shù)與信息化,2017(05):131-133.[7]晁松杰.基于STC89C52單片機(jī)室內(nèi)監(jiān)控系統(tǒng)設(shè)計[J].信息記錄材料,2017,18(03):5-6.[8]李智巖,劉玥,柳娟,唐瑩瑋,呂佳蓉,吳寶春.基于單片機(jī)的室內(nèi)環(huán)境監(jiān)測系統(tǒng)設(shè)計[J].信息技術(shù)與信息化,2016(12):60-62.[9]黃磊.基于單片機(jī)的室內(nèi)環(huán)境監(jiān)測系統(tǒng)的研究與應(yīng)用[J].電子世界,2016(08):74.[10]劉璋.STM32單片機(jī)在室內(nèi)環(huán)境監(jiān)測系統(tǒng)中的運(yùn)用研究[J].數(shù)字技術(shù)與應(yīng)用,2016(02):20.[11]胡曉芳.基于AVR單片機(jī)的室內(nèi)環(huán)境檢測系統(tǒng)[J].自動化技術(shù)與應(yīng)用,2014,33(07):117-119+123.[12]黎冠,馬婕,卜祥麗.STM32單片機(jī)在室內(nèi)環(huán)境監(jiān)測系統(tǒng)中的應(yīng)用[J].自動化儀表,2014,35(07):29-31.[13]許海峰,王馳駿,王德育,丁輝,張明玉.基于AVR單片機(jī)的室內(nèi)環(huán)境監(jiān)測系統(tǒng)的設(shè)計與測試[J].赤峰學(xué)院學(xué)報(自然科學(xué)版),2011,27(12):48-50.[14]于波.基于單片機(jī)的室內(nèi)環(huán)境監(jiān)測系統(tǒng)設(shè)計[D].中國海洋大學(xué),2011.[15]KyleA.O'Connell,UtpalSmart,IrvanSidik,AwalRiyanto,NiaKurniawan,EricN.Smith.Diversificationofbent-toedgeckos(Cyrtodactylus)onSumatraandwestJava[J].MolecularPhylogeneticsandEvolution,2019,134.[16]KonstantinsGusarovs.AnAnalysisonJavaProgrammingLanguageDecompilerCapabilities[J].AppliedComputerSystems,2018,23(2).[17]GirishMaskeriRama,RaghavanKomondoor,HimanshuSharma.Refinementinobject-sensitivitypoints-toanalysisviaslicing[J].ProceedingsoftheACMonProgrammingLanguages,2018,2(OOPSLA).
附錄一實物圖附錄二電路圖
附錄三程序#include<reg51.h>#include"beep.h"#include"delay.h"#include"lcd1602.h"#include"adc0832.h"#include"key.h"#include"ds1302.h"#defineucharunsignedchar#defineuintunsignedintsbitLED=P1^7;//led指示燈intPM25_up=80;//煙霧濃度上線unsignedcharPM25=0;//煙霧濃度intVOC_up=40;//VOC濃度上線unsignedcharVOC=0;//VOC濃度unsignedchardht11t_up=30;//dht11溫度上限unsignedchardht11h_up=60;//dht11濕度上限voidset_PM25(){Lcd1602_Com(0x80);Lcd1602_Data('P');Lcd1602_Data('M');Lcd1602_Data('2');Lcd1602_Data('5');Lcd1602_Data('u');Lcd1602_Data('p');Lcd1602_Data('>');Lcd1602_Data('0'+PM25_up/100);Lcd1602_Data('0'+(PM25_up%100)/10);Lcd1602_Data('0'+PM25_up%10);for(;;){//按鍵按下變量加if(key_2==0){while(key_2==0){PM25_up++;if(PM25_up>=255)PM25_up=255;Lcd1602_Com(0x87);Lcd1602_Data('0'+PM25_up/100);Lcd1602_Data('0'+(PM25_up%100)/10);Lcd1602_Data('0'+PM25_up%10);delay_10ms(10);//延時0.2s}}//按鍵按下變量減if(key_3==0){while(key_3==0){PM25_up--;if(PM25_up<=0)PM25_up=0;Lcd1602_Com(0x87);Lcd1602_Data('0'+PM25_up/100);Lcd1602_Data('0'+(PM25_up%100)/10);Lcd1602_Data('0'+PM25_up%10);delay_10ms(10);//延時0.2s}}//跳出循環(huán)if(key_4==0){while(key_4==0);Lcd1602_Com(0x86);//地址Lcd1602_Data('');break;}}}voidset_VOC(){Lcd1602_Com(0x80);Lcd1602_Data('V');Lcd1602_Data('O');Lcd1602_Data('C');Lcd1602_Data('');Lcd1602_Data('u');Lcd1602_Data('p');Lcd1602_Data('>');Lcd1602_Data('0'+VOC_up/100);Lcd1602_Data('0'+(VOC_up%100)/10);Lcd1602_Data('0'+VOC_up%10);for(;;){//按鍵按下變量加if(key_2==0){while(key_2==0){VOC_up++;if(VOC_up>=255)VOC_up=255;Lcd1602_Com(0x87);Lcd1602_Data('0'+VOC_up/100);Lcd1602_Data('0'+(VOC_up%100)/10);Lcd1602_Data('0'+VOC_up%10);delay_10ms(10);//延時0.2s}}//按鍵按下變量減if(key_3==0){while(key_3==0){VOC_up--;if(VOC_up<=0)VOC_up=0;Lcd1602_Com(0x87);Lcd1602_Data('0'+VOC_up/100);Lcd1602_Data('0'+(VOC_up%100)/10);Lcd1602_Data('0'+VOC_up%10);delay_10ms(10);//延時0.2s}}//跳出循環(huán)if(key_4==0){while(key_4==0);Lcd1602_Com(0x86);//地址Lcd1602_Data('');break;}}}voidset_value(){set_ds1302();//設(shè)置系統(tǒng)時間if(key_2==0){while(key_2==0);Lcd1602_Com(0x01);set_PM25();Lcd1602_Com(0x01);set_VOC();Lcd1602_Com(0x01);}}voiddisplay(){Lcd1602_Com(0x80);Lcd1602_Data('2');Lcd1602_Data('0');Lcd1602_Data('0'+DS1302_Time[6]/16);Lcd1602_Data('0'+(DS1302_Time[6]&0x0f));Lcd1602_Data('-');Lcd1602_Data('0'+DS1302_Time[4]/16);Lcd1602_Data('0'+(DS1302_Time[4]&0x0f));Lcd1602_Data('-');Lcd1602_Data('0'+DS1302_Time[3]/16);Lcd1602_Data('0'+(DS1302_Time[3]&0x0f));Lcd1602_Data('');Lcd1602_Data('M');Lcd1602_Data('0'+PM25/100);Lcd1602_Data('0'+PM25%100/10);Lcd1602_Data('0'+PM25%10);Lcd1602_Data('');Lcd1602_Com(0xc0);if(DS1302_Time[5]==0) //星期7在DS1302存儲是0需要轉(zhuǎn)換一下Lcd1602_Data('7');elseLcd1602_Data('0'+(DS1302_Time[5]&0x07));Lcd1602_Data('');Lcd1602_Data('0'+DS1302_Time[2]/16);Lcd1602_Data('0'+(DS1302_Time[2]&0x0f));Lcd1602_Data(':');Lcd1602_Data('0'+DS1302_Time[1]/16);Lcd1602_Data('0'+(DS1302_Time[1]&0x0f));Lcd1602_Data(':');Lcd1602_Data('0'+DS1302_Time[0]/16);Lcd1602_Data('0'+(DS1302_Time[0]&0x0f));Lcd1602_Data('');Lcd1602_Data('V');Lcd1602_Data('0'+VOC/100);Lcd1602_Data('0'+VOC%100/10);Lcd1602_Data('0'+VOC%10);Lcd1602_Data('');}voidsend_data(){// SBUF=0xf1;// while(!TI);//等待發(fā)送完成信號(TI=1)出現(xiàn)// TI=0;//SBUF=0xf0;while(!TI);//等待發(fā)送完成信號(TI=1)出現(xiàn)TI=0;SBUF=PM25;while(!TI);//等待發(fā)送完成信號(TI=1)出現(xiàn)TI=0;SBUF=VOC;while(!TI);//等待發(fā)送完成信號(TI=1)出現(xiàn)TI=0;if(PM25>PM25_up){SBUF=0x01;while(!TI);//等待發(fā)送完成信號(TI=1)出現(xiàn)TI=0;}else{SBUF=0x00;while(!TI);//等待發(fā)送完成信號(TI=1)出現(xiàn)TI=0;}if(VOC>VOC_up){SBUF=0x01;while(!TI);//等待發(fā)送完成信號(TI=1)出現(xiàn)TI=0;}else{SBUF=0x00;while(!TI);//等待發(fā)送完成信號(TI=1)出現(xiàn)TI=0;}}//報警判斷voidwarn(){//濃度超限if((PM25>PM25_up)||(VOC>VOC_up)){beep(20);}send_data();//發(fā)送數(shù)據(jù)}#definebaudrate9600UL#definefosc11059200UL//其中,UL是不能省略的,代表長整型。voidUsartConfiguration(){// SCON=0X50; //設(shè)置為工作方式1SCON=0x50;TMOD=0X21; //設(shè)置計數(shù)器工作方式2PCON=0X80; //波特率加倍TH1=256-(fosc*2)/(baudrate*12*32); //9600TL1=256-(fosc*2)/(baudrate*12*32)-1;ET0=1; //打開TO定時器TR0=1; //開啟中斷TH0=(65536-5000)/256;TL0=(65536-5000)%256;ES=1; //打開接收中斷EA=1; //打開總中斷TR1=1; //打開計數(shù)器}voidmain(){UsartConfiguration();//初始化串口和定時器Lcd1602_Init();//初始化LCD1602液晶顯示屏Buzzer=0;//蜂鳴器不響while(1){set_value();//讀取按鍵get_ds1302();//獲取DS1302獲取時間VOC=get_adc0832(0);//獲取VOC濃度if(VOC>40)VOC-=40;elseVOC=0;display();//顯示warn();//煙霧判斷delay_10ms(10); //延時200ms}}/**********定時器0中斷服務(wù)程序***************/voidtimer0(void)interrupt1{intj;// x++;TH0=(65536-8881)/256;//定時10usTL0=(65536-8881)%256;LED=0;for(j=0;j<30;j++);//延時0.28msPM25=get_adc0832(1);//開啟ADC采集// FlagStar=1;for(j=0;j<5;j++);// TR0=0;// EA=0;LED=1;//關(guān)閉傳感器LED}voidUsart()interrupt4{RI=0;//清除接收中斷標(biāo)志位}APP程序代碼:packagecom.test.BTClient;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.UUID;importcom.test.BTClient.DeviceListActivity;//importandroid.R;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.bluetooth.BluetoothAdapter;importandroid.bluetooth.BluetoothDevice;importandroid.bluetooth.BluetoothSocket;importandroid.content.DialogInterface;importandroid.content.Intent;importandroid.content.pm.ActivityInfo;importandroid.graphics.Color;importandroid.os.Bundle;importandroid.os.Environment;importandroid.os.Handler;importandroid.os.Message;importandroid.view.LayoutInflater;importandroid.view.View.OnClickListener;//importandroid.view.Menu;//如使用菜單加入此三包//importandroid.view.MenuInflater;//importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.ScrollView;importandroid.widget.SeekBar;importandroid.widget.TextView;importandroid.widget.Toast;publicclassBTClientextendsActivityimplementsOnClickListener{ privatefinalstaticintREQUEST_CONNECT_DEVICE=1;//宏定義查詢設(shè)備句柄 privatefinalstaticStringMY_UUID="00001101-0000-1000-8000-00805F9B34FB";//SPP服務(wù)UUID號 privateInputStreamis;//輸入流,用來接收藍(lán)牙數(shù)據(jù) //privateTextViewtext0;//提示欄解句柄privateEditTextedit0;//發(fā)送數(shù)據(jù)輸入句柄privateTextViewdis_1;//接收數(shù)據(jù)顯示句柄privateTextViewdis_2;//接收數(shù)據(jù)顯示句柄privateTextViewdis_3;//接收數(shù)據(jù)顯示句柄//privateScrollViewsv;//翻頁句柄privateStringsmsg="";//顯示用數(shù)據(jù)緩存privateStringfmsg="";//保存用數(shù)據(jù)緩存publicStringfilename="";//用來保存存儲的文件名BluetoothDevice_device=null;//藍(lán)牙設(shè)備BluetoothSocket_socket=null;//藍(lán)牙通信socketboolean_discoveryFinished=false;booleanbRun=true;booleanbThread=false;privateBluetoothAdapter_bluetooth=BluetoothAdapter.getDefaultAdapter();//獲取本地藍(lán)牙適配器,即藍(lán)牙設(shè)備 privateButtonbut_1; privatebyte[]tempData=newbyte[1024];//串口臨時數(shù)據(jù) charstart=0;//開始停止 intpm25_up=100;//上線 String[]values_1=newString[32];///**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);dis_2=(TextView)findViewById(R.id.textView2);//得到數(shù)據(jù)顯示句柄dis_3=(TextView)findViewById(R.id.textView3);//得到數(shù)據(jù)顯示句柄 //如果打開本地藍(lán)牙設(shè)備不成功,提示信息,結(jié)束程序if(_bluetooth==null){ Toast.makeText(this,"無法打開手機(jī)藍(lán)牙,請確認(rèn)手機(jī)是否有藍(lán)牙功能!",Toast.LENGTH_LONG).show();finish();return;}//設(shè)置設(shè)備可以被搜索newThread(){ publicvoidrun(){ if(_bluetooth.isEnabled()==false){ _bluetooth.enable(); } } }.start();}//發(fā)送按鍵響應(yīng)publicvoidonSendButtonClicked(Viewv){ inti=0; intn=0; try{ OutputStreamos=_socket.getOutputStream();//藍(lán)牙連接輸出流 //byte[]bos=edit0.getText().toString().getBytes(); byte[]bos="asdfsdfsd".getBytes();//.getBytes(); for(i=0;i<bos.length;i++){ if(bos[i]==0x0a)n++; } byte[]bos_new=newbyte[bos.length+n]; n=0; for(i=0;i<bos.length;i++){//手機(jī)中換行為0a,將其改為0d0a后再發(fā)送 if(bos[i]==0x0a){ bos_new[n]=0x0d; n++; bos_new[n]=0x0a; }else{ bos_new[n]=bos[i]; } n++; } os.write(bos_new); }catch(IOExceptione){ } }//接收活動結(jié)果,響應(yīng)startActivityForResult()publicvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ switch(requestCode){ caseREQUEST_CONNECT_DEVICE://連接結(jié)果,由DeviceListActivity設(shè)置返回 //響應(yīng)返回結(jié)果if(resultCode==Activity.RESULT_OK){//連接成功,由DeviceListActivity設(shè)置返回//MAC地址,由DeviceListActivity設(shè)置返回Stringaddress=data.getExtras().getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);//得到藍(lán)牙設(shè)備句柄_device=_bluetooth.getRemoteDevice(address);//用服務(wù)號得到sockettry{ _socket=_device.createRfcommSocketToServiceRecord(UUID.fromString(MY_UUID));}catch(IOExceptione){ Toast.makeText(this,"連接失??!",Toast.LENGTH_SHORT).show();}//連接socket Buttonbtn=(Button)findViewById(R.id.Button03);try{ _socket.connect(); Toast.makeText(this,"連接"+_device.getName()+"成功!",Toast.LENGTH_SHORT).show(); btn.setText("斷開");}catch(IOExceptione){ try{ Toast.makeText(this,"連接失??!",Toast.LENGTH_SHORT).show(); _socket.close(); _socket=null; }catch(IOExceptionee){ Toast.makeText(this,"連接失??!",Toast.LENGTH_SHORT).show(); } return;
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版人工智能技術(shù)研發(fā)合作合同
- 2024年貿(mào)易信用證結(jié)算合同3篇
- 二零二五年LED顯示屏智能廣告發(fā)布系統(tǒng)采購協(xié)議2篇
- 2025年堂式皮帶機(jī)項目可行性研究報告
- 2025版綠色環(huán)保雞舍租賃與養(yǎng)殖技術(shù)指導(dǎo)合同3篇
- 2024-2030年中國計算機(jī)輔助設(shè)計(CAD)系統(tǒng)行業(yè)發(fā)展監(jiān)測及發(fā)展趨勢預(yù)測報告
- 2025年斗桿項目可行性研究報告
- 2024石棉水泥制品制造市場前景及投資研究報告
- 【可行性報告】2024年順丁橡膠相關(guān)項目可行性研究報告
- 2024年林業(yè)科技示范樹苗研發(fā)與銷售合同3篇
- 2023四川測繪地理信息局直屬事業(yè)單位招考筆試參考題庫(共500題)答案詳解版
- 【《“雙減”背景下小學(xué)數(shù)學(xué)創(chuàng)新作業(yè)設(shè)計問題研究》(論文)】
- 健康養(yǎng)生管理系統(tǒng)
- 口風(fēng)琴在小學(xué)音樂課堂中的運(yùn)用與實踐 論文
- 塑件模具驗收報告
- 2023年9月份濟(jì)南天橋區(qū)濼口實驗中學(xué)八年級上學(xué)期語文月考試卷(含答案)
- 信號分析與處理-教學(xué)大綱
- 特許經(jīng)銷合同
- 吉林大學(xué)藥學(xué)導(dǎo)論期末考試高分題庫全集含答案
- 2023-2024學(xué)年河北省唐山市灤州市數(shù)學(xué)七年級第一學(xué)期期末教學(xué)質(zhì)量檢測模擬試題含解析
- 數(shù)字油畫課件
評論
0/150
提交評論