基于單片機(jī)的汽車尾氣檢測(cè)系統(tǒng)的設(shè)計(jì)畢業(yè)論文_第1頁(yè)
基于單片機(jī)的汽車尾氣檢測(cè)系統(tǒng)的設(shè)計(jì)畢業(yè)論文_第2頁(yè)
基于單片機(jī)的汽車尾氣檢測(cè)系統(tǒng)的設(shè)計(jì)畢業(yè)論文_第3頁(yè)
基于單片機(jī)的汽車尾氣檢測(cè)系統(tǒng)的設(shè)計(jì)畢業(yè)論文_第4頁(yè)
基于單片機(jī)的汽車尾氣檢測(cè)系統(tǒng)的設(shè)計(jì)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩74頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

基于單片機(jī)的汽車尾氣檢測(cè)系統(tǒng)的設(shè)計(jì)畢業(yè)論文目錄TOC\o"1-5"\h\z\o"CurrentDocument"1緒論 1\o"CurrentDocument"1.1課題背景和研究意義 1\o"CurrentDocument"1.2課題研究容 2\o"CurrentDocument"2系統(tǒng)總體設(shè)計(jì)方案 3\o"CurrentDocument"2.1系統(tǒng)設(shè)計(jì)思路 3\o"CurrentDocument"2.2系統(tǒng)實(shí)現(xiàn)主要功能 3\o"CurrentDocument"3硬件電路設(shè)計(jì) 5\o"CurrentDocument"CO檢測(cè)模塊設(shè)計(jì) 5\o"CurrentDocument"MQ-2傳感器簡(jiǎn)介 5\o"CurrentDocument"CO檢測(cè)模塊硬件電路 6\o"CurrentDocument"PM2.5檢測(cè)模塊設(shè)計(jì) 73.2.1粉塵傳感器簡(jiǎn)介 73.2.2顆粒檢測(cè)模塊硬件電路 9\o"CurrentDocument"3.3顯示模塊設(shè)計(jì) 9\o"CurrentDocument"3.3.1顯示模塊簡(jiǎn)介 93.4.1無(wú)線發(fā)射接收模塊簡(jiǎn)介 113.4.2無(wú)線發(fā)射接收模塊硬件電路 12\o"CurrentDocument"3.5主控制電路設(shè)計(jì) 13\o"CurrentDocument"3.5.1單片機(jī)簡(jiǎn)介 133.5.2單片機(jī)外圍電路 13\o"CurrentDocument"3.6報(bào)警模塊的設(shè)計(jì) 143.7按鍵模塊的設(shè)計(jì) 14\o"CurrentDocument"3.8系統(tǒng)整體設(shè)計(jì)原理圖 15\o"CurrentDocument"4系統(tǒng)軟件設(shè)計(jì) 16\o"CurrentDocument"4.1系統(tǒng)主程序流程圖 16\o"CurrentDocument"4.2系統(tǒng)中的子程序設(shè)計(jì) 17\o"CurrentDocument"5仿真與調(diào)試 20\o"CurrentDocument"Proteus軟件簡(jiǎn)介 20\o"CurrentDocument"5.2系統(tǒng)的仿真與調(diào)試 20\o"CurrentDocument"6實(shí)物的制作與調(diào)試 22\o"CurrentDocument"6.1實(shí)物制作 22\o"CurrentDocument"6.2調(diào)試 247結(jié)論 25\o"CurrentDocument"參考文獻(xiàn) 26附錄 27701緒論課題背景和研究意義隨著我國(guó)的科技發(fā)展,汽車已經(jīng)成為居民生活中的代步必需品。然而汽車產(chǎn)業(yè)的發(fā)展在給人類生活帶來便利、提高人們的生活品質(zhì)的同時(shí),也給環(huán)境帶來了很大的危害。盡管近些年來我國(guó)頒布了相關(guān)的法律來限制廠家生產(chǎn)高排量的汽車,但是我國(guó)在限制汽車排放量制度和發(fā)達(dá)國(guó)家相比存在差距。據(jù)調(diào)查世界上污染最嚴(yán)重的10個(gè)城市中中國(guó)占去了七位,在中國(guó)大城市中的500個(gè)樣本里,僅僅有不超過1%的城市可以達(dá)到世界衛(wèi)生組織關(guān)于空氣質(zhì)量的標(biāo)準(zhǔn)。由此可見在城市建設(shè)的步伐加快的同時(shí),城市污染也隨之出現(xiàn)。高樓的拔地而起,空氣的流速變得遲緩。這些致使汽車排出的有害氣體和顆粒物變得更難通過空氣流通而消散開來?,F(xiàn)代社會(huì)人類在提高生產(chǎn)效率的同時(shí)也不忘關(guān)注自身的健康狀況,生活中汽車尾氣無(wú)節(jié)制的排放給人體帶來了許多傷害。在高速收費(fèi)站工作人員所吸入的CO濃度的量比在其他崗位的工作人員要高出近90%。汽車尾氣中的CO與血紅蛋白的結(jié)合率高于血紅蛋白與氧氣的結(jié)合率,CO氣體無(wú)色無(wú)味,人類如果不用特殊的方式是無(wú)法察覺到它的存在,人體吸收了從汽車尾氣排放出的CO后,人類的大腦和器臟會(huì)出現(xiàn)缺氧狀態(tài),隨著血液攜帶氧氣能力的降低,人體心臟出現(xiàn)不適。尤其是對(duì)那些本來就有心臟病史的患者,高濃度的CO可以使其動(dòng)脈血管的血液流動(dòng)壓力加大,增大了心臟病的發(fā)病率;擁有強(qiáng)健體魄的人吸入過量的co后也會(huì)出現(xiàn)頭暈,惡心,無(wú)力,反應(yīng)遲緩等癥狀,也有人因此丟掉性命。汽車尾氣中還有可吸入顆粒物,這些可吸入顆粒物的直徑小于2.5mm,還不及頭發(fā)直徑的0.05倍。顆粒物的直徑小于等于10mm時(shí)就可以被吸入肺部,也稱之為可肺入顆粒物。由于它在大氣中滯留時(shí)間長(zhǎng),不僅使室外能見度降低,而且部含有大量的有毒致癌物,被人體的肺部吸入后,致使肺部環(huán)境被破壞,隨著肺部粘液的增加,會(huì)出現(xiàn)哮喘,支氣管肺炎,慢性支氣管炎等疾病。因此,治理汽車尾氣排放迫在眉睫。治理汽車尾氣排放基本方法是工況法,國(guó)際上一直在頒布新汽車排放法規(guī)來約束廠商,中國(guó)也積極通過頒布最新國(guó)五汽車尾氣排放標(biāo)準(zhǔn)法對(duì)汽車廠商和用戶進(jìn)行約束。這些法規(guī)在推動(dòng)技術(shù)革新的同時(shí),也能保證我們的生活質(zhì)量。在國(guó)五排放法頒布后,中國(guó)提出關(guān)于大氣污染防治工作意見,根據(jù)這些意見市自2013年2月1日起,經(jīng)國(guó)務(wù)院批準(zhǔn)成為國(guó)首個(gè)使用國(guó)五標(biāo)準(zhǔn)燃油的地區(qū),那些不符合標(biāo)準(zhǔn)的輕型汽油車,自3月1日起要停止銷售和注冊(cè),從而減少排放多項(xiàng)氣體污染物。自國(guó)四到國(guó)五對(duì)PM2.5排放量削減要求提高,原來97號(hào)、93號(hào)、90號(hào)汽油牌號(hào)改為現(xiàn)用95號(hào)、92號(hào)、89號(hào)汽油牌號(hào)。發(fā)達(dá)國(guó)家以美國(guó)為代表推行世界上公認(rèn)的控制汽車排放的I/M(檢查/維護(hù))制度,強(qiáng)制汽車進(jìn)行定期尾氣排放檢測(cè),不合格的車輛在一定時(shí)間,由指定維修網(wǎng)點(diǎn)進(jìn)行有針對(duì)性維護(hù),在汽車尾氣排放量合格后才能上路行駛。我國(guó)雖然也實(shí)行了相關(guān)法令,有不少高檔汽車自帶尾氣檢測(cè)裝置,然而這些裝置或是直接嵌入汽車部,或是直接作用于發(fā)動(dòng)機(jī)與汽車底板之間,增大了汽車成本,導(dǎo)致有些汽車價(jià)位頗高。中低檔汽車自帶的尾氣檢測(cè)裝置不夠先進(jìn),不能在汽車隨時(shí)顯示汽車尾氣中有害氣體的濃度,也不能夠及時(shí)提醒駕駛員去特定部門維修汽車。所以研發(fā)一款可以進(jìn)行實(shí)時(shí)檢測(cè),可以對(duì)用戶起到警示環(huán)保作用,價(jià)格便宜的小型便攜式汽車尾氣檢測(cè)系統(tǒng)是非常有意義的。1.2課題研究容本課題研究容為以單片機(jī)(STC12C5A60S2)為主控制器對(duì)汽車中CO濃度和PM2.5的濃度進(jìn)行檢測(cè),在檢測(cè)濃度超過閾值時(shí)通過無(wú)線收發(fā)模塊報(bào)警。具體研究容:對(duì)常見的汽車尾氣中有害氣體的檢測(cè),其中主要是針對(duì)CO氣體的檢測(cè);對(duì)固體顆粒物的檢測(cè),采用夏普二代粉塵傳感器來檢測(cè)汽車尾汽排放中的焦油等顆料物;主控制器對(duì)采集的數(shù)據(jù)進(jìn)行處理,并與系統(tǒng)設(shè)定閾值比較;主控單片機(jī)和報(bào)警單片機(jī)之間通過無(wú)線模塊通訊,實(shí)現(xiàn)系統(tǒng)超標(biāo)報(bào)警功能,在仿真中該功能使用串口方式實(shí)現(xiàn);使用顯示模塊對(duì)汽車尾氣中的CO和PM2.5的濃度進(jìn)行實(shí)時(shí)顯示,用戶可隨時(shí)查看。系統(tǒng)總體設(shè)計(jì)方案2.1系統(tǒng)設(shè)計(jì)思路本課題主要研究基于單片機(jī)原理的汽車排放物檢測(cè)系統(tǒng)。該系統(tǒng)是將單片機(jī)控制技術(shù)、傳感器檢測(cè)技術(shù)和無(wú)線通信技術(shù)相結(jié)合,開發(fā)一個(gè)簡(jiǎn)便實(shí)時(shí)的氣體檢測(cè)系統(tǒng)。通過應(yīng)用單片機(jī)對(duì)有害氣體傳感器、粉塵傳感器進(jìn)行控制,實(shí)現(xiàn)采集汽車排放氣體中有害氣體co和PM2.5的濃度值。主控制單片機(jī)將采集數(shù)值讀入后在單片機(jī)進(jìn)行準(zhǔn)確的轉(zhuǎn)換(A/D)。由液晶屏顯示當(dāng)前檢測(cè)值的濃度,這樣檢測(cè)裝置實(shí)時(shí)性的特點(diǎn)就顯現(xiàn)出來。單片機(jī)檢測(cè)當(dāng)前濃度值超過之前設(shè)定閾值時(shí),蜂鳴器和LED同時(shí)產(chǎn)生報(bào)警,并通過無(wú)線模塊將信號(hào)傳到遠(yuǎn)端,從而使車主或監(jiān)管部分能及時(shí)得到相關(guān)情況,做出相關(guān)處理。根據(jù)本設(shè)計(jì)原理,繪出總體結(jié)構(gòu)設(shè)計(jì)框圖如圖2-1所示。1.數(shù)據(jù)采集模塊 2.報(bào)警模塊圖2-1總體結(jié)構(gòu)框圖設(shè)計(jì)實(shí)現(xiàn)主要功能系統(tǒng)從整體看可分為數(shù)據(jù)采集端和報(bào)警端兩大部分。數(shù)據(jù)信號(hào)采集控制端設(shè)計(jì)有顯示模塊、傳感器檢測(cè)模塊、單片機(jī)最小系統(tǒng)模塊、按鍵選擇模塊、電源模塊1、無(wú)線發(fā)射模塊。報(bào)警端設(shè)計(jì)包括蜂鳴器模塊、LED指示模塊、無(wú)線接收模塊、電源模塊2。以下分別對(duì)每個(gè)設(shè)計(jì)模塊實(shí)現(xiàn)主要功能進(jìn)行介紹。顯示模塊:采用LCD1602液晶顯示屏顯示當(dāng)前檢測(cè)氣體濃度值。傳感器檢測(cè)模塊:采用MQ-2氣體傳感器檢測(cè)以CO為主的有害汽車尾氣,用GP2Y1050AU0F粉塵傳感器檢測(cè)排放尾氣中PM2.5固體顆粒物。單片機(jī)最小系統(tǒng)模塊:?jiǎn)纹瑱C(jī)外圍電路時(shí)鐘和復(fù)位,自帶掉電保存功能。按鍵選擇模塊:采用LCD1602液晶顯示屏和按鍵相結(jié)合實(shí)現(xiàn)對(duì)PM2.5和CO濃度閾值設(shè)置,其中共有三個(gè)按鍵一個(gè)增值按鍵一個(gè)減值按鍵,一個(gè)選擇按鍵。電源模塊:電源模塊1和電源模塊2相同,分別由電池盒或USB提供5v電壓,由AMS1117-3.3給NRF24L01無(wú)線發(fā)射、無(wú)線接收端提供3.3v。無(wú)線收發(fā)模塊:采用NRF24L01無(wú)線模塊進(jìn)行報(bào)警信號(hào)的無(wú)線傳輸。報(bào)警模塊:通過LED燈和蜂鳴器實(shí)現(xiàn)聲光報(bào)警,采用按鍵開關(guān)來控制是否開報(bào)警,在報(bào)警開時(shí)具有取消報(bào)警功能。硬件電路設(shè)計(jì)CO檢測(cè)模塊設(shè)計(jì)MQ-2傳感器簡(jiǎn)介設(shè)計(jì)中采用MQ-2傳感器檢測(cè)CO濃度,此傳感器具有靈敏度高、響應(yīng)恢復(fù)迅速、探測(cè)圍廣、穩(wěn)定性能好、使用壽命長(zhǎng)、驅(qū)動(dòng)電路簡(jiǎn)單等特點(diǎn),適用于工廠或家庭的氣體檢測(cè)。MQ-2傳感器對(duì)適用場(chǎng)所的氧氣有一定要求,檢測(cè)場(chǎng)所氧氣濃度不能小于2%或大于21%,在這個(gè)圍該傳感器靈敏度特性會(huì)受到影響。它對(duì)檢測(cè)場(chǎng)所的溫度也有要求,在-10攝氏度到50攝氏度之間均可以正常使用,對(duì)檢測(cè)場(chǎng)所的溫度有要求是因?yàn)槠洳坑锌梢赃M(jìn)行調(diào)節(jié)的負(fù)載電阻,正常工作溫度下,此傳感器加熱電阻阻值在31Q左右,其部加熱電阻功耗小于等于900mW,它部回路標(biāo)準(zhǔn)工作電壓(AC或DC)在小于等于15V圍,其部加熱電壓(AC或DC)在5.0V±0.2V的圍。MQ-2傳感器可以對(duì)甲烷、丙烷、丁烷、液化氣、酒精等物質(zhì)進(jìn)行檢測(cè),因?yàn)榇嗽O(shè)計(jì)中只使用到其對(duì)CO濃度檢測(cè)的功能,所以其他氣體為無(wú)關(guān)項(xiàng)。選擇此傳感器對(duì)CO進(jìn)行檢測(cè),還因?yàn)樗鼘?duì)CO濃度探測(cè)圍在100PPM-1000PPM之間。靈敏度特性曲線如圖3-1所示,曲線圖中當(dāng)溫度為20°C時(shí),MQ-2傳感器中電阻值RL為5Q,RS電阻在不同氣體濃度相同或同一氣體濃度不同情況下電阻值不同。MQ-2傳感器敏感層、金屬測(cè)量電極、鎳合金加熱器等部件在一個(gè)不銹鋼腔里被

