找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 16524|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

基于Arduino的PM2.5/10檢測儀設(shè)計報告

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:140725 發(fā)表于 2016-10-11 17:34 | 只看該作者 |只看大圖 回帖獎勵 |倒序?yàn)g覽 |閱讀模式

完整的論文下載地址:
PM2.5檢測儀設(shè)計報告.rar (4.51 MB, 下載次數(shù): 84)


-----下面是論文部分內(nèi)容的預(yù)覽-------------------------------------------------------------
PM2.5/10檢測儀設(shè)計報告
PM2.5/10 detector design report
PM2.5/10檢測儀設(shè)計誠信聲明:
本團(tuán)隊(duì)鄭重聲明:所呈交的PM2.5/10檢測儀設(shè)計,是本團(tuán)隊(duì)在指導(dǎo)老師的指導(dǎo)下,獨(dú)立進(jìn)行研究工作所取得的成果,成果不存在知識產(chǎn)權(quán)爭議,除文中已經(jīng)注明引用的內(nèi)容外,本論文不含任何其他個人或集體已經(jīng)發(fā)表或撰寫過的作品成果。對本文的研究做出重要貢獻(xiàn)的個人和集體均已在文中以明確方式標(biāo)明。本團(tuán)隊(duì)完全意識到本聲明的法律結(jié)果由本團(tuán)隊(duì)承擔(dān)。
摘要
   最近中國很多地方出現(xiàn)了嚴(yán)重的霧霾天氣,影響著人們生活的各個方面,最嚴(yán)重的危害還是對人體健康的危害。霧霾的組成十分復(fù)雜,大小有數(shù)百種顆粒物,這些顆粒物通過人體呼吸,進(jìn)入呼吸道,會引發(fā)氣管炎,哮喘等呼吸道疾病。眾所周知,吸煙的人患肺癌的幾率比普通人高60%,而霧霾里含有的有害顆粒物更多,所以霧霾比吸煙更易致癌。因此,對PM2.5/10的測量顯得越來越重要。
本設(shè)計采用Arduino unoR3 開發(fā)板為控制中心,由PM2.5激光傳感器SDS011測量空氣粉塵濃度,595驅(qū)動八位數(shù)碼管顯示當(dāng)前空氣粉塵濃度。當(dāng)空氣中粉塵濃度達(dá)到所設(shè)定限度啟動蜂鳴器自動報警,且能實(shí)時對應(yīng)顯示相應(yīng)的LED燈,直觀提醒當(dāng)前的污染級別。該系統(tǒng)電路簡單、工作穩(wěn)定、集成度高,調(diào)試方便,測試精度高,具有一定的實(shí)用價值。
Abstract
Recently, severe hazy weathers appeared in many places around China, which caused impact on eve-ry aspect of people’s life. The most dangerous threat lies in the health hazard. The composition of h-aze is very complicated, as it is consisted of hundreds of particulate matters that can be breathed into humans respiratory, which lead to many respiratory diseases such as trachitis and asthma. Howe-ver, smokers have 60% higher chances of contracting lung cancer than ordinary people, and haze also contains many other harmful particulate matters so the haze is more likely to cause cancer tha-n smoking. Therefore, the measurement of PM2.5 is becoming more and more important.
This design uses the unoR3 Arduino development board as the control center, by the PM2.5 laser sensor SDS011 measurement of air dust concentration, 595 drive eight digital tube display the current air dust concentration
When the dust concentration in the air reaches the set limit, the buzzer will start to alarm automat-ically and can display corresponding LED light at real time, visually indicating current pollution le-vel. The system has the advantages of simple circuit, stable operation, high integration, convenient debugging, and high-test accuracy and has important practical value.
目錄:
第一章:概述································································1~2
1.1設(shè)計的主要內(nèi)容和意義····································································1~2
  1.1.1設(shè)計的主要內(nèi)容  ······································································· 1
  1.1.2 設(shè)計的主要意義··········································································1~2
第二章:主控制器及主要器件····························2~6
2.1 Arduino unoR3開發(fā)板·····································································2~3
  2.2 595驅(qū)動八位數(shù)碼管········································································3~5
  2.3 PM2.5激光傳感器···········································································5~6
