版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p><b> 緒論1</b></p><p><b> 1系統(tǒng)方案選擇2</b></p><p><b> 1.1任務(wù)要求2</b></p><p> 1.1.1 設(shè)計(jì)任務(wù)2</
2、p><p> 1.1.2 設(shè)計(jì)要求2</p><p> 1.2總體設(shè)計(jì)方案2</p><p> 1.3方案選擇與分析3</p><p> 1.3.1控制器分析與比較3</p><p> 1.3.2電動(dòng)車車體的選擇3</p><p> 1.3.3電機(jī)的選擇與分析4</p
3、><p> 1.3.4電機(jī)驅(qū)動(dòng)電路方案選擇4</p><p> 1.3.5軌跡探測(cè)模塊設(shè)計(jì)與比較4</p><p> 1.3.6火源檢測(cè)設(shè)計(jì)與比較5</p><p> 1.3.7電源模塊5</p><p> 1.3.8避障模塊設(shè)計(jì)與分析5</p><p> 1.3.9滅火模塊
4、6</p><p><b> 1.4最終方案6</b></p><p> 2硬件實(shí)現(xiàn)及單元電路設(shè)計(jì)6</p><p> 2.1 STC89C52單片機(jī)系統(tǒng)概述及其引腳功能介紹6</p><p> 2.1.1 STC89C52單片機(jī)系統(tǒng)概述6</p><p> 2.1.2 單片機(jī)引
5、腳功能7</p><p> 2.2光電對(duì)管電路的設(shè)計(jì)9</p><p> 2.3火焰?zhèn)鞲衅骷皯?yīng)用10</p><p> 2.4電機(jī)驅(qū)動(dòng)電路的設(shè)計(jì)11</p><p> 2.5滅火模塊設(shè)計(jì)13</p><p> 2.6避障功能的實(shí)現(xiàn)方法13</p><p> 3軟件系統(tǒng)設(shè)計(jì)
6、13</p><p> 3.1編譯語言及編譯環(huán)境13</p><p> 3.1.1匯編語言的概述13</p><p> 3.1.2 C語言概述13</p><p> 3.1.3 編譯語言及編譯環(huán)境綜述14</p><p> 3.2程序解析14</p><p> 3.2.1
7、各函數(shù)功能14</p><p> 3.2.2程序流程圖18</p><p><b> 4測(cè)試結(jié)果19</b></p><p><b> 結(jié)束語20</b></p><p><b> 致謝21</b></p><p><b>
8、 參考文獻(xiàn)22</b></p><p> 附錄A:程序清單23</p><p><b> 緒論</b></p><p> 現(xiàn)在,隨著科技的快速發(fā)展,國內(nèi)外對(duì)小型智能系統(tǒng)的應(yīng)用越來越廣泛,種類也越來越多。本題目就是結(jié)合有關(guān)科研項(xiàng)目而確定的設(shè)計(jì)類課題,所設(shè)計(jì)的智能尋跡滅火小車應(yīng)能夠?qū)崿F(xiàn)自動(dòng)發(fā)現(xiàn)火源、自動(dòng)尋跡、自動(dòng)前進(jìn)接近火源并
9、完成滅火任務(wù)的功能。</p><p> 根據(jù)題目的要求,智能尋跡滅火小車控制系統(tǒng)采用一片STC89C52單片機(jī)作為本控制系統(tǒng)的主控芯片,硬件包括以下幾個(gè)模塊:驅(qū)動(dòng)電機(jī)模塊、尋跡傳感器模塊、單片機(jī)控制模塊、火源傳感器模塊、風(fēng)扇模塊、電源模塊。本設(shè)計(jì)采用了STC89C52單片機(jī)為智能小車核心控制部分,通過查詢方式實(shí)現(xiàn)對(duì)小車的智能控制。小車由主控制板、傳感系統(tǒng)、風(fēng)扇系統(tǒng)和車身四部分組成。主控制系統(tǒng)由主控CPU電路、傳
10、感器接口電路、直流電機(jī)驅(qū)動(dòng)電路等組成;傳感系統(tǒng)采用紅外傳感器檢測(cè)黑白線,火源傳感器檢測(cè)火源;行進(jìn)直流電機(jī)驅(qū)動(dòng)采用PWM調(diào)制技術(shù),可靈活方便地對(duì)車速、行進(jìn)方向進(jìn)行控制。</p><p> 本設(shè)計(jì)通過采用STC89C52單片機(jī)為控制核心,實(shí)現(xiàn)對(duì)小車的智能控制。該控制系統(tǒng)不僅在智能小車中有很強(qiáng)的實(shí)用價(jià)值,在汽車應(yīng)用、智能機(jī)器人等方面都有很強(qiáng)的實(shí)用價(jià)值,尤其是在機(jī)器人研究方面具有很好的發(fā)展前景。所以本設(shè)計(jì)與實(shí)際相聯(lián)系,
11、具有重要的現(xiàn)實(shí)意義。</p><p><b> 1系統(tǒng)方案選擇</b></p><p><b> 1.1任務(wù)要求</b></p><p> 1.1.1 設(shè)計(jì)任務(wù)</p><p> 設(shè)計(jì)制作一個(gè)智能滅火小車模型,能到指定區(qū)域進(jìn)行搶險(xiǎn)滅火工作。以蠟燭模擬火源,隨機(jī)分布在場(chǎng)地中,模擬滅火場(chǎng)地如圖1
12、-1所示。</p><p> 圖1-1模擬火場(chǎng)示意圖</p><p> 1.1.2 設(shè)計(jì)要求</p><p> (1)智能滅火小車手動(dòng)啟動(dòng)后,自動(dòng)尋找到火源的位置。</p><p> (2)智能滅火小車必須按照固定的路線行進(jìn)(黑白線)。</p><p> (3)撲滅火源后自動(dòng)檢測(cè)周圍環(huán)境是否還有其他火源。&
13、lt;/p><p> (4)若有則繼續(xù)滅火,若無則停止工作。</p><p><b> 1.2總體設(shè)計(jì)方案</b></p><p> 總體方案為:整個(gè)電路分為驅(qū)動(dòng)電機(jī)模塊、尋跡傳感器模塊、避障模塊、單片機(jī)控制模塊、火源傳感器模塊、風(fēng)扇模塊、電源模塊七個(gè)模塊。</p><p> 首先利用紅外對(duì)路面信號(hào)進(jìn)行探測(cè),利用火源
14、傳感器檢測(cè)火源信號(hào),兩種信號(hào)經(jīng)過處理之后,送給單片機(jī)控制模塊進(jìn)行實(shí)時(shí)運(yùn)算,輸出相應(yīng)的信號(hào)給驅(qū)動(dòng)電機(jī)模塊驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng),從而控制整個(gè)小車的運(yùn)動(dòng)。系統(tǒng)方案框圖如圖1-2所示。</p><p> 圖1-2 方案設(shè)計(jì)框圖</p><p> 1.3方案選擇與分析</p><p> 1.3.1控制器分析與比較</p><p> 方案一:采用凌陽公司
15、的16位單片機(jī),它是16位控制器,具有體積小、驅(qū)動(dòng)能力高、集成度高、易擴(kuò)展、可靠性高、功耗低、結(jié)構(gòu)簡單、中斷處理能力強(qiáng)等特點(diǎn)。處理速度高,尤其適用于語音處理和識(shí)別等領(lǐng)域。但是當(dāng)凌陽單片機(jī)應(yīng)用語音處理和辨識(shí)時(shí),由于其占用的CPU資源較多而使得凌陽單片機(jī)同時(shí)處理其它任務(wù)的速度和能力降低。</p><p> 方案二:采用STC89C52單片機(jī)作為主控制器。STC89C52是一個(gè)低功耗,高性能的51內(nèi)核的CMOS 8位
16、單片機(jī),片內(nèi)含8k空間的可反復(fù)擦寫1000次以上的Flash只讀存儲(chǔ)器,具有256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)IO口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器。且該系列的51單片機(jī)可以不用燒寫器而直接用串口或并口就可以向單片機(jī)中下載程序。</p><p> 從方便使用和綜合性能的角度考慮,選擇了方案二。</p><p> 1.3.2電動(dòng)車車體的選擇</p><
17、;p> 方案一:購買玩具電動(dòng)車。購買的玩具電動(dòng)車具有組裝完整的車架車輪、電機(jī)及其驅(qū)動(dòng)電路。但是一般的說來,玩具電動(dòng)車具有如下缺點(diǎn):首先,這種玩具電動(dòng)車由于裝配緊湊,使得各種所需傳感器的安裝十分不方便。其次,這種電動(dòng)車一般都是前輪轉(zhuǎn)向后輪驅(qū)動(dòng),不能適應(yīng)該題目的方格地圖,不能方便迅速的實(shí)現(xiàn)原地保持坐標(biāo)轉(zhuǎn)90度甚至180度的彎角。而且這種電動(dòng)車一般都價(jià)格不扉。因此放棄了此方案。</p><p> 方案二:自己
18、制作電動(dòng)車。經(jīng)過反復(fù)考慮論證,我們制定了左右兩輪分別驅(qū)動(dòng),后方萬向輪轉(zhuǎn)向的方案。即左右輪分別用兩個(gè)直流電機(jī)進(jìn)行驅(qū)動(dòng),后面裝一個(gè)萬向輪。這樣,當(dāng)兩個(gè)電機(jī)轉(zhuǎn)向相反同時(shí)轉(zhuǎn)速相同時(shí)就可以實(shí)現(xiàn)電動(dòng)車的原地旋轉(zhuǎn),由此可以輕松的實(shí)現(xiàn)小車坐標(biāo)不變的90度和180度的轉(zhuǎn)彎。</p><p> 對(duì)于車架材料的選擇,經(jīng)過比較選擇了硬塑板。用硬塑板做的車架比塑料車架更加牢固,比鐵制小車更輕便,美觀。故選擇了方案二。</p>
19、<p> 1.3.3電機(jī)的選擇與分析</p><p> 方案一:采用直流電機(jī)</p><p> 直流電機(jī)速度快,價(jià)格便宜,通過調(diào)節(jié)電流來改變速度,驅(qū)動(dòng)電路簡單,調(diào)速范圍廣,調(diào)速特性平滑。</p><p> 方案二:采用步進(jìn)電機(jī)</p><p> 步進(jìn)電機(jī)是一種能將電脈沖轉(zhuǎn)化為角位移的機(jī)構(gòu),通過控制脈沖個(gè)數(shù)來控制角位移量
20、,通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,其精確度高,但控制相對(duì)較繁瑣。</p><p> 由于本系統(tǒng)對(duì)電機(jī)速度控制要求不高,采用方案一。</p><p> 1.3.4電機(jī)驅(qū)動(dòng)電路方案選擇</p><p> 方案一:采用專用芯片L298N作為電機(jī)驅(qū)動(dòng)芯片。L298N是一個(gè)具有高電壓大電流的全橋驅(qū)動(dòng)芯片,它相應(yīng)頻率高,L298N芯片可以驅(qū)動(dòng)兩個(gè)二相電機(jī),也
21、可以驅(qū)動(dòng)一個(gè)四相電機(jī),輸出電壓最高可達(dá)50V,可以直接通過電源來調(diào)節(jié)輸出電壓;可以直接用單片機(jī)的IO口提供信號(hào);電路簡單,使用比較方便。</p><p> 方案二:對(duì)于直流電機(jī)用分立元件構(gòu)成驅(qū)動(dòng)電路。由分立元件構(gòu)成電機(jī)驅(qū)動(dòng)電路,結(jié)構(gòu)簡單,價(jià)格低廉,在實(shí)際應(yīng)用中應(yīng)用廣泛。但是這種電路工作性能不夠穩(wěn)定。</p><p> 通過比較,使用L298N芯片充分發(fā)揮了它的功能,能穩(wěn)定地驅(qū)動(dòng)步進(jìn)電機(jī)
22、,且價(jià)格不高,采用方案一。</p><p> 1.3.5軌跡探測(cè)模塊設(shè)計(jì)與比較</p><p> 方案一:用光敏電阻組成光敏探測(cè)器。光敏電阻的阻值可以跟隨周圍環(huán)境光線的變化而變化。當(dāng)光線照射到白線上面時(shí),光線發(fā)射強(qiáng)烈,光線照射到黑線上面時(shí),光線發(fā)射較弱。因此光敏電阻在白線和黑線上方時(shí),阻值會(huì)發(fā)生明顯的變化。將阻值的變化值經(jīng)過比較器就可以輸出高低電平。但是這種方案受光照影響很大,不能夠穩(wěn)
23、定的工作。因此要考慮其他更加穩(wěn)定的方案。</p><p> 方案二:用紅外發(fā)射管和接收管自己制作光電對(duì)管尋跡傳感器。紅外發(fā)射管發(fā)出紅外線,當(dāng)發(fā)出的紅外線照射到白色的平面后反射,若紅外接收管能接收到反射回的光線則檢測(cè)出白線繼而輸出低電平,若接收不到發(fā)射管發(fā)出的光線則檢測(cè)出黑線繼而輸出高電平。這樣自己制作組裝的尋跡傳感器基本能夠滿足要求,但是工作不夠穩(wěn)定,且容易受外界光線的影響,所以也放棄了這個(gè)方案。</p&
24、gt;<p> 方案三:用RPR220型光電對(duì)管。RPR220是一種一體化反射型光電探測(cè)器,其發(fā)射器是一個(gè)砷化鎵紅外發(fā)光二極管,而接收器是一個(gè)高靈敏度,硅平面光電三極管。RPR220采用DIP4封裝,塑料透鏡可以提高靈敏度,內(nèi)置可見光過濾器能減小離散光的影響,體積小,結(jié)構(gòu)緊湊。當(dāng)發(fā)光二極管發(fā)出的光反射回來時(shí),三極管導(dǎo)通輸出低電平。此光電對(duì)管調(diào)理電路簡單,工作性能穩(wěn)定。</p><p> 因此本設(shè)
25、計(jì)采用了方案三。</p><p> 1.3.6火源檢測(cè)設(shè)計(jì)與比較</p><p> 火焰檢測(cè)有溫度傳感器、煙霧傳感器、紅外傳感器、紫外傳感器以及CCD圖像傳感器。綜合論證了這幾種傳感器,制定了如下幾種方案。</p><p> 方案一:用溫度傳感器如熱電偶,熱電偶在工業(yè)應(yīng)用上十分廣泛。但是熱電偶感應(yīng)的范圍太廣,而且由于火焰只是周圍溫度稍高且范圍較窄。實(shí)驗(yàn)驗(yàn)證用熱
26、電偶檢測(cè)火焰精度不高,故放棄了此方案。</p><p> 方案二:用煙霧傳感器。煙霧傳感器廣泛應(yīng)用與火警檢測(cè)。但是由于此題目的火源是用蠟燭模擬的,沒有太大的煙霧,因此用煙霧傳感器作為此小型電動(dòng)車的火焰?zhèn)鞲衅饕膊粔驅(qū)嵱茫虼朔艞壛舜朔桨浮?lt;/p><p> 方案三:用紫外傳感器檢測(cè)火焰。紫外火焰?zhèn)鞲衅髦饕獞?yīng)用于火災(zāi)消防系統(tǒng),尤其是一些易燃易爆場(chǎng)所,用來監(jiān)測(cè)火焰的產(chǎn)生。紫外線火焰?zhèn)鞲衅鞯撵`
27、敏度高,相應(yīng)速度快,抗干擾能力強(qiáng),對(duì)明火特別敏感,能對(duì)火災(zāi)立即作出反應(yīng)。但是紫外傳感器檢測(cè)的范圍太大,不適用于本系統(tǒng)。</p><p> 方案四:用CCD圖像傳感器。用CCD圖像傳感器可以檢測(cè)各種被檢測(cè)量,適用于各種量的檢測(cè)。但是用CCD圖像傳感器需要處理的信號(hào)量太大,且體積較大,不使用與本系統(tǒng)。</p><p> 方案五:用遠(yuǎn)紅外傳感器。經(jīng)試驗(yàn)驗(yàn)證,遠(yuǎn)紅外火焰?zhèn)鞲衅鳈z測(cè)距離遠(yuǎn),線性度
28、好,檢測(cè)準(zhǔn)確,且體積較小。很適用于本題目的要求。</p><p> 因此本設(shè)計(jì)采用了方案五。</p><p><b> 1.3.7電源模塊</b></p><p> 由于本系統(tǒng)需要電池供電,我們考慮了如下集中方案為系統(tǒng)供電。</p><p> 方案一:采用12V蓄電池為系統(tǒng)供電。蓄電池具有較強(qiáng)的電流驅(qū)動(dòng)能力以及穩(wěn)
29、定的電壓輸出性能。</p><p> 方案二:采用6節(jié)1.5V鋰電池分別3節(jié)串聯(lián),分別供單片機(jī)和電機(jī)驅(qū)動(dòng)使用,單片機(jī)和傳感器工作穩(wěn)定,電機(jī)工作互不影響,且電池體積較小,能夠滿足系統(tǒng)要求。</p><p> 綜上考慮,采用了方案二。</p><p> 1.3.8避障模塊設(shè)計(jì)與分析</p><p> 方案一:用超聲波傳感器進(jìn)行避障。超聲波
30、傳感器的原理是:超聲波由壓電陶瓷超聲波傳感器發(fā)出后,遇到障礙物便反射回來,再被超聲波傳感器接收。然后將這信號(hào)放大后送入單片機(jī)。超聲波傳感器在避障的設(shè)計(jì)中被廣泛應(yīng)用。但是超聲波傳感器需要40KHz的方波信號(hào)來工作,因?yàn)槌暡▊鞲衅鲗?duì)工作頻率要求較高,偏差在1%內(nèi),所以用模擬電路來做方波發(fā)生器比較難以實(shí)現(xiàn)。而用單片機(jī)來作方波發(fā)生器未免有些浪費(fèi)資源。因此考慮其他的方案。</p><p> 方案二:用紅外光電開關(guān)進(jìn)行避
31、障。光電開關(guān)的工作原理是根據(jù)投光器發(fā)出的光束,被物體阻斷或部分反射,受光器最終據(jù)此作出判斷反應(yīng),是利用被檢測(cè)物體對(duì)紅外光束的遮光或反射,由同步回路選通而檢測(cè)物體的有無,其物體不限于金屬,對(duì)所有能反射光線的物體均能檢測(cè)。光電開關(guān)E3F-DS10C4操作簡單,使用方便。當(dāng)有光線反射回來時(shí),輸出低電平。當(dāng)沒有光線反射回來時(shí),輸出高電平。</p><p> 考慮到本系統(tǒng)只需要檢測(cè)簡單障礙物,沒有十分復(fù)雜的環(huán)境。為了使用
32、方便,便于操作和調(diào)試,最終選擇了方案二。</p><p><b> 1.3.9滅火模塊</b></p><p> 方案一:用風(fēng)扇將蠟燭吹滅,檢測(cè)并確定火源在課吹滅的范圍內(nèi)后由單片機(jī)控制風(fēng)扇開啟,吹滅蠟燭。經(jīng)實(shí)驗(yàn)確定當(dāng)采用5V電源給風(fēng)扇電機(jī)供電時(shí),火源在20cm以內(nèi)都可被吹滅。能達(dá)到要求,并且簡單方便各方面的實(shí)現(xiàn)都比較簡單,工作也比較穩(wěn)定,調(diào)試快捷。適合應(yīng)用。<
33、;/p><p> 方案二:用水管噴滅,由于整個(gè)系統(tǒng)是電子系統(tǒng),如用水則有可能發(fā)生斷路或出現(xiàn)危險(xiǎn),并且小車還要承載水的重量,對(duì)小車電機(jī)驅(qū)動(dòng)要求比較高,故排除這種方案,選擇方案一。</p><p><b> 1.4最終方案</b></p><p> 經(jīng)過反復(fù)論證,最終確定了如下方案:</p><p> ?。?)手工制作車體
34、。</p><p> ?。?)采用STC89C52單片機(jī)作為主控制器。</p><p> (3)用直流電機(jī)實(shí)現(xiàn)小車行駛與滅火。</p><p> ?。?)用6節(jié)鋰電池分別給單片機(jī)和電機(jī)供電。</p><p> (5)用RPR220型光電對(duì)管進(jìn)行尋跡。</p><p> (6)遠(yuǎn)紅外火焰?zhèn)鞲衅髯鳛楸鞠到y(tǒng)的火焰?zhèn)鞲衅?/p>
35、。</p><p> ?。?)L298N作為直流電機(jī)的驅(qū)動(dòng)芯片。</p><p> (7)用紅外光電開關(guān)進(jìn)行避障。</p><p> 2硬件實(shí)現(xiàn)及單元電路設(shè)計(jì)</p><p> 2.1 STC89C52單片機(jī)系統(tǒng)概述及其引腳功能介紹</p><p> 2.1.1 STC89C52單片機(jī)系統(tǒng)概述</p>
36、;<p> STC89C52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器
37、,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口。另外 STC89X52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。</p><p><b> 參數(shù):</b></p
38、><p> (1)增強(qiáng)型8051 單片機(jī),6 時(shí)鐘/機(jī)器周期和12 時(shí)鐘/機(jī)器周期可以任意 選擇,指令代碼完全兼容傳統(tǒng)8051.[1]</p><p> (2)工作電壓:5.5V~3.3V(5V 單片機(jī))/3.8V~2.0V(3V 單片機(jī))</p><p> (3)工作頻率范圍:0~40MHz,相當(dāng)于普通8051 的0~80MHz,實(shí)際工作 頻率可達(dá)48MHz&l
39、t;/p><p> (4)用戶應(yīng)用程序空間為8K 字節(jié)</p><p> (5)片上集成512 字節(jié)RAM</p><p> (6)通用I/O 口(32 個(gè)),復(fù)位后為:P0/P1/P2/P3 是準(zhǔn)雙向口/弱上拉, P0 口是漏極開路輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為 I/O 口用時(shí),需加上拉電阻。</p><p> (7)IS
40、P(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器,無 需專用仿真器,可通過串口(RxD/P3.0,TxD/P3.1)直接下載用戶程 序,數(shù)秒即可完成一片</p><p> (8)具有EEPROM 功能</p><p> (9)具有看門狗功能</p><p> (10)共3 個(gè)16 位定時(shí)器/計(jì)數(shù)器。即定時(shí)器T0、T1、T2</p>&l
41、t;p> (11)外部中斷4 路,下降沿中斷或低電平觸發(fā)電路,Power Down 模式可 由外部中斷低電平觸發(fā)中斷方式喚醒</p><p> (12)通用異步串行口(UART),還可用定時(shí)器軟件實(shí)現(xiàn)多個(gè)UART</p><p> (13)工作溫度范圍:-40~+85℃(工業(yè)級(jí))/0~75℃(商業(yè)級(jí))</p><p> (14) PDIP 封裝<
42、/p><p> 2.1.2 單片機(jī)引腳功能</p><p> STC89C52是一個(gè)有40個(gè)引腳的芯片,引腳配置如圖2-1所示:</p><p> 圖2-1 STC89C52引腳配置</p><p> STC89C52單片機(jī)各個(gè)引腳功能如表2-2所示。</p><p> 表2-2 STC89C51RC/RD+引腳
43、示意圖</p><p> 2.2光電對(duì)管電路的設(shè)計(jì)</p><p> 實(shí)驗(yàn)中設(shè)計(jì)并論證了兩種光電對(duì)管檢測(cè)及調(diào)理電路,電路原理圖分別如圖2-3和圖2-4所示。</p><p> 圖 2-3 采用三極管檢測(cè)電路原理圖</p><p> 圖2-3所示電路中,R1起限流電阻的作用,當(dāng)有光反射回來時(shí),光電對(duì)管中的三極管導(dǎo)通,R2的上端變?yōu)楦唠娖?/p>
44、,此時(shí)VT1飽和導(dǎo)通,三極管集電極輸出低電平。</p><p> 當(dāng)沒有光反射回來時(shí),光電對(duì)管中的三極管不導(dǎo)通,VT1截至,其集電極輸出高電平。</p><p> VT1在該電路中起到濾波整形的作用。</p><p> 經(jīng)實(shí)驗(yàn)和示波器驗(yàn)證,該電路工作性能一般,輸出還有雜散干擾波的成分。如果輸出加施密特觸發(fā)器就可以實(shí)現(xiàn)良好的輸出波形。</p>&l
45、t;p> 但是這種電路用電量比較大,給此種傳感器調(diào)理電路供電的電池壓降較快。究其原因,是因?yàn)楣饷羧龢O管和三極管VT1導(dǎo)通時(shí)的導(dǎo)通電流較大。</p><p> 因此考慮用比較器的方案。</p><p> 圖2-4 采用電壓比較器檢測(cè)電路原理圖</p><p> 在圖2-4中,可調(diào)電阻R3可以調(diào)節(jié)比較器的門限電壓,經(jīng)示波器觀察,輸出波形相當(dāng)規(guī)則,可以直接夠
46、單片機(jī)查詢使用。</p><p> 而且經(jīng)實(shí)驗(yàn)驗(yàn)證給此電路供電的電池的壓降較小。因此我們選擇此電路作為我們的傳感器檢測(cè)與調(diào)理電路。</p><p> 在尋跡傳感器的設(shè)計(jì)中,我們?cè)谲圀w底盤的前端裝有四個(gè)傳感器,用來起到尋跡的作用。</p><p> 安裝在前端的四個(gè)傳感器直接將信號(hào)送給單片機(jī),當(dāng)中間兩個(gè)傳感器中一個(gè)傳回低電平,則為踩線,既調(diào)整車頭方向,當(dāng)四個(gè)傳感
47、器均為高點(diǎn)平時(shí)認(rèn)定為一個(gè)交點(diǎn),并且2個(gè)交點(diǎn)間距離約為25cm。</p><p> 因?yàn)榈貓D為方格,所當(dāng)小車轉(zhuǎn)向時(shí)會(huì)出現(xiàn)四個(gè)傳感器中不定時(shí)離開黑線,為保證能準(zhǔn)確轉(zhuǎn)彎。再因RPR220檢測(cè)到黑線返回高電平,否則為低電平,利用這一原理。當(dāng)小車右轉(zhuǎn)時(shí),位于小車最右端傳感器會(huì)由黑線轉(zhuǎn)到白色區(qū)域,這時(shí)會(huì)產(chǎn)生一個(gè)下降沿,將下降沿接至單片機(jī)外部中斷用于判斷是否已經(jīng)完成轉(zhuǎn)向,左轉(zhuǎn)原理同上。經(jīng)實(shí)驗(yàn)證實(shí)此方法能使小車穩(wěn)定轉(zhuǎn)向。<
48、;/p><p> 2.3火焰?zhèn)鞲衅骷皯?yīng)用</p><p> 火焰?zhèn)鞲衅鞯暮脡膶?duì)于該系統(tǒng)的功能能否實(shí)現(xiàn)十分重要,火焰?zhèn)鞲衅骷捌湔{(diào)理電路如圖2-3-1所示。</p><p> 圖2-5 火焰?zhèn)鞲衅髟韴D</p><p> 圖2-5中,可調(diào)電阻RV1可以調(diào)節(jié)比較器的門限電壓,本電路還能輸出模擬和數(shù)字兩種信號(hào),非常適合本次系統(tǒng)的條件。</p
49、><p> 火焰?zhèn)鞲衅髂軌蛱綔y(cè)到波長在700納米~1000納米范圍內(nèi)的紅外光,探測(cè)角度為60,其中紅外光波長在880納米附近時(shí)候的靈敏度達(dá)到最大。遠(yuǎn)紅外火焰探頭將外界紅外光的強(qiáng)弱變化轉(zhuǎn)化為電流的變化,通過A/D轉(zhuǎn)換器反映為0~255范圍內(nèi)數(shù)值的變化。外界紅外光越強(qiáng),數(shù)值越??;反之則越大。</p><p> 利用四個(gè)火焰?zhèn)鞲衅?,調(diào)節(jié)其中兩個(gè)傳感器門限電壓,使得傳感器能檢測(cè)到整張地圖距離的火焰
50、,再調(diào)節(jié)另兩個(gè)傳感器使得只能檢測(cè)一個(gè)方格距離的火焰。這四個(gè)傳感器分別兩兩置于小車兩側(cè)距離地面約10cm(相當(dāng)于火焰的高度),一遠(yuǎn)一近配合使用。</p><p> 我們將能檢測(cè)整張地圖的傳感器稱為“遠(yuǎn)視”,只能檢測(cè)一格的稱為“近視”。當(dāng)遠(yuǎn)視傳感器檢測(cè)到火焰信號(hào),執(zhí)行滅火程序,小車向檢測(cè)到火源的方向前行。當(dāng)“近視”傳感器檢測(cè)到信號(hào),說明火焰處于當(dāng)前所在方格,觸發(fā)轉(zhuǎn)向開啟風(fēng)扇。</p><p>
51、; 2.4電機(jī)驅(qū)動(dòng)電路的設(shè)計(jì)</p><p> 直流電機(jī)里邊固定有環(huán)狀永磁體,電流通過轉(zhuǎn)子上的線圈產(chǎn)生安培力,當(dāng)轉(zhuǎn)子上的線圈與磁場(chǎng)平行時(shí),再繼續(xù)轉(zhuǎn)受到的磁場(chǎng)方向?qū)⒏淖?,因此此時(shí)轉(zhuǎn)子末端的電刷跟轉(zhuǎn)換片交替接觸,從而線圈上的電流方向也改變,產(chǎn)生的洛倫茲力方向不變,所以電機(jī)能保持一個(gè)方向轉(zhuǎn)動(dòng)。</p><p> 采用電機(jī)驅(qū)動(dòng)芯片L298N作為電機(jī)驅(qū)動(dòng),管腳圖如圖2-6所示,原理圖如圖2-7
52、所示。</p><p> L298N是SGS公司的產(chǎn)品,內(nèi)部包含4通道邏輯驅(qū)動(dòng)電路。是一種二相和四相電機(jī)的專用驅(qū)動(dòng)器,即內(nèi)含二個(gè)H橋的高電壓大電流雙全橋式驅(qū)動(dòng)器,接收標(biāo)準(zhǔn)TTL邏輯電平信號(hào),可驅(qū)動(dòng)46V、2A以下的電機(jī)。</p><p> 圖2-6 L298N管腳</p><p> 圖2-7 電機(jī)驅(qū)動(dòng)原理圖</p><p> L298
53、有兩路電源分別為邏輯電源和動(dòng)力電源,上圖中6V為邏輯電源,12V為動(dòng)力電源。J4接入邏輯電源,J6接入動(dòng)力電源,J1與J2分別為單片機(jī)控制兩個(gè)電機(jī)的輸入端,J3與J5分別與兩個(gè)電極的正負(fù)極相連。</p><p> ENA與ENB直接接入6V邏輯電源也就是說兩個(gè)電機(jī)時(shí)刻都工作在使能狀態(tài),控制電機(jī)的運(yùn)行狀態(tài)只有通過J1與J2兩個(gè)接口。</p><p> 由于我們使用的電機(jī)是線圈式的,在從運(yùn)
54、行狀態(tài)突然轉(zhuǎn)換到停止?fàn)顟B(tài)和從順時(shí)針狀態(tài)突然轉(zhuǎn)換到逆時(shí)針狀態(tài)時(shí)會(huì)形成很大的反向電流,在電路中加入二極管的作用就是在產(chǎn)生反向電流的時(shí)候進(jìn)行泄流,保護(hù)芯片的安全。</p><p><b> 2.5滅火模塊設(shè)計(jì)</b></p><p> 如圖2-8所示,滅火風(fēng)扇的驅(qū)動(dòng)由5v電源供電。利用三級(jí)管的開關(guān)應(yīng)用,實(shí)現(xiàn)單片機(jī)控制風(fēng)扇轉(zhuǎn)停。當(dāng)單片機(jī)給低電平時(shí),風(fēng)扇開始轉(zhuǎn)動(dòng)吹滅火焰,否
55、則不轉(zhuǎn)。</p><p> 圖2-8 滅火風(fēng)扇原理圖</p><p> 2.6避障功能的實(shí)現(xiàn)方法</p><p> 由于火源為不確定位置,所以小車還屬于前進(jìn)并還未檢測(cè)到火焰而遇到障礙物,首先讓小車先后退,在遇到黑線交點(diǎn)時(shí)先右轉(zhuǎn),因?yàn)榈貓D是有限的,所以如果轉(zhuǎn)的方向不是正確的火焰方向,則當(dāng)小車行駛到地圖邊緣時(shí)就180度轉(zhuǎn),就能正確的判斷出火源的具體位置。</
56、p><p><b> 3軟件系統(tǒng)設(shè)計(jì)</b></p><p> 3.1編譯語言及編譯環(huán)境</p><p> 3.1.1匯編語言的概述</p><p> 為了克服機(jī)器語言的缺點(diǎn),用英文字條來代替機(jī)器語言,這些英文字符被稱為助記符,用助記符表示的指令稱為符號(hào)語言或匯編語言。</p><p> 匯
57、編語言是面向機(jī)器的語言,程序設(shè)計(jì)人員必須對(duì)單片機(jī)的硬件有相當(dāng)深入的了解。助記符指令和機(jī)器指令一一對(duì)應(yīng),所以用匯編語言編寫的程序效率高,占用的存儲(chǔ)空間小,運(yùn)行速度快,因此用匯編語言能編寫出最優(yōu)化的程序。匯編語言程序能直接管理和控制硬件設(shè)備(功能部件),它能處理中斷,也能直接訪問存儲(chǔ)器及I/O接口電路。但是,匯編語言和機(jī)器語言一樣,都脫離不開具體機(jī)器的硬件,因此,這兩種語言均是面向機(jī)器的語言,缺乏通用性。</p><p&
58、gt; 3.1.2 C語言概述</p><p> C語言是國際上廣泛流行的計(jì)算機(jī)高級(jí)語言,既可用來寫系統(tǒng)軟件,也可用來寫應(yīng)用軟件。C語言功能豐富,表達(dá)能力強(qiáng),使用靈活方便,應(yīng)用面廣,目標(biāo)程序效率高,可移植性好,既具有高級(jí)語言的優(yōu)點(diǎn),又具有低級(jí)語言的許多特點(diǎn)。因此,C語言特別適合于編寫系統(tǒng)軟件。它的特點(diǎn)如下:</p><p> (1)語言簡潔、緊湊,使用方便、靈活。</p>
59、<p> (2)運(yùn)算符豐富,數(shù)據(jù)結(jié)構(gòu)豐富,具有現(xiàn)代化語言的各種數(shù)據(jù)結(jié)構(gòu)。</p><p> (4)具有結(jié)構(gòu)化的控制語句用函數(shù)作為程序的模塊單位,便于實(shí)現(xiàn)程序的模塊化。</p><p> (5)語法限制不大嚴(yán)格,程序設(shè)計(jì)自由度大。</p><p> (6)C語言允許直接訪問物理地址。</p><p> (7)生成目標(biāo)代碼
60、質(zhì)量高,程序執(zhí)行效率高,用C語言寫的程序可移植性好。</p><p> 3.1.3 編譯語言及編譯環(huán)境綜述</p><p> 兼于以上兩種編譯語言的優(yōu)缺點(diǎn),我選擇了Keil軟件。Keil軟件是目前最流行開發(fā)MCS-51系列單片機(jī)的軟件,這從近年來各仿真機(jī)廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案
61、,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。如果使用C語言編程,那么Keil幾乎就是不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令事情變得事半功倍。</p><p><b> 3.2程序解析</b></p><p> 3.2.1各函數(shù)功能</p><p><b>
62、 電機(jī)的正反轉(zhuǎn):</b></p><p> void DC_LEFT(void)</p><p><b> {</b></p><p> DC1_1 = 1;</p><p> DC1_2 = 0;</p><p><b> }</b><
63、/p><p> void DC_RIGHT(void) </p><p><b> {</b></p><p> DC2_1 = 1;</p><p> DC2_2 = 0;</p><p><b> }</b></p><p> voi
64、d DC_CLOSE_LEFT(void)</p><p><b> {</b></p><p> DC1_1 = DC1_2 = 0;</p><p><b> }</b></p><p> void DC_CLOSE_RIGHT(void)</p><p>&l
65、t;b> {</b></p><p> DC2_1 = DC2_2 = 0;</p><p><b> }</b></p><p> void DC_LEFT_BACK(void)</p><p><b> {</b></p><p> D
66、C1_1 = 0;</p><p> DC1_2 = 1;</p><p><b> }</b></p><p> void DC_RIGHT_BACK(void) </p><p><b> {</b></p><p> DC2_1 = 0;</p&g
67、t;<p> DC2_2 = 1;</p><p><b> }</b></p><p> 其中DC1為左輪,DC2為右輪。此函數(shù)分別控制兩個(gè)電機(jī)正反轉(zhuǎn),通過左右兩輪正反轉(zhuǎn)的配合能實(shí)現(xiàn)各個(gè)方向的轉(zhuǎn)彎。</p><p><b> 尋跡功能:</b></p><p> if(!N
68、EAR_LEFT_F && !STOP && !NEAR_RIGHT_F)</p><p><b> {</b></p><p> if(!Back_Flag && !BACK)</p><p><b> {</b></p><p> if(l
69、eft !=0 && right != 0)</p><p><b> {</b></p><p> DC_LEFT();</p><p> DC_RIGHT();</p><p><b> }</b></p><p> if(left == 0 &
70、amp;& right != 0)</p><p><b> {</b></p><p> DC_LEFT();</p><p> DC_CLOSE_RIGHT();</p><p><b> }</b></p><p> if(right ==0 &
71、;& left != 0)</p><p><b> {</b></p><p> DC_RIGHT();</p><p> DC_CLOSE_LEFT();</p><p><b> }</b></p><p><b> }</b>&
72、lt;/p><p> else if(!NEAR_LEFT_F && !NEAR_RIGHT_F)</p><p><b> BACK = 1;</b></p><p> 根據(jù)尋跡模塊傳回的信號(hào),判斷小車是否超出黑線,左右都沒有超出,則執(zhí)行前進(jìn)函數(shù);當(dāng)左輪超出,執(zhí)行右轉(zhuǎn)函數(shù);當(dāng)右輪超出,執(zhí)行左轉(zhuǎn)函數(shù);當(dāng)小車回到黑線上,繼續(xù)前進(jìn)
73、。通過不斷的查詢實(shí)現(xiàn)尋跡功能。</p><p><b> 火焰位置判斷:</b></p><p> if(first && last)</p><p><b> {</b></p><p> if(!IR_RIGHT)</p><p> CORNER
74、_RIGHT = 1;</p><p><b> else </b></p><p> CORNER_RIGHT = 0;</p><p> if(!IR_LEFT)</p><p> CORNER_LEFT = 1;</p><p><b> else</b>&l
75、t;/p><p> CORNER_LEFT = 0;</p><p> if(!IR_RIGHT || !IR_LEFT)</p><p><b> BACK = 0;</b></p><p><b> }</b></p><p> if(CORNER_RIGHT)&l
76、t;/p><p><b> {</b></p><p> DC_CLOSE_RIGHT();</p><p> DC_LEFT();</p><p><b> if(BACK)</b></p><p> PASS = last;</p><p>
77、<b> else</b></p><p> PASS = left;</p><p><b> }</b></p><p> if(CORNER_LEFT)</p><p><b> {</b></p><p> DC_RIGHT();&l
78、t;/p><p> DC_CLOSE_LEFT();</p><p><b> if(BACK)</b></p><p> PASS = first;</p><p><b> else</b></p><p> PASS = right;</p><
79、;p><b> }</b></p><p> void EX1_ISR (void) interrupt 0</p><p><b> {</b></p><p> CORNER_RIGHT = 0;</p><p> CORNER_LEFT = 0;</p><
80、p> if(!IR_RIGHT || !IR_LEFT)</p><p><b> {</b></p><p> if(first && last)</p><p><b> BACK = 0;</b></p><p><b> }</b><
81、;/p><p><b> }</b></p><p> 根據(jù)小車兩側(cè)火焰?zhèn)鞲衅餍盘?hào)判斷火焰位置,當(dāng)火焰出現(xiàn)在小車右側(cè),將右轉(zhuǎn)變量置1,當(dāng)火焰出現(xiàn)在小車左側(cè),將左轉(zhuǎn)變量置1;再通過判斷兩個(gè)變量的值來實(shí)現(xiàn)不同的轉(zhuǎn)向。因?yàn)檫@里為90度轉(zhuǎn)彎,所以配合尋跡模塊的黑線傳回高電平,超出黑線低電平特點(diǎn),當(dāng)小車轉(zhuǎn)過90度后,尋跡模塊邊緣兩側(cè)的傳感器必將由黑線到白色區(qū)域。利用這個(gè)下降沿觸
82、發(fā)外部中斷,在中斷中將轉(zhuǎn)向信號(hào)清零,使其能繼續(xù)前進(jìn)。其中PASS為外部中斷端口。</p><p><b> 滅火功能:</b></p><p> if(!NEAR_LEFT)</p><p> NEAR_LEFT_F = 1;</p><p> if(NEAR_LEFT_F)</p><p&g
83、t;<b> {</b></p><p> DC_LEFT_BACK();</p><p> DC_RIGHT();</p><p><b> }</b></p><p> if(!NEAR_RIGHT)</p><p> NEAR_RIGHT_F = 1;<
84、;/p><p> if(NEAR_RIGHT_F)</p><p><b> {</b></p><p> DC_RIGHT_BACK();</p><p> DC_LEFT();</p><p><b> }</b></p><p><b
85、> if(!IR_S)</b></p><p><b> {</b></p><p> NEAR_RIGHT_F = 0;</p><p> NEAR_LEFT_F = 0;</p><p> STOP = 1; </p><p><b> DC_S =
86、1;</b></p><p> DC_CLOSE_RIGHT();</p><p> DC_CLOSE_LEFT();</p><p><b> }</b></p><p><b> else</b></p><p><b> DC_S = 0
87、;</b></p><p> 當(dāng)小車兩側(cè)的近火焰?zhèn)鞲衅鱾骰氐碗娖?,則說明火焰處于小車當(dāng)前所在的方格內(nèi)。當(dāng)火焰在小車左側(cè),則讓小車左輪反轉(zhuǎn)右輪正轉(zhuǎn),實(shí)現(xiàn)小車原地左方向打轉(zhuǎn);右側(cè)則讓左輪正轉(zhuǎn)右輪反轉(zhuǎn),讓小車右方向打轉(zhuǎn)。再當(dāng)置于小車前端的火焰?zhèn)鞲衅鱾骰氐碗娖剑f明小車車頭正對(duì)著火焰,開啟風(fēng)扇,當(dāng)火焰吹滅后,風(fēng)扇停止轉(zhuǎn)動(dòng)。</p><p><b> 完整程序見附錄A。&l
88、t;/b></p><p> 3.2.2程序流程圖</p><p><b> 圖3-1程序流程圖</b></p><p><b> 4測(cè)試結(jié)果</b></p><p><b> 1.測(cè)試儀器</b></p><p> 模擬跑道、計(jì)算機(jī)、開
89、關(guān)電源、示波器、數(shù)字萬用表等。</p><p><b> 2.測(cè)試方法</b></p><p> 完全按照要求模擬實(shí)驗(yàn)環(huán)境,用地板革(150cmX150cm)制作模擬場(chǎng)地,在地板革上用黑膠帶做成網(wǎng)格,黑膠帶寬1.5cm,跑道長度寬度均為150cm,反復(fù)使小車在模擬環(huán)境中進(jìn)行實(shí)驗(yàn),并記錄各項(xiàng)數(shù)據(jù)。</p><p> 3.測(cè)試數(shù)據(jù)及測(cè)試結(jié)果分
90、析</p><p> 測(cè)試顯示,當(dāng)蠟燭位置不是位于方格中間時(shí),小車不能穩(wěn)定的實(shí)現(xiàn)轉(zhuǎn)向。</p><p> 問題分析:由于轉(zhuǎn)向的觸發(fā)必須是在小車在黑線交點(diǎn)的同時(shí)檢測(cè)到火焰,由于傳感器位置不合理,使當(dāng)小車到黑色交點(diǎn)的時(shí)候不能準(zhǔn)確的檢測(cè)到火焰,而不能穩(wěn)定的發(fā)出轉(zhuǎn)向信號(hào)。</p><p> 問題解決:調(diào)整火焰?zhèn)鞲衅鞯奈恢谩?lt;/p><p>&l
91、t;b> 結(jié)束語</b></p><p> 小車的特點(diǎn)能實(shí)現(xiàn)自動(dòng)尋路找到火源,但由于火焰?zhèn)鞲衅鞯臋z測(cè)角度為60度,并不能在安全區(qū)檢測(cè)到整張地圖,所以對(duì)于火源的位置有一定的局限。解決這一問題可以使用多個(gè)遠(yuǎn)紅外火焰?zhèn)鞲衅髋帕谐梢欢ń嵌?,?shí)現(xiàn)對(duì)全地圖的檢測(cè)。</p><p> 滅火全程均為自動(dòng),不需要人員干擾、遙控。</p><p> 出現(xiàn)的一些
92、問題,由于尋跡模塊安裝位置不是很合理,所以偶爾會(huì)出現(xiàn)在黑線交點(diǎn)處越出軌道的現(xiàn)象,后經(jīng)過對(duì)模塊的調(diào)整和程序上配合這一現(xiàn)象有所好轉(zhuǎn)。這一問題給了我一個(gè)深刻的教訓(xùn),在設(shè)計(jì)系統(tǒng)前就應(yīng)考慮到可能會(huì)出現(xiàn)的問題,而不能只一味的追求美觀。</p><p> 通過這幾天的設(shè)計(jì),我們不但增強(qiáng)了實(shí)踐能力和協(xié)作精神,而且懂得了聯(lián)系實(shí)際的重要性,這對(duì)我們以后的學(xué)習(xí)和工作不無裨益。當(dāng)然,我們的設(shè)計(jì)還存在著一些缺陷,有待于在將來的設(shè)計(jì)中進(jìn)一
93、步提高,在此懇請(qǐng)各位老師批評(píng)指正。</p><p><b> 致謝</b></p><p> 在此,我首先要衷心地感謝我的指導(dǎo)老師,在這次設(shè)計(jì)中遇到的每個(gè)問題都是老師給予解答,詳細(xì)設(shè)計(jì)等整個(gè)過程中都給予了我悉心的指導(dǎo),給我提出了許多極具價(jià)值的建議。在生活上兩位老師同樣給予了我極大的支持和關(guān)心,在為人處世上也對(duì)我進(jìn)行諄諄的教導(dǎo),這些都將對(duì)我今后的學(xué)習(xí)和工作產(chǎn)生深刻的
94、影響,使我獲益匪淺。除了敬佩老師的專業(yè)水平和綜合素養(yǎng)外,嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和科學(xué)的研究精神也是我永遠(yuǎn)學(xué)習(xí)的榜樣,必將對(duì)我今后的學(xué)習(xí)和工作產(chǎn)生深遠(yuǎn)的影響,老師傳授給我的知識(shí)也必然會(huì)在我人生的學(xué)習(xí)階段乃至各個(gè)階段發(fā)揮重要的作用。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]何玲.蔡莉莎.曾維鵬.單片機(jī)最小系統(tǒng)的設(shè)計(jì)與制作.北京:電子工業(yè)出版社,20
95、12.1</p><p> [2]譚浩強(qiáng).C程序設(shè)計(jì).北京:清華大學(xué)初版社,2005.</p><p> [3]翟玉文.梁偉.艾學(xué)忠.電子設(shè)計(jì)與實(shí)踐[M].北京:中國電力出版社,2005.256-257.</p><p> [4]張景元.基于單片機(jī)的多用途定時(shí)器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子工程師,2000年第8期22-31.</p><p>
96、; [5]張專成.趙懷勛.單片機(jī)測(cè)控系統(tǒng)中的監(jiān)視定時(shí)器[J].武警技術(shù)學(xué)院學(xué)報(bào),Mar 1997.</p><p> [6]馮成龍.傳感器應(yīng)用技術(shù)項(xiàng)目化教程.北京:清華大學(xué)出版社;北京交通大學(xué)出版社,2009.7</p><p><b> 附錄A:程序清單</b></p><p> #include <reg52.h><
97、;/p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> void DC_LEFT(void);</p><p> void DC_RIGHT(void);</p><p> void DC_CLOSE_LEF
98、T(void);</p><p> void DC_CLOSE_RIGHT(void);</p><p> void DC_LEFT_BACK(void);</p><p> void DC_RIGHT_BACK(void);</p><p> void EX0init(void);</p><p> voi
99、d RUN_DC(void);</p><p> void IR_Rev (void);</p><p> sbit DC1_1 = P1^4;</p><p> sbit DC1_2 = P1^5;</p><p> sbit DC2_1 = P1^6;</p><p> sbit DC2_2 = P1^7
100、;</p><p> sbit IR = P1^2;</p><p> sbit first = P2^3;</p><p> sbit left = P2^2;</p><p> sbit right = P2^1; </p><p> sbit last = P2^0;</p>&l
101、t;p> sbit PASS = P3^2;</p><p> sbit IR_RIGHT = P1^1;</p><p> sbit IR_LEFT = P1^0;</p><p> sbit NEAR_LEFT = P3^0;</p><p> sbit NEAR_RIGHT = P3^1;</p><
102、p> sbit IR_S = P1^3;</p><p> sbit DC_S = P0^0;</p><p> bit NEAR_LEFT_F = 0;</p><p> bit NEAR_RIGHT_F = 0;</p><p> bit BACK = 0;</p><p> bit CORNER
103、_RIGHT = 0;</p><p> bit CORNER_LEFT = 0;</p><p> bit STOP = 0;</p><p> bit Back_Flag;</p><p> void main(void)</p><p><b> {</b></p>
104、<p> EX0init();</p><p><b> while(1)</b></p><p><b> {</b></p><p><b> IR_Rev();</b></p><p> RUN_DC();</p><p>&
105、lt;b> }</b></p><p><b> }</b></p><p> /*------------------------------------------------</p><p><b> 左輪前進(jìn)驅(qū)動(dòng)</b></p><p> ------------
106、------------------------------------*/</p><p> void DC_LEFT(void)</p><p><b> {</b></p><p> DC1_1 = 1;</p><p> DC1_2 = 0;</p><p><b&g
107、t; }</b></p><p> /*------------------------------------------------</p><p><b> 右輪前進(jìn)驅(qū)動(dòng)</b></p><p> ------------------------------------------------*/</p>
108、<p> void DC_RIGHT(void) </p><p><b> {</b></p><p> DC2_1 = 1;</p><p> DC2_2 = 0;</p><p><b> }</b></p><p> /*--------
109、----------------------------------------</p><p><b> 左輪停止</b></p><p> ------------------------------------------------*/</p><p> void DC_CLOSE_LEFT(void)</p>&l
110、t;p><b> {</b></p><p> DC1_1 = DC1_2 = 0;</p><p><b> }</b></p><p> /*------------------------------------------------</p><p><b> 右
111、輪停止</b></p><p> ------------------------------------------------*/</p><p> void DC_CLOSE_RIGHT(void)</p><p><b> {</b></p><p> DC2_1 = DC2_2 = 0;&l
112、t;/p><p><b> }</b></p><p> /*------------------------------------------------</p><p><b> 左輪后退驅(qū)動(dòng)</b></p><p> -----------------------------------
113、-------------*/</p><p> void DC_LEFT_BACK(void)</p><p><b> {</b></p><p> DC1_1 = 0;</p><p> DC1_2 = 1;</p><p><b> }</b><
114、;/p><p> /*------------------------------------------------</p><p><b> 右輪后退驅(qū)動(dòng)</b></p><p> ------------------------------------------------*/</p><p> void D
115、C_RIGHT_BACK(void) </p><p><b> {</b></p><p> DC2_1 = 0;</p><p> DC2_2 = 1;</p><p><b> }</b></p><p> /*----------------------
116、--------------------------</p><p> 避障紅外發(fā)射接收函數(shù)</p><p> ------------------------------------------------*/</p><p> void IR_Rev (void)</p><p><b> {</b><
117、/p><p><b> if(!IR)</b></p><p> Back_Flag = 1;</p><p><b> else</b></p><p> Back_Flag = 0;</p><p><b> }</b></p>
118、<p> /*------------------------------------------------</p><p><b> 外部中斷0初始化</b></p><p> ------------------------------------------------*/</p><p> void EX0init(
119、void)</p><p><b> {</b></p><p> IT0 = 1; //指定外部中斷0下降沿觸發(fā),INT0 (P3.2)</p><p> EX0 = 1; //使能外部中斷</p><p><b> IT1=1;</b></p><p>&
120、lt;b> EX1=1;</b></p><p> EA = 1; //開總中斷</p><p><b> }</b></p><p> void RUN_DC(void)</p><p><b> {</b></p><p> if(!N
121、EAR_LEFT_F && !STOP && !NEAR_RIGHT_F)</p><p><b> {</b></p><p> if(!Back_Flag && !BACK)</p><p><b> {</b></p><p> if(l
122、eft !=0 && right != 0)</p><p><b> {</b></p><p> DC_LEFT();</p><p> DC_RIGHT();</p><p><b> }</b></p><p> if(left == 0 &
123、amp;& right != 0)</p><p><b> {</b></p><p> DC_LEFT();</p><p> DC_CLOSE_RIGHT();</p><p><b> }</b></p><p> if(right ==0 &
124、;& left != 0)</p><p><b> {</b></p><p> DC_RIGHT();</p><p> DC_CLOSE_LEFT();</p><p><b> }</b></p><p><b> }</b>&
125、lt;/p><p> else if(!NEAR_LEFT_F && !NEAR_RIGHT_F)</p><p><b> BACK = 1;</b></p><p> if(first && last)</p><p><b> {</b></p>
126、<p> if(!IR_RIGHT)</p><p> CORNER_RIGHT = 1;</p><p><b> else </b></p><p> CORNER_RIGHT = 0;</p><p> if(!IR_LEFT)</p><p> CORNER_LE
127、FT = 1;</p><p><b> else</b></p><p> CORNER_LEFT = 0;</p><p> if(!IR_RIGHT || !IR_LEFT)</p><p><b> BACK = 0;</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)--全自動(dòng)送料小車設(shè)計(jì)
- 全自動(dòng)洗衣機(jī)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---全自動(dòng)加濕器的硬件設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--智能全自動(dòng)門設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---全自動(dòng)加濕器的硬件設(shè)計(jì)
- plc全自動(dòng)洗衣機(jī)畢業(yè)設(shè)計(jì)
- 全自動(dòng)洗衣機(jī)控制畢業(yè)設(shè)計(jì)
- 全自動(dòng)洗衣機(jī)plc畢業(yè)設(shè)計(jì)
- 全自動(dòng)洗衣機(jī)畢業(yè)設(shè)計(jì)論文
- 全自動(dòng)洗衣機(jī)畢業(yè)設(shè)計(jì)論文
- plc全自動(dòng)洗衣機(jī)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---全自動(dòng)存包柜的設(shè)計(jì)
- 自動(dòng)引導(dǎo)小車畢業(yè)設(shè)計(jì)(含全套資料)
- 【畢業(yè)設(shè)計(jì)】自動(dòng)導(dǎo)引小車(agv)系統(tǒng)的設(shè)計(jì)
- 全自動(dòng)洗衣機(jī)的控制畢業(yè)設(shè)計(jì)
- plc全自動(dòng)洗衣機(jī)的畢業(yè)設(shè)計(jì)
- 全自動(dòng)多功能醫(yī)用床設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 基于plc全自動(dòng)洗衣機(jī)畢業(yè)設(shè)計(jì)
- 全自動(dòng)洗衣機(jī)plc控制畢業(yè)設(shè)計(jì)
- 波輪式全自動(dòng)洗衣機(jī)畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論