圖3-2MQ-2傳感器結(jié)構(gòu)圖A圖3-3MQ-2傳感器結(jié)構(gòu)圖B3.1.2.CO檢測(cè)模塊硬件電路MQ-2模塊被封裝后一共有四個(gè)接口,分別為Vcc大小為5v、GND、輸出數(shù)字開關(guān)接口,輸出模擬量接口。MQ-2模塊用于檢測(cè)CO濃度。MQ-2模塊與單片機(jī)接線設(shè)計(jì)如圖3-4所示圖3-4MQ-2模塊與單片機(jī)接線圖3.2PM2.5檢測(cè)模塊設(shè)計(jì)3.2.1粉塵傳感器簡(jiǎn)介汽車排放尾氣中PM固體顆粒物是產(chǎn)生霧霾的主要原因之一,本設(shè)計(jì)只對(duì)PM2.5固體顆粒物進(jìn)行檢測(cè)。PM2.5固體顆粒物本質(zhì)上和粉塵基本相似,故采用GP2Y1050AUOF型粉塵傳感器檢測(cè)汽車尾氣中PM2.5固體顆粒物濃度。粉塵傳感器屬于高能傳感器,它具有靈敏度高,體積小,安裝簡(jiǎn)便等特點(diǎn)。因?yàn)檫@些優(yōu)點(diǎn)該傳感器在空氣凈化器市場(chǎng)中得到廣泛應(yīng)用。粉塵傳感器使用激光散射原理,其電壓輸出是由粉塵顆粒物在散射光進(jìn)入光接受元件產(chǎn)生。圖3-5檢測(cè)粉塵顆粒物示意圖GP2Y1050AUOF粉塵傳感器部回路圖如圖3-6所示。