第三章:硬件電路設(shè)計···················································7~10
  3.1 電路設(shè)計框圖············································································7~8
3.2 PM2.5檢測儀的簡單操作································································9~10
第四章:軟件11
  4.1用到的軟件Arduino ide ·········································11
第五章: 設(shè)計主要用途及應(yīng)用的場景·································11
5.1主要用途··················································································· 11
  5.2 應(yīng)用場景 ··················································································11
第六章:應(yīng)用設(shè)計進(jìn)行的相關(guān)實(shí)驗(yàn)及結(jié)論分析····················12~16
  6.1實(shí)驗(yàn)一:公園的檢測····································································· 12
  6.2 實(shí)驗(yàn)二:路口的檢測·······································································13
  6.3實(shí)驗(yàn)三: 生活場景的檢測································································14~15
  6.4 檢測分析····················································································16
  6.5應(yīng)對做法·····················································································16
第七章:總結(jié)································································16
參考文獻(xiàn)·····························································································17
附錄:程序························································································· 17




第一章:概述
1.1、設(shè)計的主要內(nèi)容和意義
1.1.1、設(shè)計的主要內(nèi)容
本設(shè)計提出的“PM2.5,PM10監(jiān)測”的方案最基本的實(shí)現(xiàn)方法是由Arduino開發(fā)板、激光粉塵傳感器、LED燈、顯示模塊、報警器等模塊組成的電路,PM2.5/10激光傳感器SDS011采集空氣中PM2.5,PM10的濃度值,經(jīng)過Arduino unoR3開發(fā)板處理后,在595驅(qū)動八位數(shù)碼管上顯示,并且設(shè)置一個報警值,檢測的PM2.5,PM10濃度值超過報警值后,另外,該設(shè)計在實(shí)時檢測濃度的同時,根據(jù)當(dāng)前檢測濃度亮起相應(yīng)的燈,濃度范圍分別為:
PM25
濃度/μg/m3
紅色LED燈
紫色LED燈
白色LED燈
報警器
環(huán)境優(yōu)
環(huán)境良
輕度污染
重度污染
0~40
40~80
80~120
120~999
PM10
0~40
40~80
80~120
120~999
1.1.2、設(shè)計的主要意義
1PM2.5由什么組成
   PM2.5是粒徑小于2.5μm的空氣中的懸浮物。微小的可溶性固體、可溶性氣體是形成PM2.5的首要因素。例如SOx(硫的氧化物)、NOx(氮的氧化物)、xCl、xBr、xCO3等物質(zhì)形成的水的微小液滴,微小液滴和微小顆粒是形成灰霾的主要物質(zhì)。