設(shè)計(jì)中用到粉塵傳感器的電源、接地、串口輸入和串口輸出,其中串口輸出參數(shù)和輸出的數(shù)據(jù)協(xié)議如下:波特率為2400bit/s;發(fā)送一個(gè)字節(jié)所用時(shí)間為10ms,一共發(fā)送七個(gè)字節(jié),校驗(yàn)位=Vout(H)+Vout(L)+Vref(H)+Vref(L)數(shù)據(jù)發(fā)送的格式如表3-1所示:表3-1數(shù)據(jù)發(fā)送的格式起始位Vout(H)Vout(L)Vref(H)Vref(L)校驗(yàn)位結(jié)束位0x010x010xe00x000x7a0x5b0xff數(shù)據(jù)處理:接收到數(shù)據(jù)后按公式計(jì)算得到Vo的值:Vo=(Vout(H)*256+Vout(L))/1024*5;Vo相當(dāng)于圖中的串口輸出值。得到Vo的數(shù)值后,乘以系數(shù)K即可得到灰塵濃度值:灰塵濃度=K*Vo,電壓值Vo與粉塵濃度值的線性換算關(guān)系如圖3-7所示:圖3-7粉塵濃度值和傳感器電壓值Vo之間線性換算關(guān)系圖3.2.2顆粒檢測(cè)模塊硬件電路對(duì)PM2.5顆粒物進(jìn)行檢測(cè)用到四個(gè)接口,分別為GND接地、VCC接5v,傳感器的RXD與單片機(jī)TXD接口相連、傳感器的TXD與單片機(jī)的RXD相連。P31P31?3C圖3-8PM2.5顆粒物模塊硬件原理設(shè)計(jì)圖3.3顯示模塊設(shè)計(jì)3.3.1顯示模塊簡(jiǎn)介L(zhǎng)CD1602液晶顯示屏是字符型顯示屏模塊,顯示容量為16x2個(gè)字符,專門用于對(duì)字母數(shù)字等點(diǎn)陣型顯示,但不能顯示圖形。該模塊的工作電流為2.0mA,最佳工作電壓為5.0v。顯示屏對(duì)比度可以調(diào)節(jié),顯示模塊提供光標(biāo)閃爍與清屏等指令。外形尺寸如圖3-9

圖3-9顯示模塊外形尺寸圖表3-2器件引腳引腳號(hào)引腳名電平輸入/輸出作用1GND電源地2Vcc電源(+5v)3Vee對(duì)比調(diào)整電壓4Rs0/1輸入0=輸入指令1=輸入數(shù)據(jù)5R/W0/1輸入0=向LCD寫入指令或數(shù)據(jù)1=從LCD讀取信息6E1,1—0輸入使能信號(hào),1時(shí)讀取信息,1—(下降沿)執(zhí)行指令7DB00/1輸入/輸出數(shù)據(jù)總線line0(最低位)8DB10/1輸入/輸出數(shù)據(jù)總線line19DB20/1輸入/輸出line210DB30/1輸入/輸出line311DB40/1輸入/輸出line412DB50/1輸入/輸出line513DB60/1輸入/輸出line614DB70/1輸入/輸出line7(最高位)15A+VccLCD背光電源正極16K接地LCD背光電源負(fù)極

3.3.2顯示模塊硬件設(shè)計(jì)液晶顯示屏的引腳7到引腳15分別與單片機(jī)P0.0接口至P0.7接口相連,引

腳6與單片機(jī)的P2.7接口相連,引腳5與單片機(jī)的P2.6接口相連,引腳4與單片

機(jī)的P2.5接口相連,引腳2接5V電源,引腳1接地,引腳3(V0)接滑動(dòng)變阻器。顯示模塊與單片機(jī)硬件接線圖如圖3-10所示:|車|車51JJ=一L|液晶顯不ijm圖3-10液晶顯示屏與單片機(jī)的硬件接線圖3.4無(wú)線發(fā)射接收模塊設(shè)計(jì)3.4.1無(wú)線發(fā)射接收模塊簡(jiǎn)介NRF24L01無(wú)線發(fā)射接收芯片如圖3-11所示:vssLADDVI4)惴、1虹「期固迴叵叵nRF2^.H1QFN2O4k4nRF2^.H1QFN2O4k4加4MISN5[KO \l旳 vssXC2\n圖3-11無(wú)線收發(fā)芯片圖NRF24L01芯片引腳說明如表3-3所示:表33NRF24L01芯片引腳說明引腳引腳功能1、2、3、4數(shù)字輸入5、6數(shù)字輸出7、8、14、15、17、18、20電源9模擬輸出10、16模擬輸入11、19電源輸出12、13天線NRF24L01型無(wú)線收發(fā)模塊屬于單片射頻收發(fā)型元件,廠家設(shè)定的波特率初始值為9600HZ,在后期使用中還可以在2400HZ-2500HZ之間選擇,無(wú)線發(fā)射中工作電流為9mA。元件置晶振、有功率放大器等,在單片機(jī)控制此無(wú)線芯片的程序中可以對(duì)通信頻道等進(jìn)行設(shè)置。該芯片還有掉電模式與空閑模式兩種低功率工作模式,使用時(shí)可選擇工作模式進(jìn)行工作,達(dá)到節(jié)能的目的。3.4.2無(wú)線發(fā)射接收模塊硬件電路NRF24L01發(fā)送模塊硬件接線圖、接收模塊硬件圖設(shè)計(jì)如圖3-12所示Pl.O.TvccPl^l.TPl.O.TvccPl^l.TPL1DOO鞏VW.lPl=4POJ.PIJ:P^JPl5P04Fl=7PC5R2TVPDM.SP0.7P3.0.RXD甌VPPP31TXDP33/INTOjULE.progm.SSfT3KENPJ3.4TOP3-5.T1R2_7P3-5.WKP±t5P33RDP25^TJLLlM4P2_2P2_lP20Pl>sPl^7■4-3DPC-137=P:.535PC-454EK)5汩PC.氏PC-731■_52Ere2-P25P23□5P2J4曲31P£2竝PF121P2Dt圖3-12NRF24L01發(fā)送接受模塊硬件接線圖通過無(wú)線發(fā)射模塊發(fā)出報(bào)警信號(hào),在報(bào)警端接收?qǐng)?bào)警信號(hào)。因?yàn)镹RF24L01模塊所需電壓為3.3V,在電路中只有5V電壓,所以需要一個(gè)AMS1117-3.3電壓轉(zhuǎn)換模塊。該模塊有一個(gè)輸入兩個(gè)輸出端,圖中電容C6和C7大小均為0.1UF,可以增強(qiáng)系統(tǒng)抗擾能力。由此將5V電壓信號(hào)轉(zhuǎn)換為3.3V,給無(wú)線模塊供電。3.5主控制電路設(shè)計(jì)3.5.1單片機(jī)簡(jiǎn)介STC12C5A60S2系列單片機(jī)部含有CPU、Flash、SRAM、定時(shí)/計(jì)數(shù)、UART串口、I/O接口、高速A/D轉(zhuǎn)換、PI接口、CA看門狗等功能單片機(jī)工作電壓在3.5v-5.5v之間,工作頻率在0-35MHZ,普通單片機(jī)的工作頻率在0-420MHZ。用戶在下載程序時(shí)可選用部R/C或外部晶體/時(shí)鐘。常溫下單片機(jī)的部電壓為5v,單片機(jī)晶振在11MHZ-17MHZ之間。這款單片機(jī)中有兩路可接PWM波的接口,可編程計(jì)數(shù)器也有兩路接口,單片機(jī)中含有兩路定時(shí)器,兩路外部中斷。本設(shè)計(jì)運(yùn)用到單片機(jī)自帶精度達(dá)十位的A/D轉(zhuǎn)換功能,在使用轉(zhuǎn)換功能時(shí),轉(zhuǎn)換速度可達(dá)到250k/s。單片機(jī)現(xiàn)有I/O接口還可外接擴(kuò)展,用戶可使用單片機(jī)的第二串口。CIXOUT2/ADCO/P1.0匚二ADC1P1.1匚二CIXOUT2/ADCO/P1.0匚二ADC1P1.1匚二RxD2<ECKADC2/P1.2I T?cD2.rCPP0/ADC3zP13匚SS.CPPIADC4;P14=MOSDADC5.P1.5CZMISO/ADC5/P16匸SCLK/ADC齊皿7U P47/RSTU1NTRxD.PSGIZZTxD/PS.l匚INT0P3.2匚二D?Ti/P3.3I—CLKOUTO.iXTTO.PS4UCLKOUT1/INT.TLP3.5UWR-P3石URD/P3.7匸XTAL2CZXTAL1UGndUI特13141618192040393E37363534323130292527262524232221二□mo—ip€11PC2ZZIP03ZZIP04—IP05ZZIPO.71EX_LW/P4.6/RST2二IAL0P43—1NAP44 IP27/A15二ZZIP2.5ZABTT1P24A12Z^P2.3/A11二IP227UQZZIP2.1/A9二P2Q仇g圖3-13單片機(jī)引腳圖3.5.2單片機(jī)外圍電路在圖3-14中Header4為供單片機(jī)下載程序和PM2.5濃度數(shù)據(jù)進(jìn)行串口調(diào)試的排針,圖中使用S2按鍵起復(fù)位作用,圖中C8瓷片電容用于過濾高頻波,利用高頻信號(hào)不會(huì)通過電容的原理去除干擾。

:PW4

PMH:T"Epad亍FLST9P3OLC:PW4

PMH:T"Epad亍FLST9P3OLC帀1LIP3313^3414P3515mo-tm.i/rvccPLQPO.-DPL3I?L.4POlPL.5POJPL0PQ4mnIX>j5PO.I5M.T.V3HDno7P3.Q.RXDeIt^EELp?3-um:MATOF3-5.TIpi0wxK.7.KDXTjUL.1XTJUL1STCE3C51TLC~r~S^廠112V<jtcV<4C-KWD1滬JEPjc3£P(guān)CVJ6MG33PZ^4MSPd32P0731-■—2062SfPJ27PJE3EA25PA2*1=-jji曲Q.Z2PJ21P;pEAVPPP-3-EJJP2_7P2GP2_5P2_4rmKL2P2_lRO圖3-14主控電路硬件接線圖3.6報(bào)警電路的設(shè)計(jì)報(bào)警部分主要由STC12C5A60S2芯片控制,當(dāng)按下開啟報(bào)警鍵后,達(dá)到報(bào)警條件系統(tǒng)就會(huì)產(chǎn)生聲光報(bào)警。其報(bào)警部分電路圖如圖3-15所示。尸1K\兀1尸1K\兀1jFL4Ffenfer4 -r?=ao?Plfl1PH2PJ23PE4PI-5P156P1?“PI7SV{RST9PMiLOPM1P52口??L3PMMVP跖15P跖Lti■rPhV■-■I.AL1SXTALW20LFl.OTPl.bTPl.2FI3PUPL5Pl.flPL7RSTATOP30RXDKl-TTOpj.i-ETcPjifoTP24TD円自生P36-WP3.7TOXTAL2XTOJGni瑰哉fE氏PC.FCP&.W.EXVPPALE^DGEL?P2.fiP2.5P2.4P2.3K.2P2.1H.0-不足以驅(qū)動(dòng)按鍵模塊包不足以驅(qū)動(dòng)按鍵模塊包圖3-15報(bào)警電路圖上圖中,Q3為PNP型三極管,單片機(jī)的I/O口電流只有幾個(gè)毫安,蜂鳴器發(fā)聲,故加一個(gè)三極管進(jìn)行電流放大,從而驅(qū)動(dòng)蜂鳴器發(fā)聲。3.7按鍵模塊的設(shè)計(jì)三個(gè)按鍵依次與單片機(jī)的P1.5至P1.7引腳相連,用于設(shè)定閾值,

括選擇按鍵、增值鍵和減值鍵。用戶可以通過按下選擇按鍵選擇設(shè)置CO濃度或PM2.5

濃度閾值。這個(gè)按鍵在按第一下時(shí)進(jìn)入選擇界面,接著按下增值鍵或減值按鍵可設(shè)

置CO濃度的閾值;第二次按下選擇按鍵后用戶通過按下增值鍵或減值鍵設(shè)定PM2.5

濃度的閾值;第三次按下選擇按鍵,系統(tǒng)保存閾值返回實(shí)時(shí)檢測(cè)PM2.5和CO濃度的界面。PIOLpl.it:PL.LIPL-2 KLDPLJ KLLPL.4 PDL2PLJ KUSPL.CI KL4PL.7 ML3BSTXTD KL7+>TPU2PU3Pl::43SPH和芹1PW5-3-7K-?Pip53SR-3r-'Pit-35K4Fry?pri3+PH3JPS-51932呼P3P1。P3l.TKDP3 ALXTKMP3a-fmP3470pm K7P3也五 K?5P3 K531卜FKl]L曲j2廠—I-應(yīng)1Jc^-P莎)4P沾J5ItR1JP笑j5廠|27P2&16P1523P2+:扛耳TTAU K3TTAI.1 K3KIGnd KD24P2J13K221R1L2LP2->1—STCLKW血—1—圖3-16按鍵接線圖3.8系統(tǒng)整體設(shè)計(jì)原理圖圖3-17整體原理圖系統(tǒng)軟件設(shè)計(jì)系統(tǒng)主程序流程圖主控單片機(jī)的硬件初始化包括讀取CO和PM2.5數(shù)據(jù)值,裝置通電后無(wú)線發(fā)送模塊與無(wú)線接收模塊可正常使用,這時(shí)開機(jī)顯示屏顯示NRF24L01OK字樣,進(jìn)行按鍵掃描查看系統(tǒng)是否進(jìn)入閾值設(shè)定界面,報(bào)警端系統(tǒng)開關(guān)打開,同時(shí)可對(duì)CO的濃度值和PM2.5的濃度值進(jìn)行設(shè)定,在設(shè)定閾值時(shí)根據(jù)先按增值鍵還是減值按鍵來選擇進(jìn)入相關(guān)程序,按下選擇鍵完成閾值的設(shè)定。數(shù)據(jù)采集處理顯示當(dāng)前CO傳感器檢測(cè)到濃度值和PM2.5傳感器檢測(cè)到濃度值。如果沒有檢測(cè)到按鍵被按動(dòng),系統(tǒng)就直接進(jìn)入數(shù)據(jù)采集處理顯示,當(dāng)檢測(cè)到汽車尾氣中CO或PM2.5濃度超標(biāo),系統(tǒng)通過無(wú)線發(fā)送報(bào)警信號(hào),之后返回按鍵掃描。

報(bào)警端主程序流程圖:圖4-2主程序控制流程圖系統(tǒng)中的子程序設(shè)計(jì)1.顯示子程序圖4-3顯示程序流程圖2.檢測(cè)PM2.5濃度值子程序3.檢測(cè)MQ-2濃度子程序4.中斷調(diào)用子程序圖中的中斷程序運(yùn)用在按鍵設(shè)定濃度閾值,調(diào)用按鍵選擇子程序的過程中,產(chǎn)生報(bào)警需要調(diào)用報(bào)警子程序,在系統(tǒng)顯示濃度數(shù)值時(shí)也會(huì)調(diào)用顯示相關(guān)的子程序。這些過程中都用到含有調(diào)用子程序的指令程序,系統(tǒng)在調(diào)用子程序前產(chǎn)生中斷,在調(diào)用子程序后執(zhí)行相關(guān)子程序。在裝置啟動(dòng)時(shí)和復(fù)位后主控單片機(jī)都會(huì)進(jìn)入含有初始化的中斷,在外部中斷或定時(shí)器中斷被響應(yīng)時(shí),程序會(huì)自動(dòng)跳入相關(guān)所需的中斷程序,在中斷結(jié)束后退出中斷程序,返回之前程序運(yùn)行的狀態(tài)。中斷流程圖如圖4-8所示。