2PM2.5來源:
PM2.5是日常發(fā)電、工業(yè)生產(chǎn)、汽車尾氣排放等過程中經(jīng)過燃燒而排放的殘留物,大多含有重金屬等有毒物質(zhì)。一般而言,粒徑2.5微米至10微米的粗顆粒物主要來自道路揚(yáng)塵等,2.5微米一下的細(xì)顆粒物主要來自化石燃料燃燒。揮發(fā)有機(jī)物。
3PM2.5的危害
氣象專家和醫(yī)學(xué)專家認(rèn)為,由細(xì)顆粒物造成的灰霾天氣對人體健康的危害甚至要比沙大粒徑10微米以上的顆粒物,會被擋在人的鼻子外面;粒徑在2.5微米至10微米之間的顆粒物,能夠進(jìn)入上呼吸道,但部分可通過痰液等排出體外,另外也會被鼻腔內(nèi)部的絨毛阻擋,對人體健康危害相對較小;而粒徑在2.5微米以下的細(xì)顆粒物,直徑不足人類頭發(fā)絲的1/20大小,不易被阻擋。被吸入人體后會直接進(jìn)入支氣管,干擾肺部的氣體交換引發(fā)包括哮喘、支氣管炎和心血管病等方面的疾病。
世界衛(wèi)生組織發(fā)布的報告顯示,無論是發(fā)達(dá)國家還是發(fā)展中國家,目前大多數(shù)城市和農(nóng)村人口均遭受到顆粒物對健康的影響。高污染城市中的死亡率超出相對清潔城市的15%至20%。據(jù)統(tǒng)計,在歐洲,PM2.5每年導(dǎo)致386000人死亡,并使歐盟國家人均期望壽命減少8.6個月。人體的生理結(jié)構(gòu)決定了對PM2.5沒有任何過濾、阻攔能力,而PM2.5對人類健康的危害卻隨著醫(yī)學(xué)技術(shù)的進(jìn)步,逐步暴露出其恐怖的一面。氣象專家和醫(yī)學(xué)專家認(rèn)為,由細(xì)顆粒物造成的灰霾天氣對人體健康的危害甚至要比沙塵暴更大。粒徑10微米以上的顆粒物,會被擋在人的鼻子外面;粒徑在2.5微米至10微米之間的顆粒物,能夠進(jìn)入上呼吸道,但部分可通過痰液等排出體外,另外也會被鼻腔內(nèi)部的絨毛阻擋,對人體健康危害相對較小;而粒徑在2.5微米以下的細(xì)顆粒物,直徑相當(dāng)于人類頭發(fā)的1/10大小,不易被阻擋。被吸入人體后會直接進(jìn)入支氣管,刺激呼吸道,干擾肺部的氣體交換,從而引發(fā)咳嗽、呼吸困難、哮喘、慢性支氣管炎等呼吸系統(tǒng)的疾病并導(dǎo)致心律不齊、非致命性心臟病等心血管方面的疾病。其中,老人、小孩以及心肺疾病患者是PM2.5污染的敏感人群。
因此,對PM2.5的監(jiān)測與治理便顯得越來越重要。
第二章:主控制器及主要器件
2.1、Arduino unoR3 開發(fā)板
1Arduino  UNO R3的介紹
Arduino  UNO R3是一款易用型開源控制器,硬件上與Arduino UNO相比并沒有大的變動,最大不同在于USB轉(zhuǎn)串口電路部分,改用的 是一塊ATMega16U2單片機(jī),由此成本也有所提高,軟件部分與之前一樣,沒有大的變化。
Arduino是一塊基于開放原始代碼的Simple i/o平臺,并且具有開發(fā)語言和開發(fā)環(huán)境都很簡單、易理解的特點(diǎn)。讓您可以快速使用Arduino做出有趣的東西。它是一個能夠用來感應(yīng)和控制現(xiàn)實(shí)物理世界的一套工具。 它由一個基于單片機(jī)并且開放源碼的硬件平臺,和一套為Arduino板編寫程序 的開發(fā)環(huán)境組成。Arduino可以用來開發(fā)交互產(chǎn)品,比如它可以讀取大量的開關(guān)和傳感器信號,并且可以控制各式各樣的電燈、電機(jī)和其他物理設(shè)備。Arduino項(xiàng)目可以是單獨(dú)的,也可以在運(yùn)行時和你電腦中運(yùn)行的程序(例如:Flash,Processing,MaxMSP)進(jìn)行通訊。
2Arduino unoR3的特性
微控制器核心:AVRmega328P-PU(處理速度可達(dá)20MIPS)
工作電壓:+5V
外部輸入電壓:+7V~+12V(建議)
外部輸入電壓(極值):+6V≤Vin≤+20V
數(shù)字信號I/O接口:14(其中6個PWM輸出接口)
模擬信號輸入接口:6
DC I/O接口電流:40 mA
Flash容量:32 KB (其他2K用于bootloader)
時鐘頻率:16MHz
3Arduino  UNO R3硬件實(shí)物圖如下
(4)工作原理圖:
2.2、595驅(qū)動八位數(shù)碼管
174HC595芯片:
74HC595是具有8位移位寄存器和一個存儲器,三態(tài)輸出功能。移位寄存器和存儲器是分別的時鐘。
數(shù)據(jù)在SHcp的上升沿輸入,在STcp的上升沿進(jìn)入的存儲寄存器中去。如果兩個
時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。移位寄存器有一個串行移位輸入(Ds),和一個串行輸出(Q7’),和一個異步的低電平復(fù)位,存儲寄存器有一個并行8位的,具備三態(tài)的總線輸出,當(dāng)使能OE時(為低電平),存儲寄存器的數(shù)據(jù)輸出到總線。
2)數(shù)碼管基本屬性:
1.采用2片 595驅(qū)動數(shù)碼管,需要 單片機(jī)3路IO口,根據(jù)數(shù)碼管動態(tài)掃描原理進(jìn)行顯示;
2.寬工作電壓3.3V到5V;
3.PCB板尺寸:71mm*22mm
4.數(shù)碼管型號:共陰
3優(yōu)點(diǎn)
    74595的主要優(yōu)點(diǎn)是具有數(shù)據(jù)存儲寄存器,在移位的過程中,輸出端的數(shù)據(jù)可以保持不變。這在串行速度慢的場合很有用處,數(shù)碼管沒有閃爍感。