仿真與調(diào)試Proteus軟件簡(jiǎn)介Proteus軟件是一款EDA工具,它不但有EDA仿真工具功能,還可以仿真CPU及外圍電路。這是最好的微控制器和外圍設(shè)備的仿真工具。本設(shè)計(jì)使用到這款軟件中的繪制原理圖、原理圖一鍵轉(zhuǎn)換為PCB圖、調(diào)試單片機(jī)和外圍電路的功能,這款軟件還支持8051、HC11、PIC型單片機(jī)和DsPIC33高性能數(shù)字控制器等控制器的使用。并且支持keil等相關(guān)軟件編譯。系統(tǒng)的仿真與調(diào)試使用protuse軟件設(shè)計(jì)仿真電路模型并進(jìn)行系統(tǒng)仿真,如圖5-1所示:圖5-1仿真電路圖仿真圖中采用串口代替實(shí)物中NRF24L01無(wú)線傳輸功能,在圖中使用兩個(gè)虛擬終端(VT1和VT2),虛擬接線端有四個(gè)端口,這里只用到數(shù)據(jù)接收端(RXD)oVTl上顯示主控采集端的單片機(jī)經(jīng)過串口給報(bào)警端發(fā)送數(shù)據(jù),VT2顯示報(bào)警端接受從主控采集端經(jīng)過串口所發(fā)送來的數(shù)據(jù)。VT1連接在主控采集端單片機(jī)的P3.1接線端,VT2的數(shù)據(jù)接收端連在報(bào)警端單片機(jī)的P3.0接線端。主控采集端通過按鍵模塊設(shè)置報(bào)警值,報(bào)警端接收?qǐng)?bào)警信號(hào),報(bào)警端有一個(gè)開關(guān)用戶需要時(shí)可打開,不需要報(bào)警時(shí)就關(guān)閉,此時(shí)用戶只能通過LCD1602顯示屏觀測(cè)CO和PM2.5濃度數(shù)值,沒有聲光報(bào)警功能。用戶也可以在通過報(bào)警聲得知有氣體超標(biāo)時(shí)可以取消報(bào)警聲。仿真中使用兩個(gè)滑動(dòng)變阻器分別代替了MQ-2傳感器和GP2Y1050型粉塵傳感器的功能,還使用兩個(gè)虛擬交流電壓表來觀測(cè)不斷改變的電壓大小,使模擬傳感器檢測(cè)氣體數(shù)值觀測(cè)更直觀。6實(shí)物的制作與調(diào)試6.1實(shí)物制作3)當(dāng)系統(tǒng)中CO濃度超標(biāo)時(shí)實(shí)物狀態(tài)如圖6-3所示圖6-3CO濃度超標(biāo)實(shí)物狀態(tài)圖4)系統(tǒng)在設(shè)置閾值界面如圖6-4所示6.2調(diào)試在焊接好硬件電路后仔細(xì)檢查電路,查看電路是否有虛焊和漏焊的情況。采用分塊調(diào)試的方法對(duì)電路中的每一個(gè)模塊分別進(jìn)行調(diào)試,最后再進(jìn)行整體調(diào)試。在焊接調(diào)試過程中遇到問題與解決方法:焊接過程中,電壓轉(zhuǎn)換環(huán)節(jié)出問題,導(dǎo)致AMS1117-3.3芯片燒壞,無(wú)線發(fā)射模塊沒有被供電,沒有將報(bào)警信號(hào)發(fā)出去,檢查電路后發(fā)現(xiàn)電容大小的選擇有問題,電容值太小導(dǎo)致在電路中幾乎沒起作用。電容更換后,系統(tǒng)可以正常工作。調(diào)試過程中檢查硬件是否有虛焊漏焊的方法是對(duì)硬件電路逐一進(jìn)行測(cè)試,在單片機(jī)的輸出管腳測(cè)試;在每一個(gè)元件管腳處進(jìn)行測(cè)試;這樣即可以檢測(cè)到電路是否連通是否存在虛焊漏焊問題,也可以檢測(cè)出是否有損壞的元器件。如果在檢測(cè)過硬件都無(wú)問題后依然無(wú)法正常使用,再次檢查程序并對(duì)程序進(jìn)行修改。本論文分析了汽車尾氣檢測(cè)系統(tǒng)的設(shè)計(jì),介紹設(shè)計(jì)中所用到的芯片,其中包括單片機(jī)芯片STC12C5A60S2、液晶顯示芯片LCD1602、氣體檢測(cè)傳感器芯片MQ-2、粉塵檢測(cè)傳感器等。在這次設(shè)計(jì)中系統(tǒng)的基本電路有報(bào)警電路,按鍵設(shè)定電路、主控制器電路、粉塵傳感器和MQ-2傳感器的檢測(cè)電路、無(wú)線收發(fā)模塊電路和電源模塊等。這些電路可以實(shí)現(xiàn)汽車尾氣檢測(cè)裝置的基本功能。運(yùn)用單片機(jī)和傳感器相關(guān)知識(shí)完成了此次畢業(yè)設(shè)計(jì)。設(shè)計(jì)在使用方面還存在一些缺陷,檢測(cè)汽車尾氣溫度過高時(shí),還需用戶裝配一個(gè)可以起到冷卻功能的配件,而且需要外加過濾裝置來保護(hù)傳感器和減小相關(guān)電路元器件被過度腐蝕的可能性。參考文獻(xiàn)[1]阮俊,玉鈞,高閩光,崔益本,勝,耿輝.光學(xué)仿真在非分散紅外汽車尾氣監(jiān)測(cè)系統(tǒng)中的應(yīng)用[A].大氣與環(huán)境光學(xué)學(xué)報(bào),2010.11黃奇蘭,王海棠,尚.基于P89C668微處理器的汽車尾氣檢測(cè)系統(tǒng)[R].電子技術(shù),2007.5徐利娜,薛瑞,關(guān)曉丹.基于labview的汽車尾氣檢測(cè)系統(tǒng)研究[A].北華航天工業(yè)學(xué)院學(xué)報(bào),2009.6.曹衛(wèi)鋒,石軍,常亞軍.基于JN5121的無(wú)線汽車尾氣在線檢測(cè)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2010(7):1497-1499.志良.單片機(jī)原理與控制技術(shù)(第二版)[M].機(jī)械工業(yè),2005.3.方.基于國(guó)皿標(biāo)準(zhǔn)的汽車尾氣檢測(cè)分析系統(tǒng)[D].:大學(xué),2008.時(shí)志云,蓋建平,王代華,等.新型高速無(wú)線射頻器件NRF24L01及其應(yīng)用[J].國(guó)外電子元器件,2007(8):42-44.高嵩,潘泉,肖秦琨,等.多傳感器自適應(yīng)濾波融合算法[J].電子與信息學(xué)報(bào),2008,30(8):1901-1904.吳曉東,宋敬濱.在用汽車尾氣排放ASM檢測(cè)系統(tǒng)的研究與設(shè)計(jì)[J].森林工程,2007,(11):66-68.瑞星,健,等.《ProtelDXP實(shí)用教程》[M].機(jī)械工業(yè),2003.4毅剛,智明,付寧.基于Proteus的單片機(jī)課程的基礎(chǔ)實(shí)驗(yàn)與課程設(shè)計(jì)[M]:人民郵電.郝文良,王程,田麗偉,朱向冰.基于單片機(jī)的汽車尾氣檢測(cè)系統(tǒng)《微型機(jī)與應(yīng)用》201433(17):98-102.莢慶,王代華,志杰.基于nRF24L01的無(wú)線數(shù)據(jù)傳輸系統(tǒng)[J].現(xiàn)代電子技術(shù),2008(7):68-70.KELMANRE.Anewapproachtolinearfilteringandpredictionproblems[C].TransactionoftheASME-JournalofBasicEngineering,1960,82(D):35-45.LongHainan,LiuZhiqiang.DesignwirelessdatatransmissionsystemforsmallhydropowerstationsbasedonnRF24L01[C].20091stInternationalConferenceonInformationScienceandEngineering(ICISE),IEEE,2009:4008-4010.

數(shù)據(jù)采集端源程序?數(shù)據(jù)采麋,顯示,發(fā)送慎塊*/#include"stdio,h"Pinelude\inath.li"Pinelude"stdlib.K5=include4=1ncludetring.上""241X)1..h*Pineludeua.rt.li"Pinelude"ti.merO“1:"5=include"lcdl602.K#1ncludeitinclude'ade.h‘7include^ee^rcun.h?//XKF24L01的發(fā)送和接收緩沖區(qū)unsignedckarRX_Buffer[2]~^O};unsignedcharTX_Buffer[2]=-0}./7.系統(tǒng)工作模式j(luò)-丘常顯示,1,2分別表示設(shè)置?和刑的報(bào)警值■jiisignedckarSystemFlGg二0;unsignedintCOV^lue;//unsignedintCOV^lue;//C0濃度//PM2.5檢測(cè)緩沖區(qū)unsignedcharRecvBuf£er[10];unsignedcharRecvCount二0:_insignedunsignedcharRecvBuf£er[10];unsignedcharRecvCount二0:_insignedcharPM2_5_Flag=0;unsignedLr.tPM2_5_Value=0;=0;二0;floatPM2_c_Vol二0.00;//CO和PM報(bào)警值jiisignedii:tCOAlarnA'alueunsignedint?MA1sirnA7aluefrXaL&aru rXarXa?、一、=bAaLAaLAa>AaLAaiAarAaiAarAatnrAa ?、一、->Aa主程字r^>r^>i^?r*JC r'Jir^wijwr^ir^wi^wr^xP^w r^>r^>r^?r^wr^wrlJCrlJ?i^>r^Gr^w ?Jw."voidmain0{charkey_value;structtimerAD_Timer: //用于紅外檢測(cè)unsignedcharrmp[2]:meinset(tmp^0,s1zeai(tmp));timer_setfeAD_rimer, CLOCK_SECOXD/2):"初始化//memset(tinp^07sizeof(tmp.});IAP_WriteBuffer<1*0,tmp」2)://IAP_WriteBuffer(2,0,tmp32),IAP_ReadBuffei-(L0,切口,2): H讀取CO報(bào)警值COAlarmValue=imp[0];COAlarmValue二(C0AlannValue<<8)-tmpZ1Z,merrset(tmp,0,anz&of(tjhp));IAP_ReadBuffer(2f0tLmpt2): //讀取PM報(bào)警直PJJA1ainnAalue=tinp[0];PUA1aTmValue=(PMAlarmVslu.e<<8)-Tnip[13:LC'D16O2_rnit();LC'D1602_Sho^STr(0,E Initial ");ADC_Init();UART_IniT():NRF24L01_Check():whi1e(XRF.24L01_Check()) // NRF2401delayms(500):LCD1602_ShowSti-(0,1,"NBF.24L01Ektot");LC.D1602_ShowStr(QT1,"?<RF.24L01OK");delayms(200):LCD1602_S:howStr(0,1/NEF24L01Eiror^)LCD1602_ShowStr(0,1,"NRF24L01CMC);delayms(200);LCD1602_Clear();memset(TX_Buffern0,sizeof(n_3ufferjj:

//啟動(dòng)系統(tǒng)時(shí)基memset(TX_Buffer,0,sizeof(RX_Buffer))//啟動(dòng)系統(tǒng)時(shí)基TimeT0_Init():if(SystemFLag==U;LCD1602_ShowStr(0.1."CO: PPM"):LCD16O2_Sh0^Str(O,2,"PM2.3: u呂心曠);whie(1;//檢測(cè)按鍵key_value=KE¥_Get()//檢測(cè)按鍵siviTch(key_value)case-1:break;case1:SystemFlag=一一SystemFlag%3:丄fCSystenLFlag= 0>LCDLS02_Clear();LCD1602_ShowStr(0,l「00: PPM")LCDL602_ShowStr(0t2t"PM2.5: ug/m3")11(.SysteirFlag1||SysteinFl^g==2)if(SystemFlag==1iLCD1602_C1ear(:LCDL602_ShowStr(0,lh"AlarmCO PM2.S')break,}break:case2:if(SystemFlag-=1&&COAlarmVa1ue<9990)PMAlarmValne-二10.jnemsetI0,sizeoi(tnip)),tEip.0.=PUAlannVaLuetEi3.1.=PUAlaTmV£lue%2S6,IAP_VriteBLi££er(2j0,tnipn2),Dreak,case3:ii?(SystemFlag==].&&COA1arn]\'izlue';=11CJCOAlarmValue-=LUjnemsetIimp,0,sizeoi(tnip}丿;wp[0]=COAlarmValuez256;tmpC1]=COAlamaValue*^256.IAP_WriteBuffer(110,tmpt2):if(SystemFlag==3PUAlannVslue>10;PMA1amValue--10;memset(tmp,0,sizeof'.imp}):亠門口.「.■ - ii---TWE;tmp[1]-PMAlamValue%256:TAP_Wrir?Buffsr(2^0^tinp,2):bi'eak;}池IS讀聰一次PM2二值并顯示權(quán)_//顯示報(bào)警值Lf(SystemFlaj==1SystemFLag==2)//測(cè)得co宣-COValue=xADC_GetValu&(0);//adcif(COVelne<70)C0Value二gif(SystemFlag=0){+JLCD1602_X^'(5t1);屮LCD1802JV:rite_Data(COVa1ue/IODOKIO+OXSO)嚴(yán)LCD1502_W.rite_Data(COVa1ue%10DO/100-0X30);屮LCD1602_Write_Data(C0Va?ue%100.-lD+0X30)一lCD1602_^rite_Data(COValue%l04-0X30)-#} 我timer_resetL&AD_rimer);:i-1}+■PM2.5處理顯示!it(SySteinFlag=0MPM2_&_FLaS)^}"http://測(cè)得CO值屮COValue二ADC_GetValue(0); //ad^if(COVaLue<?0)C0Value二0”if(SystetaFlag二二0)」{*LCD1602_XY(531)LCD1602_Write_Data(COValue/1000%10-0X30).#LCD1602_Write_Data(COValue%1000-'1004-0X30)?LCD1602_Write_DataCCOValue%100/10^0X30)”I.CD1602_Write_D?.:?.(COValue^l0+0X30);屮tijner_rem亡亠〔也口_丁ijee二;p// 處理顯示卩it(SvstewFlag=0&&PM25FlaS)^PLLLLfALL^^LLLLLULLLLrLrLLLL'?^ 1 '[I 屮PM2_c_Value=RecvBuffer[1]PM2_c.Value二(PM2_5_Value?8)-RecvBuffer[2]>PM2_i_Vol二(tLoat)PM2_5_Value/1024*3.0;^PM2_c_Vol二0.3o*PM2_5_Volr+JPM2_c_Value=^unsignedint)(FM2_5_Value}LCD1602_XY(G;2);if(PM2_5_Va'._ie^lDOOO/'lOGO)LCD1602_^ita_Dara(PM2_5_V?.lue%l0000/1ODD-0X30)telseLCD1602_^-'-te_DataC"),4LCD1602_Vrite_Data(PM2_5_Value^1000/100-0X30); aLCD1602_Write_Data(PM2_5_Value^100/10-0X30)占LCD1602_Write_Data(PM2_5_Value^10+0^30);亠.■■■',■■'nienset"RecvEuffer^0teizeof(RecvBufferj)PM2_5_Flag二0訶ES二//發(fā)送報(bào)警信號(hào)衛(wèi)7A_Buffer[0]=OXAAwif(COValue>COAlarmVaLue||PM2_5_Value>PMAlannValue)^TX_Bnff^r[ll=0X55;^elseTXBuf£er.1]=0占(NRF24!..01_TxPacket(TX_BnffeT)[二TX_OKhl 心delayms(lOj”PM2_5接收處理卞voidPM2_5_Process(unsignedchardsrt)*it(PM2_E_Fl?.s=0)^hif(dst==OXAA) //收到起始位^rfCTCount=Cl2RecvB;:ffe?_.RecvComntl=dateLseif(dat二二OXFF) //結(jié)束泣」;*RecvBuffez-[t+Recv匚cjujl:_=0:*j■'f(RecvBuffer.61(SecvBuffer1J-RecvBuffer[2]-RecvBuffer.3]-i-RecvBuffer[4.)) *2PM2_6_Flag二1”ES=Ci,kc'3e;』niemset(RecvBufferj0,sizeof{RecvBuffer));>PM2_5_F:lag二0”RecvCount=0:*-■belse+1if(RecvBufferE0_=OXAA)^RecvBuffar_-+RecvConnt」二dat