4)硬件實(shí)物圖如下
(5)工作原理


6)硬件連接圖
2.3、PM2.5 激光傳感器SDS011
1工作原理
采用激光散射原理:當(dāng)激光照射到通過檢測位置的顆粒物時會產(chǎn)生微弱的光散射,在特定方向上的光散射波形與顆粒直徑有關(guān),通過不同粒徑的波形分類統(tǒng)計及換算公式可以得到不同粒徑的實(shí)時顆粒物的數(shù)量濃度,按照標(biāo)定方法得到跟官方單位統(tǒng)一的質(zhì)量濃度。
2特點(diǎn):
數(shù)據(jù)準(zhǔn)確:激光檢測,穩(wěn)定,一致性好;
響應(yīng)快速:場景變換響應(yīng)時間小于10秒;
便于集成:串口輸出(或IO口輸出可定制),自帶風(fēng)扇;
分辨率高:分辨顆粒最小直徑達(dá)0.3微米;
3技術(shù)指標(biāo):
測量輸出:PM2.5/PM10
量程:0.0-999.9微克/立方米
供電電壓:5V
最大工作電流:100mA
休眠電流:2mA
工作溫度范圍:-20-50℃
相應(yīng)時間:1秒
串口數(shù)據(jù)輸出頻率:1次/秒
顆粒物直徑分辨率:小于0.3微米
相對誤差:10%
4)硬件實(shí)物圖如下



第三章:硬件電路設(shè)計及操作
3.1、電路設(shè)計框圖3.1.1硬件設(shè)計框圖: 3.1.2軟件設(shè)計框圖:
3.1.3硬件連接圖:
3.1.4  電路原理圖:

3.2.1  PM2.5檢測儀的操作
接上電源如上圖顯示,開始檢測PM2.5/10。主要操作按鈕有3個如下
這兩個按鈕的功能是劃分PM2.5/10的質(zhì)量等級。左邊的是PM2.5,右邊的是PM10
持續(xù)按下去儀器正面的LED燈會亮,主要操作附屬光碟有示。



左上角的紅色按鈕是復(fù)位按鈕,主要用于蜂鳴器的復(fù)位。




第四章:軟件
4.1  編程軟件Arduino ide
Arduino IDE是Arduino的開放源代碼的集成開發(fā)環(huán)境,其界面友好,語法簡單以及能方便的下載程序,使得Arduino的程序開發(fā)變得非常便捷。作為一款開放源代碼的軟件,Arduino IDE也是由Java、Processing、 avr-gcc等開放源碼的軟件寫成,其另一個最大特點(diǎn)是跨平臺的兼容性,適用于Windows、Max OS X以及Linux。2011年11月30號Arduino官方正式發(fā)布了Arduino1.0版本,可以下載不同系統(tǒng)下的壓縮包,也可以在github上下載源碼重新編譯自己的IDE。
第五章:設(shè)計主要用途及應(yīng)用場景
5.1、主要用途
本設(shè)計主要可用于室內(nèi)和戶外的空氣質(zhì)量的檢測,可調(diào)節(jié)的報警濃度的設(shè)計,可用于長期檢測和提醒PM2.5和PM10的濃度。
5.2、應(yīng)用場景
辦公室空氣檢測和提醒,公共場合控?zé),空調(diào)和通風(fēng)口處監(jiān)測,氣象臺,觀測站,馬路口監(jiān)測為期排量
第六章:應(yīng)用設(shè)計進(jìn)行的相關(guān)實(shí)驗(yàn)及結(jié)論分析
6.1、實(shí)驗(yàn)一 :公園檢測

PM2.5
日期
7:00
9:00
11:00
13:00
15:00
17:00
19:00
21:00
平均值
8/10
14.0
16.6
22.7
35.3
29.5
26.8
37.6
40.5
27.875
8/11
14.4
15.8
25.4
34.2
35.0
26.7
38.0
41.1
28.825
8/12
18.5
20,8
24.9
36.5
33.6
28.9
36.5
40.6
30.0375
                                               





(單位:微克/立方米)

PM10
日期
7:00
9:00
11:00
13:00
15:00
17:00
19:00
21:00
平均值
8/10
14.8
17.5
23.9
36.8
30.6
28.2
44.5
48.4
30.6
8/11
15.4
15.7
26.7
38.2
28.9
29.1
43.2
50.5
31.0
8/12
19.5
21.2
26.2
37.1
29.4
30.3
45.8
51.6
32.6




(單位:微克/立方米)


6.2、實(shí)驗(yàn)二:路口檢測

PM25
日期
7:00
9:00
11:00
13:00
15:00
17:00
19:00
21:00
平均值
8/13
106
116
155
142
135
128
131
174
135.875
8/14
112
125
167
159
146
130
128
172
142.375
8/15
97
109
148
134
129
116
129
166
128.5
(單位:微克/立方米)

PM10
日期
7:00
9:00
11:00
13:00
15:00
17:00
19:00
21:00
平均值
8/15
153
167
243
226
167
153
168
212
186.125
8/16
147
161
219
208
173
161
174
197
180
8/17
164
169
223
210
197
160
166
206
186.875




                (單位:微克/立方米)
6.3實(shí)驗(yàn)三:常見生活場景檢測
臥室PM25
日期
7:00
9:00
11:00
13:00
15:00
17:00
19:00
21:00
平均值
8/15
14.8
19.7
24.9
26.8
34.4
24.5
33.9
40.3
27.4125
8/16
15.4
22.7
35.3
37.6
28.4
18.8
35.0
49.5
30.3375
8/17
19.5
25.4
29.5
25.8
23.2
13.9
39.5
50.9
28.4625
(單位:微克/立方米)


臥室PM10
日期/
7:00
9:00
11:00
13:00
15:00
17:00
19:00
21:00
平均值
8/15
14.8
20.7
26.2
28.2
35.7
25.4
35.6
41.5
28.5125
8/16
15.4
23.9
36.8
44.5
29.4
19.9
36.8
41.6
31.0375
8/17
19.5
26.7
30.6
27.1
23.9
13.9
41.5
52
29.4

(單位:微克/立方米)
宿舍PM25
日期
7:00
9:00
11:00
13:00
15:00
17:00
19:00
21:00
平均值
8/22
50.4
57.8
66.3
70.9
76.8
77.8
85.3
101
73.2875
8/23
55.6
60.8
66.9
70.5
82.0
75.4
86.3
124
77.6875
8/24
54.9
60.2
65.8
70.3
85.3
83.7
93.1
120
79.1625
(單位:微克/立方米)
宿舍PM10
日期
7:00
9:00
11:00
13:00
15:00
17:00
19:00
21:00
平均值
8/22
53.0
58.4
69.8
74.5
80.7
81.5
89.6
107
76.8125
8/23
60.6
63.9
70.3
74.6
93.8
79.3
90.6
130
82.8875
8/24
63.9
62.7
67.5
73.9
89.6
89.4
97.8
126
83.85
(單位:微克/立方米)