NRF24L01.G/札’M?F24L01模塊pPinclude"24L01.h^codeucharTX_.ADDRESS:TXADR_WIDTH]0x43,0x10.,0x10,OkOI?,/>發(fā)送地址衛(wèi)codeucharRX_ADDRESS[RX_ADE?JHDTH[二{0扇4,0x43,0x10,0x107OsDO;發(fā)送地址屮ucharNRF24L01_Check(7QLd)ucharbuf[&:={0XA6,0XA5,OXA3,0^6f0XA5}uchariM?F24L01_CE=O: /?便能.24L01■NRF24L01_C£N=l, //S?I片選取消+//N^F24L01_SCK=0:屮NRF24L01Write.Buf(TCITE_REG_XI?F-TX_.4DDRPbuf,5}.三入5于字節(jié)的地址.-KRF24L01_Read_Buf(TX_ADDR,bi£c);for(i=0;i<5;£--)it(buf.i_!=0XA5)break;if(i!=5)return 檢測(cè)24L01錯(cuò)誤+〃檢測(cè)到24LD1Preturn0.aeharNRF24LO1_SP1_RH'(ucharData)*ucharBL:_ureturn0.aeharNRF24LO1_SP1_RH'(ucharData)*/7讀出三入的地址*//output8—bitpNRF24L01MOSI=Data&0s80://Data=Data(\1:NRF24L01_SCK=/7讀出三入的地址*//output8—bitpNRF24L01MOSI=Data&0s80://Data=Data(\1:NRF24L01_SCK=1.Data=DatsKRF24L01_MIS0■HRF24L01_SCK=0;output'uuhar'>MSBtoHOST

fshiftnextbitintoMSB..//SetSCKhigh..+,zcapturecurrentMISObit1

■■'..thensetSCKlowagain+Jreturn(Data);//returnreaducharreturn(Data);//SPI寫寄存器』//reg:指走寄存器地址*//value:寫入的值uchar i\riteRegiiicn^rree.uchsrvaluedueharstatus;*NKF24L01_CSN=0;"便能SPI傳輸屮力力寫入寄存器的値//禁止SP[傳輸"返回狀態(tài)值亠status=NRF.24L01_SPI_RW(r€g>; "發(fā)送寄存器號(hào)“NKF24L01_SP[_RW(v£lue}:NRF.24LU1_CSN=1:return(atatJ3);V/■讀取SPI寄存器值2Vre-:要讀胸寄存器?ucharM?F24L01_Read_Reg(ucliarreg}vNKF.24L01CSN=0:〃侯能SPI傳輸NT?F24L01_SP[_RW(reg}; 〃發(fā)送寄存器號(hào)屮reg_val=NRF24L01_SPI_RW(OXFF);讀取寄存器內(nèi)莓〃禁止SPI傳輸"返回狀態(tài)值屮NRF24L01_CSN二1;return;〃禁止SPI傳輸"返回狀態(tài)值屮/7在指定儻置讀出指定長(zhǎng)度的數(shù)據(jù)4/'.■reg:寄存器(檢置j亠//*DBuf:數(shù)據(jù)指針屮//len:數(shù)據(jù)長(zhǎng)燮""返目直此次讀到的狀態(tài)寄存器值"ucharXRF24LC'l_Read_Buf(uchairregjuchar ucharlen)*jucliarstatus^u8_ctrNRF24L01_CSN=0:stat=XKF24LO1_SP1 ;"使能SPI傳輸屮發(fā)送寄存器值(位萱h并讀工狀態(tài)值for(u8_ctr=0:u8_ctr<len;u8_ctr一一pBuf[u8_e:r:=NRF.24L01_SPI_RW(OXFF),〃讀出數(shù)據(jù)"

NRF2..4LO1_CSX=1:retLirnstatLL弓;打/V在指定位置寫指定長(zhǎng)度的數(shù)據(jù)4"關(guān)記SPI傳輸」/■/返叵讀到的狀忘值4//reg"關(guān)記SPI傳輸」/■/返叵讀到的狀忘值4//'^pBuf:數(shù)據(jù)指針"http://len:數(shù)據(jù)長(zhǎng)度."返回值:■此次逵到的狀態(tài)寄存器值?uchar\陸.2£匸01_聊ri:亡_Euf(uchairreg,uchar^pBcf.ucharLen}^kucharstatusTu8_ctr; +■MtE24L01_CSb-=0; //使能SPI傳輸亠status=SRF24L01_SPl_^'(re^:,/發(fā)送寄存器值(位罰.并讀取狀態(tài)直屮for(u3_ctr=0;u8_etr<len;uS_Ttr+-)』NRF24LO1_SPI_RWt^nBufi-).//'寫入數(shù)據(jù)屮XKF24L01_CSb'=1; 〃關(guān)近SPI傳輸,L'eturr.status: //返.口I讀到的狀態(tài)僅』2后動(dòng)KRF24LJ01發(fā)送一次數(shù)據(jù)"http://txbuf:待發(fā)送數(shù)據(jù)首地址""返亙值:發(fā)送完成狀況屮ucharXRF24L01TxPaeket(uchar^tsbur)■'bucharmta;<'XRF24L01_CE=0>M?F24L0L_Write_Buf(WR_TX_PLOAD,txbuf,TXPLOAD._WIDTH;;V寫數(shù)據(jù)到7XBUF32個(gè)字節(jié)aM?F24L0L_Write_Re?(VRITE_REG_XRF+CONFEG,OxOe);?>KF24LO1_CE=1: "定動(dòng)發(fā)送卞whxl-(Ni?F24L01_IRQ:=0); //等待發(fā)送気:成*31a^NRF24L01_Read_Reg(STATUS): 〃謹(jǐn)取狀態(tài)寄存器的值「M?K.4L0l_Write_Re(WRriE_REG_NIiF+STATU£ste.}: "淸除TX_DS或MAX_RT白斷標(biāo)志」if(3ta£MA.X_rX) "達(dá)到量大重發(fā)択數(shù)卩

NRF24L01_Write_Reg(FLUSE_TXTOsiff);^aiurr.MAX—^X;*j"清除HFIFO寄存器亠"清除HFIFO寄存器亠"發(fā)送完咸""其他叵因發(fā)送先敗“reTurnTX_OK;*j"其他叵因發(fā)送先敗“returnOxff;卜屮〃啟動(dòng)NRF24L01接收一次數(shù)據(jù)+//rxbuf:待發(fā)送數(shù)據(jù)首地址屮〃返回值:山接收完成;其他,錯(cuò)誤代碼+ucharMLTi4^01_RsPacket(uchar^rxbuf1ucharsta:sta=NRF24L01_Read_Res(STATUS);〃讀脫狀態(tài)寄存器的值 *XRF^WU'rite.RegtWRITE.REG.^F+STAnJS,sta);//清除TX_DS或MAX_RT中斷標(biāo)志if(st^RX_0K)"接收到數(shù)推pNItF24L01ReadEuf(慮駁衛(wèi)圜貶加f風(fēng)巴越:"讀取數(shù)據(jù)屮CH開1;/7渣除啟FIFO寄存器卩return0;亠}-return1//沒收到任何數(shù)據(jù)"h//該函數(shù)初始化NKF2.4L01到RX模式「〃設(shè)置RX地址,寫RX數(shù)據(jù)寬度,選癢RF頻道,波特率和LYAHCCRK^〃蘭CE變高后,即進(jìn)入RX模式,并可以接收數(shù)據(jù)了 亠voidNRF2.4L01_RX_Mode(void)^ANRF2.4L0l_CE=D- ?NRE24L0l_Write_ReE(^ITE-REG^F+CONFIG,OxOf)配置基本工作模式弐參EK_CRC,16BII_CRCr接收梗式亠NEF24L01_CE=1;//CE為高,進(jìn)入接收模式?打voidNRF24L01_Iriit()^NRF24LD1.CE=O;^kRF24L01i^riteBufCWITEREGXKF-TXADDR,(uchar*)TXADDRESS,TX血R甲[DTH)://寫T蓋節(jié)點(diǎn)地址屮M?F24L0L_WriITE_REG_NRF+E<X_.ADDR_POt(xhar杓RX_ADDRESS,RX_ADRJ'IDTH);〃許置T龍節(jié)目地址,主要為了使能ACK卞M?F24LCl_Write_Reg(WITE_REG_M?F+RX_P^'_PO,RX_PLO.AD_WIDTH);//選擇通道0的有效數(shù)據(jù)寬度屮NRF24L01Write_Reg(WITE_REG_M?F+E\.AA,0x01): /7■使能通道0的自動(dòng)應(yīng)答亠NRF.24b01JVrite_Reg(WRITE_REG_M?F+EN_RXADDR)0x01):"使能通道0的接收地址"NRF24iri_^ite_Reg(WRITE_REG_M?F+SETUP_RETR,Oxla);//設(shè)置自動(dòng)重發(fā)間隔時(shí)K:50Ous-S6us;最大自動(dòng)重發(fā)次數(shù):10次*"設(shè)置RF"設(shè)置RF通道為4"M?F24L01_Write_Reg(WITE_REG_M?F-RF_SETUP,0嗆『)."設(shè)置TX發(fā)肘參數(shù),(Mb增益;低噪青增益開啟*} 屮/**JSK12C5AADC模塊"tmelude'ADC.nJitinclude"STC12C5A.^include<intrins.h>初始化ADC」voidADC_Init(voidJ+JP1ASF二OkQI;ADC_RES二0;ADC_RESL二0占ADC.O//包含NOP空指令函數(shù)_!!*_()>//CbenchannelsADCfunction//'Clearpreviousresr.ltADC_CONTR=ADC_POWER|ADC_SPEEDHH;}EEPRCM.GSTC;.2C5A內(nèi)部EEPROM駆動(dòng)屮內(nèi)部共16SectornSector有312Byt^include^stdio.h"*^includestring,h"屮+tinclude"reg52.h"屮ftinclude^LE^rms.h\J/■"'StartaddressforSTC12C5AEEPRO如^defineIAP_ADDRESS0x0000^^DeclareSFRassociatedwiththeIAP壯4sfrIAPJMTA=0xC2;^sfrIAP_ADDRH二0kC3;^sfrLAP_ADDRL二0kC4;^sfrIAPTRIGSXKKWv" sfrTAPCOMR=sfrIAPTRIGSXKKWv" sfrTAPCOMR=OsC&;a=0xC7,^/*DefineISP/IAP/EEPRQMcommand*/+■fldetmeCMDIDLEdefineCMDREAD1tfdefineCMDPROGRAM2fldetmeCMDIDLEdefineCMDREAD1tfdefineCMDPROGRAM2fldefineCMDERASE3//Stand_3y+J//Byte-Reac」//Bytd-Prograirn1//SectaT'-Erase//ifSYSCLE<40HHz//ifSYSCLE<40HHz"DefineISP/IAP/EEPROMaperationconstforIAFCOME?*///ridefi:-.eENAB12_ZAPOxSO//rideFineENABLEZAPOxfil"ifSYSCLK<20MHztfdefineENAELEHAP0x82//ridefinetfdefineENAELEHAP0x82//ridefineEKABEE_HP0x83Z/£fS\'SCLK<5MHzDisableI5P/IAP/EEFR0MfunctionsMakeMCIinasafes^ateIAP__CO'TR二0;//CloseIAP__CW=0://ClearIAP._TRIG二0://ClearstaticvoidIa^Idle()*jIAPfunctioEPcoiniEaodtostandbystriggerregis^er^

IAP_ADDRH二0x80:/■'Dataptrpointtonan-EEPROMareaIAP_ADDKL=0://ClearLAPaddresstopreventmi3useReadonebytefromISPIAP/EEPROMarea-1Input:addr(ZSP/LAP^EEPROMaddress)^Output:FlashdatastaticunsignedcharlapReadByte(unal^nedmtaddr}#IAP_TRIG二IAP_TRIG二0xA5;_nop_0;ISP'IAP/EEPROMopera-:Loncoaipletedat二IAP_DA7A;Ia^IdleO;EA=1>returndart://Sendtriggercommand2(0xb9)*-■/;'MCUwil1holdhereuntil//ReadISP/L^P./EEPROMdata//CloseISP/[AP/EEPROMfuncYo葉//ReturnFlashdataunsignedchardat:.■'/Databuffez-EA二gIA?_CONTR=ENABLE.IAP:LAP.CMD二CMD.READ;OpenIAPfunction>andsetws11亠im亡//SetISP/IAP/EEPROMREADcommandsIAP.ADDRL=addr;IAP_ADDRH二addr?8,IAPTRIG=0x5A;//SetISP/IAP/EEPROMaddresslow//SetISP/IAP/EEPROMaddresshign,Sendtrigger匚ounnand1 1.0x4G)屮ProgramonebytetoISP-IAP/EEPROMareaIznpirz:addr(JSP/1AP/EEPROMaddress)datIISP/1AP/EEPROMdata)^Output:- 總_■dstaticvoidlapProgranByte{.unsignedmtaddr^unsignedchardat)*■EA-0; "禁止中斷屮

IAP_CONTR二Eh'ABLE_:AP;IAF_C?=IAP_CONTR二Eh'ABLE_:AP;IAF_C?=CMD_PROGRAM;IAP_ABDRL二addr;IAF_ABDRH二addr?S;IAP_DATA=dat;IAP_TRIG=Ox.5A;L^PJRIG=0M3;MdO:ISP;IAP/EEPRQMaperationcompLete.I&L-Idle-(}:?EA=I;//OpenIAPrunr-ian,andsetwaittime//SetISP/IAP/EEPEOMPROGRAMcomm曰n#//SetISP/IAP/EEPROMaddressIot^//Se-ISP/IAP/EEPROMaddresshigh^//WriteISP/IAP/EEPEOMdata-;zSejid11'igsercominaiidl(0k46);'-'Sendtriggerccimnand2(0xL9j//MCIwi11holdhereuntil//重新尤許白斷” 4EraseonesectorareaInput:addr(ISP/IAP-TEPROMaddress}+■Output:-+■ 認(rèn)s:at_cvoidlapErszeSec:or(unsignedintaddr):AP_COXTR=ENABLEJM1:iine+JTAP_CMD二CMD_ERASE-cGmand'H2AP_ADDRL=addr;7AP_ADDRH=addr?S:2AP_TRIG二0:<6A;ZAP_TRIG=0xA5;_nop_.0:ISP/fAP/EEPRQMopsratlcampZapIdle0:*,/OperiTAPfuncrion,andseiwiai:空tISP/IAP/EEPROMERASE//SetLSP/IAP/EEPROMaddi-esss*//Se-ISP./IAP/EEP]?OM呂dir總注土ghA'Sendtriggercomuandl(0x46)^■■StTidt__asercotnnandS(Qxb9)-'//UCUwillholdhereunti_uns:gned:::日-IAP_Wr11eBuffer(ut:signed:::arSectorKuni^unsignedintOffset,unsignedchar^3;iffer-unsignedi"tEuffwrL石Ti'dunsgnedintcount二0:』■■■■.■■■■■.■■■■■.■■■■■unsignedintAddress;//STC12C5A井有16SectoralLf(SectorNum<1SectorNun>16){屮TetuTnL;p//每亍Sector有;5123yte£if(Offset<0||Offset>511}■>return1;?//寫緩沖無(wú)碩"if(Buffer=NULL)>return1://三長(zhǎng)度無(wú)效」if(BufferLen==0)l+jreturn1://互之前先擦涂aTapEraseSector<LXP_ADDRESS+{SectorVim-1)*512}:屮Address二IAP_ADDRESS-(SectorKum-l)^512-Orfset+jwhi_e'^BufterLen一一i[-IapProgramByte(Addresscount,(unsignedchar)Buffer[coun^.):屮count——)」} 屮returnD;「Ni_msignedcharIAP_f?eadBuffar(unaignedcharSectorXun>unsignedmtOffst:junsigr.edchar^Buffer,unsignedintBufferLen)+Junsis^edintcourt-二0;」unsignedintAddress//STC12C5A^有応個(gè)Sectors^:if(SectorNuin€1SectorNum》16){+■retuzm1;*」.//毎個(gè)Sector有512Bytes,if(Offset<0Offset>oil)return1:*j//寫緩沖無(wú)效"£f(Buffer=MILL)L-return1嚴(yán)"寫長(zhǎng)度乏效"if(BufferLen=0)hreturn1;*jIAddress二IAP_ADDEiESS亠(SectorNum-l)*512+Offset:*-1wh.ile(BufferLen 卩{ 屮Buffer.count]二(unsignedchar)lapReadByte(Address+(zount);*■count卄;□一return0;』}bKEY.O/■*屮按鍵模塊Q狀態(tài)機(jī)方式,支持單擊和連按屮ftinclude"rego2.tiinclude^key.H\ndefineENTER_TIMER_CRITICAL ETO=5fidefineEXIT_TIMER_CRLIICAL ETO二2//外部定時(shí)器汁數(shù)值“externunsigned1oniTinierO_Count//獨(dú)立按鍵引腳定文asbitKEY1=Pl"5”sbLtKEYS二Pr6;^sbLtKEY3二PP7>

//定文按鍵肉狀態(tài)*//按雛松開狀態(tài)//按翌按下狀態(tài)//按//定文按鍵肉狀態(tài)*//按雛松開狀態(tài)//按翌按下狀態(tài)//按鍵按下處理完成狀態(tài)(臉測(cè)連}KEY_STATE'屮KEYSTATEKevState二KEYLT:屮KEY_EVENTKey_Event; //按涯事件/*h'讀取按鍵值亠冶+1charKEY_Get0->{屮unsignedcharkey_value:屮ENTER_nMER_CRiriCAL.-key_value=Key_Event.key-V

溫馨提示

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