6.4、檢測分析
(1)相對于實(shí)驗(yàn)二和三,實(shí)驗(yàn)一的PM25和PM10數(shù)值明顯低很多,空氣質(zhì)量等級為優(yōu),說明在花草樹木具有凈化空氣的效果,說明了花草樹木有助于凈化空氣。
(2)相對于實(shí)驗(yàn)一和三,實(shí)驗(yàn)三的PM25和PM10數(shù)值明顯高,特別是中午和晚上的時候到達(dá)頂峰,說明是中午和晚上是下班時間引起車流的高峰期造成的。
(3)該設(shè)計在日常生活中可以用于對我們經(jīng)常處在的生活場景進(jìn)行監(jiān)測,在家里臥室的檢測數(shù)據(jù)結(jié)果是優(yōu)秀的,但在學(xué)校宿舍檢測數(shù)據(jù)明顯升高,空氣質(zhì)量為良,這是因?yàn)樗奚岬呐赃吺枪;車流量多造成的?/font>

6.5、應(yīng)對方法
1理方法:
多植樹,減少機(jī)動車的排放量,促進(jìn)清潔能源開發(fā),監(jiān)督工廠排放等
2生活應(yīng)對霧霾方法:
1、霧霾天氣少開窗,最好不出門或晨練。
2、外出戴專業(yè)防塵口罩。
3、多喝桐桔梗茶、桐參茶、桐桔梗顆粒、桔梗湯等“清肺除塵”茶飲。
4、少量補(bǔ)充維生素D。
5、飲食清淡多喝蜂蜜水.
7、盡量減少吸煙甚至不吸煙。
第七章、總結(jié)
隨著霧霾天氣的肆虐,我們有理由且必要的做一些措施來注意我們身邊空氣的PM2.5/10,而本設(shè)計這是基于這點(diǎn),應(yīng)用所學(xué)的知識,制作一個經(jīng)濟(jì),簡單,實(shí)用的多功能PM2.5/10濃度檢測儀。
在設(shè)計中PM2.5激光傳感器采集空氣中PM2.5和PM10的濃度值,經(jīng)過Arduino unoR3開發(fā)板處理后,在八位數(shù)碼管上顯示,并且設(shè)置一個報警值,檢測的PM2.5濃度值超過報警值后,蜂鳴器報警。另外,該設(shè)計在實(shí)時檢測濃度的同時,根據(jù)當(dāng)前檢測濃度亮起相應(yīng)的燈,直觀的能告知觀測者當(dāng)前的濃度。
在本設(shè)計中,需要閱讀相應(yīng)的資料才能做出設(shè)計,對于資料的應(yīng)用和學(xué)習(xí)能力是很重要,這也算是這次設(shè)計給團(tuán)隊(duì)帶來的鍛煉。
當(dāng)然在設(shè)計完成后,本著一開始設(shè)計的實(shí)用性的出發(fā)點(diǎn),進(jìn)行了三個檢測試驗(yàn),一方面檢測設(shè)計的可操作性和實(shí)用性,另一方面也是讓自己對PM2.5和PM10的產(chǎn)生有了直觀的了解。
最后很高心能夠通過團(tuán)隊(duì)的努力,運(yùn)用所學(xué)順利完成了該設(shè)計。
參考文獻(xiàn)
Arduino unoR3開發(fā)板用戶手冊
PM2.5激光傳感器用戶手冊
595驅(qū)動八位數(shù)碼管用戶手冊
Arduino程序設(shè)計基礎(chǔ)(第二版)陳呂州
Arduino編程從零開始 Simon Monk
C程序設(shè)計教程(第二版)譚浩強(qiáng)
附錄:程序
  1. const unsigned char dula[10]=
  2. {
  3.     0x3f,0x06,0x5b,0x4f,0x66,
  4.     0x6d,0x7d,0x07,0x7f,0x6f
  5. };//0到9的段碼
  6. unsigned char const wela[]=
  7. {
  8.     0xfe,0xfd,0xfb,0xf7,
  9.     0xef,0xdf,0xbf,0x7f
  10. };//1到7的位碼


  11. unsigned char location[8];
  12. unsigned int Pm25=0;//初始化P2.5
  13. unsigned int Pm10=0;//初始化P10
  14. long previousMillis = 0;// 1s的時間間隔,


  15. void jinbao()//報警模塊
  16. {
  17. int i=1500;
  18. tone(9,i);
  19. }


  20. void SendByte1(unsigned char dat)
  21. {
  22.   int CLK = 12;int SER = 11;
  23.   unsigned char i;
  24.   for(i=0;i<8;i++)
  25.    {
  26.     digitalWrite(CLK,0);
  27.     digitalWrite(SER,bitRead(dat,7-i));
  28.     digitalWrite(CLK,1);
  29.    }
  30. }

  31. void SendByte2(unsigned char x,unsigned char y)//收集PM10和PM25并且發(fā)送給sendbyte1
  32. {   
  33.     SendByte1(x);
  34.     SendByte1(y);  
  35. }
  36. void latch(void)//鎖住模塊,傳感器傳來的數(shù)據(jù)
  37. {      
  38.         int ST = 13;
  39.         digitalWrite(ST,1);
  40.         digitalWrite(ST,0);
  41. }


  42. void PM25(unsigned int v)//PM25按照個十百分離模塊
  43. {
  44.   int i;
  45.   if(v/1000)
  46.     {
  47.       location[0]=dula[v/1000%10];
  48.       location[1]=dula[v/100%10];
  49.       location[2]=dula[v/10%10];
  50.      }
  51.        else
  52.         {
  53.           if((v/100) != 0)
  54.           location[0]=dula[v/100%10];
  55.           location[1]=dula[v/10%10]|0x80;
  56.           location[2]=dula[v%10];   
  57.         }
  58.           for(i=0;i<8;i++)
  59.           {
  60.               SendByte2(wela[i],location[i]);
  61.               latch();
  62.           }
  63. }


  64. void PM10(unsigned int v)//PM10按照個十百分離模塊
  65. {

  66.   int i;
  67.   if(v/1000)
  68.     {
  69.      location[4]=dula[v/1000%10];
  70.      location[5]=dula[v/100%10];
  71.      location[6]=dula[v/10%10];
  72.      }
  73.        else
  74.         {
  75.           if((v/100) != 0)
  76.          location[4]=dula[v/100%10];
  77.          location[5]=dula[v/10%10]|0x80;
  78.          location[6]=dula[v%10];   
  79.         }
  80.           for(i=0;i<8;i++)
  81.           {
  82.               SendByte2(wela[i],location[i]);
  83.               latch();
  84.           }
  85. }
  86. void Display()//顯示模塊
  87. {
  88.   int i;
  89.   for(i=0;i<8;i++)
  90.      location[i]=0;
  91.      PM25(Pm25);
  92.      PM10(Pm10);
  93. }
  94. void serialsend()//串口數(shù)據(jù)模塊
  95. {
  96. uint8_t  mData  = 0;//無符號8位
  97. uint8_t i = 0;//無符號8位
  98. uint8_t mPkt[10] = {0};//無符號8位
  99. uint8_t  mCheck= 0;//無符號8位
  100. while (Serial.available() > 0) //串口接收到了數(shù)據(jù)
  101. {
  102.     mData = Serial.read();  //讀取發(fā)送的數(shù)據(jù)
  103.      delay(10);//延時收集數(shù)據(jù)
  104.      if(mData == 0xAA)
  105.      {
  106.         mPkt[0] =  mData;
  107.         mData = Serial.read();
  108.         delay(10);
  109.            if(mData == 0xc0)
  110.            {
  111.               mPkt[1] =  mData;
  112.               mCheck = 0;
  113.                 for(i=0;i < 6;i++)
  114.                 {
  115.                    mPkt[i+2] = Serial.read();
  116.                    mCheck += mPkt[i+2];
  117.                  }
  118.                  mPkt[8] = Serial.read();
  119.                  delay(10);
  120.                  mPkt[9] = Serial.read();
  121.                    if(mCheck == mPkt[8])//檢驗(yàn)好了
  122.                   {
  123.                   Serial.flush();
  124.                   Pm25 = mPkt[2] | (mPkt[3]<<8);
  125.                   Pm10 = mPkt[4] | (mPkt[5]<<8);
  126.                     if(Pm25 > 9999)
  127.                     Pm25 = 9999;
  128.                     if(Pm10 > 9999)
  129.                     Pm10 = 9999; //得到一個好的數(shù)據(jù)


  130. int Button = digitalRead(2); //讀到的狀態(tài)值
  131. if(Button==0)
  132. {     
  133.     delay(10);
  134.     if(Button==0)               //延時消抖處理
  135.        {
  136.           switch (Pm10/100)
  137.            {
  138.                  case 0 :digitalWrite(3,HIGH);  break;
  139.                  case 1 :digitalWrite(3,HIGH); break;
  140.                  case 2 :digitalWrite(3,HIGH); break;
  141.                  case 3 :digitalWrite(3,HIGH);break;
  142.                  case 4 :digitalWrite(4,HIGH); break;
  143.                  case 5 :digitalWrite(4,HIGH); break;
  144.                  case 6 :digitalWrite(4,HIGH); break;
  145.                  case 7 :digitalWrite(4,HIGH); break;
  146.                  case 8 :digitalWrite(5,HIGH); break;
  147.                  case 9 :digitalWrite(5,HIGH); break;
  148.                  case 10 :digitalWrite(5,HIGH); break;
  149.                  case 11 :digitalWrite(5,HIGH); break;
  150.                  default: digitalWrite(3,HIGH);digitalWrite(4,HIGH); digitalWrite(5,HIGH);jinbao();break;

  151.               }
  152.        }   
  153. }
  154. else
  155. {
  156.       digitalWrite(3,LOW);  digitalWrite(4,LOW);digitalWrite(5,LOW); digitalWrite(9,LOW);
  157. }

  158. int Button1 = digitalRead(10); //讀取的狀態(tài)值
  159. if(Button1==0)
  160. {     
  161.     delay(10);
  162.     if(Button1==0)               //延時消抖處理
  163.        {
  164.             switch (Pm25/100)
  165.             {
  166.                 case 0 :digitalWrite(8,HIGH);  break;
  167.                 case 1 :digitalWrite(8,HIGH); break;
  168.                 case 2 :digitalWrite(8,HIGH); break;
  169.                 case 3 :digitalWrite(8,HIGH);break;
  170.                 case 4 :digitalWrite(7,HIGH); break;
  171.                 case 5 :digitalWrite(7,HIGH); break;
  172.                 case 6 :digitalWrite(7,HIGH); break;
  173.                 case 7 :digitalWrite(7,HIGH); break;
  174.                 case 8 :digitalWrite(6,HIGH); break;
  175.                 case 9 :digitalWrite(6,HIGH); break;
  176.                 case 10:digitalWrite(6,HIGH); break;
  177.                 case 11 :digitalWrite(6,HIGH); break;
  178.                 default:digitalWrite(8,HIGH); digitalWrite(7,HIGH);digitalWrite(6,HIGH);jinbao(); break;

  179.                }
  180.         }
  181. }
  182. else
  183. {
  184.    digitalWrite(8,LOW);  digitalWrite(7,LOW);digitalWrite(6,LOW); digitalWrite(9,LOW);
  185. }
  186.                      }
  187.                 }     
  188.           }
  189.      }
  190. }
  191. void setup()
  192. {
  193.     pinMode(2, INPUT_PULLUP);pinMode(3,OUTPUT);pinMode(4,OUTPUT);
  194.     pinMode(5,OUTPUT);pinMode(6,OUTPUT);pinMode(7,OUTPUT);
  195.     pinMode(8,OUTPUT);pinMode(9,OUTPUT);pinMode(10, INPUT_PULLUP);
  196.     pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT);
  197.     Serial.begin(9600,SERIAL_8N1);
  198.     Display();
  199. }
  200. void loop()
  201. {
  202.   serialsend();
  203.   Display();
  204. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報

沙發(fā)
ID:151749 發(fā)表于 2016-12-2 20:20 | 只看該作者
學(xué)習(xí),看看。!51黑有你更精彩。!
回復(fù)

使用道具 舉報

板凳
ID:269827 發(fā)表于 2018-1-1 19:29 | 只看該作者
謝謝,學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表