版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 智能機(jī)器人能做一些人不能做或危險(xiǎn)的事且能提高工作效率,能創(chuàng)造巨大的經(jīng)濟(jì)效應(yīng),是一個(gè)具有巨大潛力的研究領(lǐng)域。AVR單片機(jī)是1997年由ATMEL公司研發(fā)出的增強(qiáng)型內(nèi)置Flash的RISC(Reduced Instruction Set CPU) 精簡(jiǎn)指令集高速8位單片機(jī)。AVR的單片機(jī)可以廣泛應(yīng)用于計(jì)算機(jī)外部設(shè)備、工業(yè)實(shí)時(shí)控制
2、、儀器儀表、通訊設(shè)備、家用電器等各個(gè)領(lǐng)域。ATmega8是一種比C51系列更進(jìn)步的8位單片機(jī)。單片微計(jì)算機(jī)自20世紀(jì)70年代問(wèn)世以來(lái),已對(duì)人類(lèi)社會(huì)產(chǎn)生了巨大的影響。目前在工業(yè)控制、智能儀器儀表、辦公室自動(dòng)化、家用電器等諸多領(lǐng)域,到處都可以看見(jiàn)單片機(jī)的蹤影,單片機(jī)技術(shù)開(kāi)發(fā)和應(yīng)用水平已成為一個(gè)國(guó)家工業(yè)化發(fā)展水平的標(biāo)志之一。</p><p> 關(guān)鍵詞:智能車(chē),單片機(jī),控制系統(tǒng)</p><p>
3、<b> ABSTRACT</b></p><p> Intelligent robot can not do or can do some dangerous things and can improve efficiency, can create significant economic effect, is a potential area of research. AVR M
4、icrocontroller ATMEL Corporation in 1997 developed by the enhanced built-in Flash of the RISC (Reduced Instruction Set CPU) high-speed 8-bit RISC microcontroller.AVR microcontroller can be widely used in computer periphe
5、rals, industrial real-time control, instrumentation, communications equipment, household appliances and other fi</p><p> Keywords: Intelligent vehicle,Microcontroller,Control system</p><p><
6、b> 目 錄</b></p><p><b> 1 緒 論1</b></p><p> 1.1研究的背景及其意義1</p><p> 1.2 智能車(chē)的發(fā)展趨勢(shì)2</p><p> 2 系統(tǒng)硬件設(shè)計(jì)5</p><p> 2.1 系統(tǒng)整體方案設(shè)計(jì)5</p&
7、gt;<p> 2.2 各大模塊的設(shè)計(jì)6</p><p> 3 系統(tǒng)軟件設(shè)計(jì)16</p><p> 3.1 WinAVR集成開(kāi)發(fā)環(huán)境16</p><p> 3.2 SL ISP下載工具16</p><p> 3.3 串口調(diào)試軟件16</p><p> 3.4 WinAVR簡(jiǎn)介16&
8、lt;/p><p> 3.5 編程思路25</p><p> 4 總結(jié)與展望32</p><p><b> 參考文獻(xiàn)34</b></p><p><b> 致 謝35</b></p><p> 附 錄 硬件連接圖36</p><p>&
9、lt;b> 1 緒 論</b></p><p> 1.1研究的背景及其意義</p><p> 隨著全球經(jīng)濟(jì)的發(fā)展,道路上車(chē)輛急劇增加,但道路的拓寬速度是有限的,道路變得越來(lái)越擁擠,與此同時(shí),交通事故數(shù)量也急劇增加。交通事故已成為“世界第一害”,而中國(guó)是世界上交通事故死亡人數(shù)最多的國(guó)家之一。從二十世紀(jì)八十年代末中國(guó)交通事故年死亡人數(shù)首次超過(guò)五萬(wàn)人,中國(guó)(未包括港澳臺(tái)
10、地區(qū))每年交通事故50萬(wàn)起,因交通事故死亡人數(shù)均超過(guò)10萬(wàn)人,已經(jīng)連續(xù)十余年居世界第一。2009年,中國(guó)汽車(chē)保有量約占世界汽車(chē)保有量的百分之三,但交通事故死亡人數(shù)卻占世界的百分之十六。以父親為例,父親開(kāi)了十余年車(chē),大大小小的交通事故發(fā)生了數(shù)次,每次都讓親朋好友擔(dān)心不已,也讓事故另一方的親朋好友擔(dān)心不已。因此如果道路上的車(chē)輛都能自動(dòng)行走,那該有多好呀!</p><p> 智能汽車(chē)與一般所說(shuō)的自動(dòng)駕駛有所不同,它指
11、的是利用多種傳感器和智能公路技術(shù)實(shí)現(xiàn)的汽車(chē)自動(dòng)駕駛。智能汽車(chē)首先有一套導(dǎo)航信息資料庫(kù),存有全國(guó)高速公路、普通公路、城市道路以及各種服務(wù)設(shè)施(餐飲、旅館、加油站、景點(diǎn)、停車(chē)場(chǎng))的信息資料;其次是GPS定位系統(tǒng),利用這個(gè)系統(tǒng)精確定位車(chē)輛所在的位置,與道路資料庫(kù)中的數(shù)據(jù)相比較,確定以后的行駛方向;道路狀況信息系統(tǒng),由交通管理中心提供實(shí)時(shí)的前方道路狀況信息,如堵車(chē)、事故等,必要時(shí)及時(shí)改變行駛路線;車(chē)輛防碰系統(tǒng),包括探測(cè)雷達(dá)、信息處理系統(tǒng)、駕駛控
12、制系統(tǒng) ,控制與其他車(chē)輛的距離,在探測(cè)到障礙物時(shí)及時(shí)減速或剎車(chē),并把信息傳給指揮中心和其他車(chē)輛;緊急報(bào)警系統(tǒng),如果出了事故,自動(dòng)報(bào)告指揮中心進(jìn)行救援;無(wú)線通信系統(tǒng),用于汽車(chē)與指揮中心的聯(lián)絡(luò);自動(dòng)駕駛系統(tǒng),用于控制汽車(chē)的點(diǎn)火、改變速度和轉(zhuǎn)向等。</p><p> 智能車(chē)輛是一個(gè)集環(huán)境感知、規(guī)劃決策、多等級(jí)輔助駕駛等功能于一體的綜合系統(tǒng),它集中運(yùn)用了計(jì)算機(jī)、現(xiàn)代傳感、信息融合、通訊、人工智能及自動(dòng)控制等技術(shù),是典型
13、的高新技術(shù)綜合體。目前對(duì)智能車(chē)輛的研究主要致力于提高汽車(chē)的安全性、舒適性,以及提供優(yōu)良的人車(chē)交互界面。近年來(lái),智能車(chē)輛己經(jīng)成為世界車(chē)輛工程領(lǐng)域研究的熱點(diǎn)和汽車(chē)工業(yè)增長(zhǎng)的新動(dòng)力,很多發(fā)達(dá)國(guó)家都將其納入到各自重點(diǎn)發(fā)展的智能交通系統(tǒng)當(dāng)中。</p><p> 通常對(duì)車(chē)輛的操作實(shí)質(zhì)上可視為對(duì)一個(gè)多輸入、多輸出、輸入輸出關(guān)系復(fù)雜多變、不確定多干擾源的復(fù)雜非線性系統(tǒng)的控制過(guò)程。駕駛員既要接受環(huán)境如道路、擁擠、方向、行人等的信
14、息,還要感受汽車(chē)如車(chē)速、側(cè)向偏移、橫擺角速度等的信息,然后經(jīng)過(guò)判斷、分析和決策,并與自己的駕駛經(jīng)驗(yàn)相比較,確定出應(yīng)該做的操縱動(dòng)作,最后由身體、手、腳等來(lái)完成操縱車(chē)輛的動(dòng)作。因此在整個(gè)駕駛過(guò)程中,駕駛員的人為因素占了很大的比重。一旦出現(xiàn)駕駛員長(zhǎng)時(shí)間駕車(chē)、疲勞駕車(chē)、判斷失誤的情況,很容易造成交通事故。</p><p> 智能汽車(chē)是一種正在研制的新型高科技汽車(chē),這種汽車(chē)不需要人去駕駛,人只舒服地坐在車(chē)上享受這高科技的
15、成果就行了。因?yàn)檫@種汽車(chē)上裝有相當(dāng)于汽車(chē)的“眼睛”、“大腦”和“腳”的電視攝像機(jī)、電子計(jì)算機(jī)和自動(dòng)操縱系統(tǒng)之類(lèi)的裝置,這些裝置都裝有非常復(fù)雜的電腦程序,所以這種汽車(chē)能和人一樣會(huì)“思考”、“判斷”、“行走”,可以自動(dòng)啟動(dòng)、加速、剎車(chē),可以自動(dòng)繞過(guò)地面障礙物。在復(fù)雜多變的情況下,它的“大腦”能隨機(jī)應(yīng)變,自動(dòng)選擇最佳方案,指揮汽車(chē)正常、順利地行駛。</p><p> 智能汽車(chē)的“眼睛”是裝在汽車(chē)右前方、上下相隔50厘
16、米處的兩臺(tái)電視攝像機(jī),攝像機(jī)內(nèi)有一個(gè)發(fā)光裝置,可同時(shí)發(fā)出一條光束,交匯于一定距離,物體的圖像只有在這個(gè)距離才能被攝取而重疊?!把劬Α蹦茏R(shí)別車(chē)前5~20米之間的臺(tái)形平面、高度為10厘米以上的障礙物。如果前方有障礙物,“眼睛” 就會(huì)向“大腦”發(fā)出信號(hào),“大腦”根據(jù)信號(hào)和當(dāng)時(shí)當(dāng)?shù)氐膶?shí)際情況,判斷是否通過(guò)、繞道、減速或緊急制動(dòng)和停車(chē),并選擇最佳方案,然后以電信號(hào)的方式,指令汽車(chē)的“腳”進(jìn)行停車(chē)、后退或減速。智能汽車(chē)的“腳”就是控制汽車(chē)行駛的轉(zhuǎn)向
17、器、制動(dòng)器。</p><p> 無(wú)人駕駛的智能汽車(chē)將是新世紀(jì)汽車(chē)技術(shù)飛躍發(fā)展的重要標(biāo)志??上驳氖牵悄芷?chē)已從設(shè)想走向?qū)嵺`。隨著科技的飛速發(fā)展,相信不久的將來(lái),我們都可以領(lǐng)略到智能汽車(chē)的風(fēng)采。</p><p> 所以,智能汽車(chē)實(shí)際上是智能汽車(chē)和智能公路組成的系統(tǒng),目前主要是智能公路的條件還不具備,而在技術(shù)上已經(jīng)可以解決。在智能汽車(chē)的目標(biāo)實(shí)現(xiàn)之前,實(shí)際上已經(jīng)出現(xiàn)許多輔助駕駛系統(tǒng),已經(jīng)廣泛
18、應(yīng)用在汽車(chē)上,如智能雨刷,可以自動(dòng)感應(yīng)雨水及雨量,自動(dòng)開(kāi)啟和停止;自動(dòng)前照燈,在黃昏光線不足時(shí)可以自動(dòng)打開(kāi);智能空調(diào),通過(guò)檢測(cè)人皮膚的溫度來(lái)控制空調(diào)風(fēng)量和溫度;智能懸架,也稱(chēng)主動(dòng)懸架,自動(dòng)根據(jù)路面情況來(lái)控制懸架行程,減少顛簸;防打瞌睡系統(tǒng),用監(jiān)測(cè)駕駛員的眨眼情況,來(lái)確定是否很疲勞,必要時(shí)停車(chē)報(bào)警……計(jì)算機(jī)技術(shù)的廣泛應(yīng)用,為汽車(chē)的智能化提供了廣闊的前景[1]。</p><p> 1.2 智能車(chē)的發(fā)展趨勢(shì)</
19、p><p> 雖然此次畢業(yè)設(shè)計(jì)研究的只是體積較小的智能小車(chē),但希望此次的畢業(yè)設(shè)計(jì)能為智能汽車(chē)的研究提供一個(gè)小的樣本,如果此次的畢業(yè)設(shè)計(jì)能為汽車(chē)的智能化以及交通狀況的改善做出一點(diǎn)微不足道的貢獻(xiàn),此次畢業(yè)設(shè)計(jì)就將充滿意義。</p><p> 主動(dòng)安全絕對(duì)是未來(lái)智能汽車(chē)最為關(guān)鍵的技術(shù)核心,特別是在自動(dòng)防撞設(shè)計(jì)上,主要內(nèi)容包括車(chē)體前方/后方/側(cè)邊碰撞預(yù)警和緩解、車(chē)道偏離示警、倒車(chē)影像辨識(shí)系統(tǒng)、盲點(diǎn)
20、預(yù)警、駕駛疲勞警示和自動(dòng)煞車(chē)控制等。未來(lái)智能汽車(chē)將包含計(jì)算機(jī)、移動(dòng)通訊、自動(dòng)控制等使車(chē)輛更具舒適性、娛樂(lè)性、安全性、方便性的多項(xiàng)技術(shù)。未來(lái)智能汽車(chē)的系統(tǒng)將由兩部分組成,一部分是車(chē)輛本身的內(nèi)部網(wǎng)絡(luò)系統(tǒng),它由車(chē)載網(wǎng)絡(luò)計(jì)算機(jī)控制;另一部分是車(chē)輛外部的聯(lián)系網(wǎng)絡(luò)系統(tǒng),包括GPS監(jiān)測(cè)中心、互聯(lián)網(wǎng)及區(qū)域網(wǎng)服務(wù)商、車(chē)輛服務(wù)中心、單位或家庭電腦等[2]。隨著汽車(chē)的智能化,未來(lái)汽車(chē)的安全性將得到質(zhì)的提升,必將大大減少交通事故的發(fā)生,如此便不會(huì)有那么多的人生
21、悲劇發(fā)生,也會(huì)讓每一位司機(jī)的家人安心、不會(huì)擔(dān)心到天亮。</p><p> 中國(guó)從上世紀(jì)80年代開(kāi)始著手無(wú)人駕駛系統(tǒng)的研制開(kāi)發(fā),雖與國(guó)外相比還有一些距離,但目前也取得了階段性成果。國(guó)內(nèi)清華大學(xué)、國(guó)防科技大學(xué)、上海交通大學(xué)、西安交通大學(xué)、吉林大學(xué)、同濟(jì)大學(xué)等都有過(guò)無(wú)人駕駛汽車(chē)的研究項(xiàng)目。</p><p> 1992年,國(guó)防科技大學(xué)研制成功了中國(guó)第一輛真正意義上的無(wú)人駕駛汽車(chē)。由計(jì)算機(jī)及其配
22、套的檢測(cè)傳感器和液壓控制系統(tǒng)組成的汽車(chē)計(jì)算機(jī)自動(dòng)駕駛系統(tǒng),被安裝在一輛國(guó)產(chǎn)的中型面包車(chē)上,使該車(chē)既保持了原有的人工駕駛性能,又能夠用計(jì)算機(jī)控制進(jìn)行自動(dòng)駕駛行車(chē)。2000年6月,國(guó)防科技大學(xué)研制的第4代無(wú)人駕駛汽車(chē)試驗(yàn)成功,最高時(shí)速達(dá)76km,創(chuàng)下國(guó)內(nèi)最高紀(jì)錄。2003年7月,國(guó)防科技大學(xué)和中國(guó)一汽聯(lián)合研發(fā)的紅旗無(wú)人駕駛轎車(chē)高速公路試驗(yàn)成功,自主駕駛最高穩(wěn)定時(shí)速13Okm,其總體技術(shù)性能和指標(biāo)已經(jīng)達(dá)到世界先進(jìn)水平。</p>
23、<p> THMR—V(TsingHua Mobile Robot V)清華V型智能車(chē)是清華大學(xué)計(jì)算機(jī)系智能技術(shù)與系統(tǒng)國(guó)家重點(diǎn)實(shí)驗(yàn)室在中國(guó)科學(xué)院院士張拔主持下研制的新一代智能移動(dòng)機(jī)器人,兼有面向高速公路和一般道路的功能。車(chē)體采用道奇7座廂式車(chē)改裝,裝備有彩色攝像機(jī)和激光測(cè)距儀組成的道路與障礙物檢測(cè)系統(tǒng);由差分GPS、磁羅盤(pán)和光碼盤(pán)組成的組合定位導(dǎo)航系統(tǒng)等。兩套計(jì)算機(jī)系統(tǒng)分別進(jìn)行視覺(jué)住處處理,完成信息融合、路徑規(guī)劃、行為與決策
24、控制等功能。四臺(tái)IPC工控機(jī)分別完成激光測(cè)距信息處理、定位信息處理、通訊管理、駕駛控制等功能。設(shè)計(jì)車(chē)速高速公路為80km/h,一般道路為20 km/h。目前已能夠在校園的非結(jié)構(gòu)化道路環(huán)境下,進(jìn)行道路跟蹤和避障自主行駛。汽車(chē)的智能化可以減輕駕駛員的疲勞,適應(yīng)復(fù)雜的天氣條件,減少交通事故的發(fā)生。</p><p> 此外,西安交通大學(xué)搭建了Spingrobot智能車(chē)實(shí)驗(yàn)平臺(tái),并于2005年10月成功完成在敦煌“新絲綢
25、之路”活動(dòng)中的演示。同濟(jì)大學(xué)2006年研發(fā)了一輛無(wú)人駕駛清潔能源電動(dòng)游覽車(chē),最高時(shí)速為50km/h,可應(yīng)用于人們觀光旅游。吉林大學(xué)和中科院沈陽(yáng)自動(dòng)化所在無(wú)人駕駛智能車(chē)方面也研究較早,取得不少成果。</p><p> 從20世紀(jì)70年代,美歐等發(fā)達(dá)國(guó)家開(kāi)始進(jìn)行無(wú)人駕駛汽車(chē)的研究,大致可以分為二個(gè)階段:軍事用途、高速公路環(huán)境和城市環(huán)境。在軍事用途方面,早在80年代初期,美國(guó)國(guó)防部就大規(guī)模資助自主陸地車(chē)輛ALV (A
26、utonomous LandVehicle)的研究。</p><p> 進(jìn)入21世紀(jì),為促進(jìn)無(wú)人駕駛車(chē)輛的研發(fā),從2004年起,美國(guó)國(guó)防部高級(jí)研究項(xiàng)目局(DARPA)開(kāi)始舉辦機(jī)器車(chē)挑戰(zhàn)大賽(Grand Challenge)。該大賽對(duì)促進(jìn)智能車(chē)輛技術(shù)交流與創(chuàng)新起到很大激勵(lì)作用。</p><p> 在2005年的第二屆比賽中,主辦方只在賽前2小時(shí)提供一張光盤(pán),上面提供了比賽路線上2935個(gè)
27、“路點(diǎn)”的方位與海拔等詳細(xì)資料。整個(gè)賽道有急轉(zhuǎn)彎、隧道、路口還有山路,比賽要求參賽車(chē)輛能夠自主完成全部路程。最終斯坦福大學(xué)的“斯塔利”,獲得了第1名。具有6個(gè)奔騰M處理器的電腦完成“斯坦利”的所有程序的處理。車(chē)輛移動(dòng)時(shí),4個(gè)激光傳感器、一個(gè)雷達(dá)系統(tǒng)、一組立體攝像頭和一個(gè)單眼視覺(jué)系統(tǒng)感知周?chē)沫h(huán)境。</p><p> 2006年德國(guó)舉辦了歐洲陸地機(jī)器人競(jìng)賽(European Land Robot Trial,簡(jiǎn)稱(chēng)
28、(ELROB)),德國(guó)的參賽車(chē)“途銳”取得了冠軍。該車(chē)通過(guò)影像處理尋找道路,周?chē)拔锉惶幚沓?D影像。該車(chē)由光學(xué)定向與測(cè)距系統(tǒng)對(duì)收集的信息進(jìn)行導(dǎo)航?jīng)Q策,分析哪里是行人哪里是樹(shù)木?!巴句J”自主行駛了90%的賽程,不過(guò)在通過(guò)關(guān)鍵十字路口時(shí)還是靠手動(dòng)駕駛。</p><p> 隨著汽車(chē)電子技術(shù)的發(fā)展,汽車(chē)智能化技術(shù)正在逐步得到應(yīng)用,這種技術(shù)使汽車(chē)的操縱越來(lái)越簡(jiǎn)單,動(dòng)力性和經(jīng)濟(jì)性越來(lái)越高,行駛安全性越來(lái)越好,因此,智能化
29、是未來(lái)汽車(chē)發(fā)展的趨勢(shì)[3]。</p><p><b> 2 系統(tǒng)硬件設(shè)計(jì)</b></p><p> 2.1 系統(tǒng)整體方案設(shè)計(jì)</p><p> 本次畢業(yè)設(shè)計(jì)所用的實(shí)物為智能車(chē),將其分為驅(qū)動(dòng)模塊、控制模塊、尋線模塊、電源模塊四大模塊設(shè)計(jì)。</p><p><b> 圖2-1 系統(tǒng)框圖</b>&
30、lt;/p><p> 控制模塊:本次畢業(yè)設(shè)計(jì)所用的控制芯片為ATmega8芯片。在AVR家族中,ATmega8是一種非常特殊的單片機(jī),它的芯片內(nèi)部集成了較大容量的存儲(chǔ)器和豐富強(qiáng)大的硬件接口電路,具備AVR高檔單片機(jī)MEGE系列的全部性能和特點(diǎn)。但由于采用了小引腳封裝(為PDIP28和TQFP/MLF32),所以其價(jià)格僅與低檔單片機(jī)相當(dāng),再加上AVR單片機(jī)的系統(tǒng)內(nèi)可編程特性,使得無(wú)需購(gòu)買(mǎi)昂貴的仿真器和編程器也可進(jìn)行單
31、片機(jī)嵌入式系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā),同時(shí)也為單片機(jī)的初學(xué)者提供了非常方便和簡(jiǎn)捷的學(xué)習(xí)開(kāi)發(fā)環(huán)境。ATmega8的這些特點(diǎn),使其成為一款具有極高性能價(jià)格比的單片機(jī),深受廣大單片機(jī)用戶(hù)的喜愛(ài),在產(chǎn)品應(yīng)用市場(chǎng)上極具競(jìng)爭(zhēng)力,被很多家用電器廠商和儀器儀表行業(yè)看中,從而使ATmega8迅速進(jìn)入大批量的應(yīng)用領(lǐng)域[4]。</p><p> 驅(qū)動(dòng)模塊:本次畢業(yè)設(shè)計(jì)的智能車(chē)驅(qū)動(dòng)模塊采用的是兩個(gè)伺服舵機(jī)。交流伺服電機(jī)使用方便,轉(zhuǎn)速分辨率高,精
32、度高,閉環(huán)運(yùn)行,驅(qū)動(dòng)器輸出編碼器信號(hào),可實(shí)現(xiàn)大閉環(huán)。驅(qū)動(dòng)芯片為MAX232,MAX232芯片是美信公司專(zhuān)門(mén)為電腦的RS-232標(biāo)準(zhǔn)串口設(shè)計(jì)的單電源電平轉(zhuǎn)換芯片,使用+5v單電源供電[5]。</p><p> 尋線模塊:本次畢業(yè)設(shè)計(jì)將使用紅外傳感器對(duì)智能車(chē)進(jìn)行導(dǎo)航。紅外傳感系統(tǒng)是用紅外線為介質(zhì)的測(cè)量系統(tǒng),按照功能可分成五類(lèi), 按探測(cè)機(jī)理可分成為光子探測(cè)器和熱探測(cè)器. 紅外傳感技術(shù)已經(jīng)在現(xiàn)代科技、國(guó)防和工農(nóng)業(yè)等領(lǐng)域
33、獲得了廣泛的應(yīng)用。紅外技術(shù)發(fā)展到現(xiàn)在,已經(jīng)為大家所熟知,這種技術(shù)已經(jīng)在現(xiàn)代科技、國(guó)防和工農(nóng)業(yè)等領(lǐng)域獲得了廣泛的應(yīng)用。紅外傳感系統(tǒng)是用紅外線為介質(zhì)的測(cè)量系統(tǒng),按照功能能夠分成五類(lèi):(1)輻射計(jì),用于輻射和光譜測(cè)量;(2)搜索和跟蹤系統(tǒng),用于搜索和跟蹤紅外目標(biāo),確定其空間位置并對(duì)它的運(yùn)動(dòng)進(jìn)行跟蹤;(3)熱成像系統(tǒng),可產(chǎn)生整個(gè)目標(biāo)紅外輻射的分布圖像;(4)紅外測(cè)距和通信系統(tǒng);(5)混合系統(tǒng),是指以上各類(lèi)系統(tǒng)中的兩個(gè)或者多個(gè)的組合。紅外傳感器根
34、據(jù)探測(cè)機(jī)理可分成為:光子探測(cè)器(基于光電效應(yīng))和熱探測(cè)器(基于熱效應(yīng))[6]。</p><p> 電源模塊:本次畢業(yè)設(shè)計(jì)的智能車(chē)電源模塊采用的是4節(jié)5號(hào)干電池[7]。</p><p> 2.2 各大模塊的設(shè)計(jì)</p><p> 2.2.1 控制模塊的設(shè)計(jì)</p><p> 此次畢業(yè)設(shè)計(jì)控制芯片為單片機(jī)芯片,單片微型計(jì)算機(jī)簡(jiǎn)稱(chēng)單片機(jī),是
35、典型的嵌入式微控制器,常用英文字母的縮寫(xiě)MCU表示單片機(jī),它最早是被用在工業(yè)控制領(lǐng)域。單片機(jī)由芯片內(nèi)僅有CPU的專(zhuān)用處理器發(fā)展而來(lái)。最早的設(shè)計(jì)理念是通過(guò)將大量外圍設(shè)備和CPU集成在一個(gè)芯片中,使計(jì)算機(jī)系統(tǒng)更小,更容易集成進(jìn)復(fù)雜的而對(duì)體積要求嚴(yán)格的控制設(shè)備當(dāng)中。INTEL的Z80是最早按照這種思想設(shè)計(jì)出的處理器,從此以后,單片機(jī)和專(zhuān)用處理器的發(fā)展便分道揚(yáng)鑣。早期的單片機(jī)都是8位或4位的。其中最成功的是INTEL的8031,因?yàn)楹?jiǎn)單可靠而性
36、能不錯(cuò)獲得了很大的好評(píng)。此后在8031上發(fā)展出了MCS51系列單片機(jī)系統(tǒng)?;谶@一系統(tǒng)的單片機(jī)系統(tǒng)直到現(xiàn)在還在廣泛使用。隨著工業(yè)控制領(lǐng)域要求的提高,開(kāi)始出現(xiàn)了16位單片機(jī),但因?yàn)樾詢(xún)r(jià)比不理想并未得到很廣泛的應(yīng)用。90年代后隨著消費(fèi)電子產(chǎn)品大發(fā)展,單片機(jī)技術(shù)得到了巨大提高。隨著INTEL i960系列特別是后來(lái)的ARM系列的廣泛應(yīng)用,32位單片機(jī)迅速取代16位單片機(jī)的高端地位,并且進(jìn)入主流市場(chǎng)。而傳統(tǒng)的8位單片機(jī)的性能也得到了飛速提高,處
37、理能力比起80年代提高了數(shù)百倍。目前,高端的32位單片機(jī)主</p><p> 此次畢業(yè)設(shè)計(jì)的智能車(chē)控制模塊采用的是ATmega8作為CPU,,ATmega8是一種比51系列更為強(qiáng)大的高性能、低功耗的8位單片機(jī),不需要仿真機(jī)和編程機(jī),只需運(yùn)用ISP電纜就可以對(duì)單片機(jī)的FLASH反復(fù)擦寫(xiě)10000次以上,因此使用起來(lái)特別方便簡(jiǎn)單,尤其適合初學(xué)者使用,而且配置十分靈活,可擴(kuò)展性特別強(qiáng)。本文的控制程序是用C語(yǔ)言,編程軟
38、件為WinAVR?!?lt;/p><p> ATmega8內(nèi)部特點(diǎn):高性能、低功耗的 8 位AVR 微處理器,先進(jìn)的RISC 結(jié)構(gòu)。130 條指令,大多數(shù)指令執(zhí)行時(shí)間為單個(gè)時(shí)鐘周期。32個(gè)8 位通用工作寄存器,全靜態(tài)工作,工作于16 MHz 時(shí)性能高達(dá)16 MIPS。只需兩個(gè)時(shí)鐘周期的硬件乘法器,非易失性程序和數(shù)據(jù)存儲(chǔ)器,8K 字節(jié)的系統(tǒng)內(nèi)可編程Flash,擦寫(xiě)壽命:10,000 次,具有獨(dú)立鎖定位的可選Boot
39、代碼區(qū),通過(guò)片上Boot 程序?qū)崿F(xiàn)系統(tǒng)內(nèi)編程,真正的同時(shí)讀寫(xiě)操作。512 字節(jié)的EEPROM,1K字節(jié)的片內(nèi)SRAM,可以對(duì)鎖定位進(jìn)行編程以實(shí)現(xiàn)用戶(hù)程序的加密。 </p><p> ATmega8外設(shè)特點(diǎn):兩個(gè)具有獨(dú)立預(yù)分頻器8 位定時(shí)器/ 計(jì)數(shù)器, 其中之一有比較功能,一個(gè)具有預(yù)分頻器、比較功能和捕捉功能的16 位定時(shí)器/ 計(jì)數(shù)器,具有獨(dú)立振蕩器的實(shí)時(shí)計(jì)數(shù)器RTC。三通道PWM,TQFP與MLF 封裝的8
40、 路ADC,8 路10 位ADC。PDIP封裝的6 路ADC。面向字節(jié)的兩線接口,兩個(gè)可編程的串行USART,可工作于主機(jī)/ 從機(jī)模式的SPI 串行接口。具有獨(dú)立片內(nèi)振蕩器的可編程看門(mén)狗定時(shí)器,片內(nèi)模擬比較器。 </p><p> 特殊的處理器特點(diǎn):上電復(fù)位以及可編程的掉電檢測(cè),片內(nèi)經(jīng)過(guò)標(biāo)定的RC 振蕩器,片內(nèi)/ 片外中斷源?! ?lt;/p><p> 5種睡眠模式: 空閑模式、ADC
41、 噪聲抑制模式、省電模式、掉電模式及Standby 模式。</p><p> I/O 和封裝:23個(gè)可編程的I/O 口,28引腳PDIP 封裝,32 引腳TQFP 封裝,32 引腳MLF 封裝 </p><p> 工作電壓:2.7 - 5.5V (ATmega8L),4.5 - 5.5V (ATmega8);速度等級(jí):0 - 8 MHz (ATmega8L),0 - 16 MHz
42、(ATmega8);工作模式: 3.6 mA;空閑模式: 1.0 mA;掉電模式: 0.5 μA。</p><p> 此次畢業(yè)設(shè)計(jì)所用的ATmega8芯片采用的是PDIP封裝,即為雙列直插式封裝,PDIP封裝結(jié)構(gòu)具有以下特點(diǎn):1. 適合PCB的穿孔安裝; 2. 易于對(duì)PCB布線;3. 操作方便。其引腳說(shuō)明圖如圖2-2所示。</p><p> 圖 2-2 ATmega8的引腳說(shuō)明圖<
43、;/p><p> 引腳定義:VCC 電源;GND 地;端口B為8位雙向I/O口,其中PB5、PB4、PB3可用于ISP編程;端口C,其中PC6可作為復(fù)位輸入引腳,ATmega8為低電平復(fù)位;端口D為8位雙向I/O口;XTAL1為反向振蕩放大器的輸入和內(nèi)部時(shí)鐘工作電路的輸入;XTAL2為反向振蕩放大器的輸出;AVCC 是A/D 轉(zhuǎn)換器PC3、PC2、PC1、PC0的電源端,即使不使用ADC 也應(yīng)外接到VCC端,如使用
44、ADC應(yīng)該通過(guò)一個(gè)低通濾波器與VCC連接,注意PC5、PC4通過(guò)VCC 供電,低通濾波器為讓某一頻率以下的信號(hào)分量通過(guò),而對(duì)該頻率以上的信號(hào)分量大大抑制的電容、電感與電阻等器件的組合裝置;AREF為A/D 轉(zhuǎn)換器的參考電源[9]。</p><p> 圖2-3 ATmega8接線圖</p><p> 2.2.2 驅(qū)動(dòng)模塊設(shè)計(jì)</p><p> 此次畢業(yè)設(shè)計(jì)驅(qū)動(dòng)
45、模塊采用伺服電機(jī)。</p><p> 伺服電機(jī)優(yōu)點(diǎn): (1)精度:實(shí)現(xiàn)了位置,速度和力矩的閉環(huán)控制;克服了步進(jìn)電機(jī)失步的問(wèn)題; (2)轉(zhuǎn)速:高速性能好,一般額定轉(zhuǎn)速能達(dá)到2000~3000轉(zhuǎn)/分鐘; (3)適應(yīng)性:抗過(guò)載能力強(qiáng),能承受三倍于額定轉(zhuǎn)矩的負(fù)載,對(duì)有瞬間負(fù)載波動(dòng)和要求快速起動(dòng)的場(chǎng)合特別適用; (4)穩(wěn)定:低速運(yùn)行平穩(wěn),低速運(yùn)行時(shí)不會(huì)產(chǎn)生類(lèi)似于步進(jìn)電機(jī)的步進(jìn)運(yùn)行現(xiàn)象。適用于有高速
46、響應(yīng)要求的場(chǎng)合; (5)及時(shí)性:電機(jī)加減速的動(dòng)態(tài)相應(yīng)時(shí)間短,一般在幾十毫秒之內(nèi);</p><p> ?。?)舒適性:發(fā)熱和噪音明顯降低。</p><p> 伺服電機(jī)工作的原理:舵機(jī)是一種位置伺服的驅(qū)動(dòng)器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。其工作原理是:控制信號(hào)由接收機(jī)的通道進(jìn)入信號(hào)調(diào)制芯片,獲得直流偏置電壓。它內(nèi)部有一個(gè)基準(zhǔn)電路,產(chǎn)生周期為20ms,寬度為1.5ms的
47、基準(zhǔn)信號(hào),將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負(fù)輸出到電機(jī)驅(qū)動(dòng)芯片決定電機(jī)的正反轉(zhuǎn)。當(dāng)電機(jī)轉(zhuǎn)速一定時(shí),通過(guò)級(jí)聯(lián)減速齒輪帶動(dòng)電位器旋轉(zhuǎn),使得電壓差為0,電機(jī)停止轉(zhuǎn)動(dòng)[10]。</p><p> 控制伺服電機(jī)轉(zhuǎn)動(dòng)速度的信號(hào)是圖2-4、2-5和2-6所示的脈沖信號(hào)。圖2-4所示是高電平持續(xù)1.5ms 低電平持續(xù)20ms,然后不斷重復(fù)的控制脈沖序列。該脈沖序列發(fā)給經(jīng)過(guò)零點(diǎn)標(biāo)定后的伺服
48、電機(jī),伺服電機(jī)不會(huì)旋轉(zhuǎn)。如果此時(shí)電機(jī)旋轉(zhuǎn),表明電機(jī)需要標(biāo)定。從圖2-4、2-5和2-6可知,控制電機(jī)運(yùn)動(dòng)轉(zhuǎn)速的是高電平持續(xù)的時(shí)間,當(dāng)高電平持續(xù)時(shí)間為1.3ms 時(shí),電機(jī)順時(shí)針全速旋轉(zhuǎn),當(dāng)高電平持續(xù)時(shí)間1.7ms 時(shí),電機(jī)逆時(shí)針?biāo)傩D(zhuǎn)。</p><p> 圖2-4 電機(jī)轉(zhuǎn)速為零的控制信號(hào)時(shí)序圖</p><p> 圖2-5 1.3 ms的控制脈沖序列使電機(jī)順時(shí)針全速旋轉(zhuǎn)</p&g
49、t;<p> 圖2-6 1.7ms的連續(xù)脈沖序列使電機(jī)逆時(shí)針全速旋轉(zhuǎn)</p><p> 在進(jìn)行下面的實(shí)驗(yàn)之前,必須首先照?qǐng)D2-7所示的電機(jī)連接原理圖和實(shí)際接線圖進(jìn)行檢查。如果沒(méi)有正確連接,也請(qǐng)參照該圖重新連接。從圖2-7可知,PB0引腳的控制輸出用來(lái)控制右邊的伺服電機(jī),而 PB1 則用來(lái)控制左邊的伺服電機(jī)。</p><p> 顯然這里對(duì)微控制器編程發(fā)給伺服電機(jī)的高、低電
50、平信號(hào)必須具備更精確的時(shí)間。因?yàn)閱纹瑱C(jī)只有整數(shù),沒(méi)有小數(shù),所以要生成伺服電機(jī)的控制信號(hào),要求具有比 delay_nms()函數(shù)的時(shí)間更精確的函數(shù),這就需要用另一個(gè)延時(shí)函數(shù) delay_nus(unsigned int n)。這個(gè)函數(shù)可以實(shí)現(xiàn)更小的延時(shí),它的延時(shí)單位是微秒,即千分之一毫秒,參數(shù)n為延時(shí)微秒數(shù)。</p><p><b> while(1)</b></p><
51、p><b> {</b></p><p> PB0=1; //PB0 輸出高電平</p><p> delay_nus(1500); //延時(shí) 1.5ms </p><p> PB0=0; //PB0 輸出低電平</p><p> delay_nus(
52、20000); //延時(shí) 20ms </p><p><b> }</b></p><p> 如果使用這個(gè)代碼段,就會(huì)輸出圖2-4所示的脈沖信號(hào)。PB0 腳輸出的波形如圖2-4所示。此時(shí),連接到該腳的機(jī)器人輪子將靜止不動(dòng)。如果它在慢慢轉(zhuǎn)動(dòng),就說(shuō)明你的機(jī)器人伺服電機(jī)可能沒(méi)有經(jīng)過(guò)調(diào)整。伺服電機(jī)的調(diào)零其實(shí)是調(diào)節(jié)電機(jī)內(nèi)部的基準(zhǔn)電路,使其滿足要求。</p>
53、<p> 同樣,用下面的程序片斷,編譯、連接下載執(zhí)行代碼,觀察連接到 PB0 腳的機(jī)器人輪子將順時(shí)針全速旋轉(zhuǎn)。</p><p><b> while(1)</b></p><p><b> {</b></p><p> PB0=1; //PB0 輸出高電平</p>
54、<p> delay_nus(1300); //延時(shí) 1.3ms </p><p> PB0=0; //PB0 輸出低電平</p><p> delay_nus(20000); //延時(shí) 20ms </p><p><b> }[11]</b></p><p> 圖2
55、-7伺服電機(jī)連線圖</p><p> 此次畢業(yè)設(shè)計(jì)所用的驅(qū)動(dòng)芯片為MAX232EEPE。MAX232是一種把電腦的串行口RS-232信號(hào)電平(-10 ,+10v)轉(zhuǎn)換為單片機(jī)所用到的TTL信號(hào)電平(0 ,+5)的芯片。 </p><p> 圖2-8 MAX232引腳圖</p><p> 引腳介紹:第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只
56、電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個(gè)電源,提供給RS-232串口電平的需要。第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個(gè)數(shù)據(jù)通道。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。TTL/CMOS數(shù)據(jù)從T1IN、T2IN輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從T1OUT
57、、T2OUT送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。第三部分是供電。15腳GND、16腳VCC(+5v)。 </p><p> 主要特點(diǎn):(1)符合所有的RS-232C技術(shù)標(biāo)準(zhǔn)。(2)只需要單一 +5V電源供電 。(3)片載電荷泵具有升壓、電壓極性反轉(zhuǎn)能力,能夠產(chǎn)生+10V和-10V電壓V+、V-。(4)功耗低,典型供電電
58、流5mA。(5)內(nèi)部集成2個(gè)RS-232C驅(qū)動(dòng)器。(6)內(nèi)部集成兩個(gè) RS-232C接收器[12]。</p><p> 圖2-9 MAX232的基本接線圖</p><p> 圖2-10 MAX232接線圖</p><p> 2.2.3 尋線模塊的設(shè)計(jì)</p><p> 此次畢業(yè)設(shè)計(jì)使用紅外傳感器對(duì)智能車(chē)進(jìn)行導(dǎo)航,紅外傳感器的工作原理
59、電路圖如圖2-11所示。工作過(guò)程分析如下:</p><p> 圖2-11 紅外傳感器原理圖</p><p> 由該工作原理圖知道當(dāng)通過(guò)程序控制單片機(jī)的內(nèi)部電路給PC2口輸出高電平此時(shí)三極管被導(dǎo)通,LED開(kāi)始發(fā)光,當(dāng)發(fā)射出來(lái)的光被障礙物反射回來(lái)的時(shí)候被光敏二極管所接受光敏二極管被導(dǎo)通此時(shí)輸出低電平表示前面有障礙物,如果發(fā)射出去的光沒(méi)有被反射回來(lái),光敏二極管沒(méi)有接受到光此時(shí)光敏處于截止的狀
60、態(tài)此時(shí)輸出的是高電平,表示前面沒(méi)有障礙物[13]。</p><p> 首先來(lái)了解下傳感器的工作原理,這樣才可以根據(jù)傳感器的特點(diǎn)設(shè)計(jì)相應(yīng)的電路,從而達(dá)到對(duì)智能車(chē)的控制實(shí)現(xiàn)相應(yīng)的實(shí)驗(yàn)?zāi)康?。傳感器的原理圖如下:(見(jiàn)圖2-12)</p><p> 圖2-12 距離檢測(cè)的傳感器的原理圖</p><p> 在本次畢業(yè)設(shè)計(jì)距離檢測(cè)中用的傳感器是紅外傳感器,利用了紅外檢測(cè)裝置
61、對(duì)不同頻率的紅外光的靈敏度的不同即低靈敏度的頻率,為了讓探測(cè)器探測(cè)到反射回來(lái)的紅外光,所以物體離探測(cè)器的距離必須很近,高靈敏度的頻率可以探測(cè)距離比較遠(yuǎn)的障礙物。由上面的原理圖知道在這里選用了5種不同的頻率分別得29370Hz,31230Hz,33050Hz,35700Hz,38460Hz將智能車(chē)的前進(jìn)方向大概劃分為6個(gè)區(qū)域,當(dāng)發(fā)射的紅外光的頻率是29370Hz的時(shí)候,由于該頻率的靈敏度低,所以該頻率的紅外光只能探測(cè)智能車(chē)前進(jìn)方向的區(qū)域0
62、該區(qū)域靠近探測(cè)器,如果探測(cè)器探測(cè)到了返回來(lái)的紅外光說(shuō)明在區(qū)域0有障礙物,因?yàn)椴煌念l率只能工作在一定得范圍里,這樣就可以確定障礙物離智能車(chē)的大概距離,如果發(fā)射的頻率是29370Hz沒(méi)有被探測(cè)器探測(cè)到說(shuō)明區(qū)域0沒(méi)有障礙物,而發(fā)射的頻率31230Hz,33050Hz,35700Hz,38460Hz都被探測(cè)器探測(cè)到說(shuō)明區(qū)域1有障礙物,如果發(fā)射的頻率29370Hz,31230Hz,都沒(méi)有被探測(cè)器探測(cè)到,而如果發(fā)射的頻率33050Hz,35700
63、Hz,38460Hz被探測(cè)器探測(cè)到,說(shuō)明區(qū)域2存在障礙</p><p><b> 3 系統(tǒng)軟件設(shè)計(jì)</b></p><p> 在此次畢業(yè)設(shè)計(jì)中,將反復(fù)用到三款軟件: WinAVR集成開(kāi)發(fā)環(huán)境、SL ISP下載軟件、串口調(diào)試軟件。</p><p> 3.1 WinAVR集成開(kāi)發(fā)環(huán)境</p><p> WinAVR(
64、讀作whenever)是一套開(kāi)源的開(kāi)發(fā)工具的總稱(chēng),用來(lái)在Windows平臺(tái)開(kāi)發(fā)Atmel AVR系列RISC微控制器。</p><p> 3.2 SL ISP軟件下載工具</p><p> 該軟件是廣州天河雙龍電子有限公司推出的一款I(lǐng)SP下載軟件,使用該軟件將可執(zhí)行文件下載到機(jī)器人單片機(jī)上,速度、穩(wěn)定性不錯(cuò)。該軟件的使用需要計(jì)算機(jī)有并行口。</p><p>
65、3.3 串口調(diào)試軟件</p><p> 此軟件是用來(lái)顯示單片機(jī)與計(jì)算機(jī)的交互信息的。在硬件上,計(jì)算機(jī)至少要有串口或 USB 接口來(lái)與單片機(jī)的串口連接。串口通訊因具有簡(jiǎn)單,組網(wǎng)方便的特點(diǎn),在設(shè)備通訊中廣泛使用。普通計(jì)算機(jī)中采用的是RS232通用通訊接口,通過(guò)此接口,計(jì)算機(jī)簡(jiǎn)單方便地與外圍設(shè)備進(jìn)行通訊。在單片機(jī)控制領(lǐng)域,設(shè)備與設(shè)備之間的通訊常用串行通訊方式,常采用的硬件通訊網(wǎng)絡(luò)為RS485/RS422/RS232等
66、。在設(shè)備開(kāi)發(fā)或設(shè)備維護(hù)過(guò)程中,常常需要對(duì)設(shè)備通訊過(guò)程進(jìn)行數(shù)據(jù)檢測(cè),用于判斷通訊是否正常。實(shí)現(xiàn)這個(gè)調(diào)試過(guò)程,需要計(jì)算機(jī)通訊軟件對(duì)通訊過(guò)程進(jìn)行監(jiān)控,數(shù)據(jù)采集,進(jìn)行數(shù)據(jù)分析[15]。</p><p> 3.4 WinAVR簡(jiǎn)介</p><p> 3.4.1 WinAVR的優(yōu)點(diǎn)</p><p> ?。?)免費(fèi)且開(kāi)源。因?yàn)槠涿赓M(fèi),所以可以減少項(xiàng)目資金開(kāi)銷(xiāo),同時(shí),在版權(quán)控制
67、比較好的國(guó)外,WinAVR的使用者是很多的,因此交流、學(xué)習(xí)的平臺(tái)更大。(2)優(yōu)化效率高。(3)利于平臺(tái)遷移。引擎GCC是Linux的唯一開(kāi)發(fā)語(yǔ)言,學(xué)習(xí)GCC對(duì)于遷移到其他嵌入式平臺(tái)是十分有利的。(4)配置靈活,可定制性強(qiáng)[16]。</p><p> 3.4.2 WinAVR使用快速入門(mén) </p><p> 下面的范例程序也可以直接參照光盤(pán)里的范例,里面有詳細(xì)的注釋說(shuō)明 </p&g
68、t;<p> ?。?)運(yùn)行PN,下面介紹PN如何編寫(xiě)、編譯AVR C語(yǔ)言源程序的分解步驟: </p><p><b> 圖3-1 運(yùn)行</b></p><p> ?。?)新建工程組(Project Group) </p><p> 圖3-2 新建工程組</p><p> ?。?)新建工程(P
69、roject)</p><p><b> 圖3-3 新建工程</b></p><p> ?。?)把工程保存為main的工程名。</p><p> ?。?)點(diǎn)擊“New”新建按鈕,將建立一個(gè)文件名為“new”的文本文件</p><p> 圖3-4 建立文本文件</p><p> ?。?)可以在文
70、本框里輸入或粘貼入C代碼(本范例程序代碼請(qǐng)見(jiàn)光盤(pán)),然后點(diǎn)擊“Save”保存</p><p><b> 圖3-5 保存</b></p><p> ?。?)把文件保存為“main.c”文件,然后點(diǎn)擊“保存”</p><p> 圖3-6 保存為“main.c”文件</p><p> ?。?)在“main”工程上點(diǎn)擊右鍵,
71、彈出菜單,選擇“Add Files”</p><p><b> 圖3-7 彈出菜單</b></p><p> (9)把剛才的main.c文件添加到工程中</p><p> 圖3-8 添加main.c</p><p> ?。?0) 現(xiàn)在要先從光盤(pán)里提供的范例程序里任意一個(gè)程序包里的一個(gè)名為“Makefile”拷貝到當(dāng)
72、前的工程文件包里,為什么要拷貝這個(gè)文件到剛才建立的工程包里呢?因?yàn)槲覀兊酶嬖VPN選擇的AVR的型號(hào)、工作頻率等。在WinAVR上也有一個(gè)叫mfile的應(yīng)用程序去處理這個(gè)Makefile 文件。但mfile 的缺陷很多,不好用,并且容易弄錯(cuò)。推薦直接用PN打開(kāi)修改這個(gè)文件,然后保存。為了方便閱讀與修改,我們將最常用的內(nèi)容,放到Makefile的最前面,并且作了中文注解。下面是打開(kāi)已經(jīng)拷貝工程目錄下的Makefile文件 </p>
73、;<p> 圖3-9 打開(kāi)Makefile文件</p><p> ?。?1)再特意說(shuō)明下:這個(gè)Makefile文件大家可以直接從配套光盤(pán)里的范例程序里的任意一個(gè)程序包里拷貝一個(gè)到當(dāng)前的目錄下即可,然后打開(kāi)后要對(duì)其進(jìn)行一些修改。</p><p> 圖3-10 拷貝程序</p><p> ?。?2)打開(kāi)Makefile,只要對(duì)MCU、F_CPU、TAR
74、GET,三項(xiàng)進(jìn)行修改。注意MCU的命名要按規(guī)范命名,否則到時(shí)候PN編譯的時(shí)候會(huì)提示找不到型號(hào);F_CPU(CPU頻率)設(shè)置為8000000Hz,即8MHz;TARGET還是要以main為名,因?yàn)橹靶陆ǖ墓こ?、C代碼源程序都是以main為名的,如果這里的命名和剛才新建的工程、C代碼文件名不一致,都將導(dǎo)致接下去的編譯工作無(wú)法進(jìn)行。</p><p><b> 圖3-11 修改</b></
75、p><p> ?。?3)修改Makefile后,點(diǎn)擊“Save”保存</p><p> 圖3-12 保存修改程序</p><p> ?。?4)修改完Makefile后一定要先Make Clean一下!才能保證下面的編譯不會(huì)出錯(cuò)! </p><p> 圖3-13 Make Clean</p><p> (1
76、5)點(diǎn)擊Make All編譯源程序,以后如果有對(duì)源程序進(jìn)行修改后,只要Make All編譯就可以了;除非修改了Makefile里的參數(shù),那就一定要先Make Clean以保證編譯不受干擾。</p><p> 圖3-14 Make All</p><p> ?。?6)編譯成功后,會(huì)有如下的 Process Exit Code: 0 的信息。如果結(jié)果不是0,表明編譯有問(wèn)題,請(qǐng)檢查當(dāng)前工程目錄
77、是否有main.c 與 Makefile 兩個(gè)文件,或是程序里有錯(cuò)誤,一一排除才能編譯成功。</p><p><b> 圖3-15 編譯</b></p><p> ?。?7)編譯成功后,原來(lái)只有2個(gè)文件的目錄,現(xiàn)在變成了如下圖的文件清單,main.hex是要下載到AVR芯片里讓其運(yùn)行的文件[17,18,19]。</p><p> 圖3-16
78、 編譯成功</p><p><b> 3.5 編程思路</b></p><p> 此次畢業(yè)設(shè)計(jì)所用編程語(yǔ)言為C語(yǔ)言。如今單片機(jī)的編程語(yǔ)言主要為匯編語(yǔ)言和C語(yǔ)言,匯編語(yǔ)言是一種用文字助記符來(lái)表示機(jī)器指令的符號(hào)語(yǔ)言,是最接近機(jī)器碼的一種語(yǔ)言。其主要優(yōu)點(diǎn)是占用資源少、程序執(zhí)行效率高。但是不同的CPU,其匯編語(yǔ)言可能有所差異,所以不易移植。C語(yǔ)言是一種結(jié)構(gòu)化的高級(jí)語(yǔ)言。其
79、優(yōu)點(diǎn)是可讀性好,移植容易,是普遍使用的一種計(jì)算機(jī)語(yǔ)言。</p><p> 此次畢業(yè)設(shè)計(jì)為智能車(chē)設(shè)計(jì)的行走路線為走“田”字。控制思想為通過(guò)單片機(jī)微控制器控制智能車(chē)左右輪子的正反轉(zhuǎn),從而控制智能車(chē)向前行走、原地左轉(zhuǎn)、原地右轉(zhuǎn)、向后行走。本次畢業(yè)設(shè)計(jì)的編程思路為編程出智能車(chē)向前行走、原地左轉(zhuǎn)、原地右轉(zhuǎn)、向后行走的程序,再用數(shù)組建立復(fù)雜運(yùn)動(dòng)。本次畢業(yè)設(shè)計(jì)的設(shè)計(jì)路線為:向前運(yùn)行6秒→原地右轉(zhuǎn)→向前運(yùn)行6秒→原地左轉(zhuǎn)→向后
80、運(yùn)行6秒→原地右轉(zhuǎn)→向后運(yùn)行6秒→原地左轉(zhuǎn)→向前運(yùn)行3秒→原地右轉(zhuǎn)→向前運(yùn)行6秒→原地左轉(zhuǎn)→向前運(yùn)行3秒→原地右轉(zhuǎn)→向后運(yùn)行3秒→原地左轉(zhuǎn)→向后運(yùn)行6秒→原地右轉(zhuǎn)→向后運(yùn)行3秒→停止。</p><p> 此次畢業(yè)設(shè)計(jì)的主要控制程序如下:</p><p> #include<BoeBot.h> </p><p> #include<uart.h
81、> </p><p> void Forward(void) </p><p><b> {</b></p><p><b> int i; </b></p><p> for(i=1;i<=130;i++)</p><p><b> { &l
82、t;/b></p><p><b> PB1=1;</b></p><p> delay_nus(1700); </p><p><b> PB1=0; </b></p><p><b> PB0=1;</b></p><p> dela
83、y_nus(1300); </p><p><b> PB0=0;</b></p><p> delay_nms(20); </p><p><b> } </b></p><p><b> }</b></p><p> void Left_T
84、urn(void) </p><p><b> {</b></p><p><b> int i; </b></p><p> for(i=1;i<=26;i++)</p><p><b> { </b></p><p><b>
85、 PB1=1;</b></p><p> delay_nus(1300); </p><p><b> PB1=0; </b></p><p><b> PB0=1;</b></p><p> delay_nus(1300); </p><p><
86、b> PB0=0;</b></p><p> delay_nms(20); </p><p><b> } </b></p><p><b> }</b></p><p> void Right_Turn(void)</p><p><b&g
87、t; {</b></p><p><b> int i; </b></p><p> for(i=1;i<=26;i++)</p><p><b> { </b></p><p><b> PB1=1;</b></p><p>
88、; delay_nus(1700); </p><p><b> PB1=0; </b></p><p><b> PB0=1;</b></p><p> delay_nus(1700); </p><p><b> PB0=0;</b></p><
89、;p> delay_nms(20); </p><p><b> } </b></p><p><b> }</b></p><p> void Backward(void)</p><p><b> {</b></p><p><
90、b> int i; </b></p><p> for(i=1;i<=130;i++)</p><p><b> { </b></p><p><b> PB1=1;</b></p><p> delay_nus(1300); </p><p&g
91、t;<b> PB1=0;</b></p><p><b> PB0=1;</b></p><p> delay_nus(1700); </p><p><b> PB0=0;</b></p><p> delay_nms(20); </p><p
92、><b> } </b></p><p><b> }</b></p><p> int main(void) </p><p><b> { </b></p><p> char Navigation[26]={'F','F'
93、,'R','F','F','L','B','B','R','B','B','L','F','R','F','F','L','F','R','B',
94、9;L','B','B',‘R’,'B','Q'};</p><p> int address=0; </p><p> uart_Init(); </p><p> printf("Program Running!\n");</p><p>
95、 while(Navigation[address]!='Q') </p><p><b> { </b></p><p> switch(Navigation[address]) </p><p><b> { </b></p><p> case 'F':
96、Forward();break; </p><p> case 'L':Left_Turn();break; </p><p> case 'R':Right_Turn();break; </p><p> case 'B':Backward();break; </p><p><b
97、> } </b></p><p> address++; </p><p><b> } </b></p><p> while(1); </p><p><b> }</b></p><p> 此畢業(yè)設(shè)計(jì)所用的頭文件有BoeBot.h和uart
98、.h,其中定時(shí)程序BoeBot.h的程序如下所示:</p><p> #pragma ASM</p><p><b> nop ;</b></p><p> #pragma ENDASM,*/</p><p> void delay_nus(unsigned int i) </p><p&
99、gt;<b> { </b></p><p><b> i=i/10;</b></p><p> while(--i);</p><p><b> } </b></p><p> void delay_nms(unsigned int n) </p>
100、<p><b> { </b></p><p><b> n=n+1;</b></p><p> while(--n) </p><p> delay_nus(900); </p><p><b> } </b></p>
101、<p> 另一頭文件串口中斷驅(qū)動(dòng)程序uart.h的程序如下所示:</p><p> #include <AT89X52.h></p><p> #include <stdio.h></p><p> #define XTAL 11059200</p><p> #define baudrate
102、9600</p><p> #define OLEN 8 //串行發(fā)送緩沖區(qū)大小</p><p> unsigned char ostart; //發(fā)送緩沖區(qū)起始索引</p><p> unsigned char oend; //發(fā)送緩沖區(qū)結(jié)束索引</p><p> char idata outbuf[OLEN
103、]; //發(fā)送緩沖區(qū)存儲(chǔ)數(shù)組</p><p> #define ILEN 8 //串行接收緩沖區(qū)大小</p><p> unsigned char istart; //接收緩沖區(qū)起始索引</p><p> unsigned char iend; //接收緩沖區(qū)結(jié)束索引</p><p> char idata
104、 inbuf[ILEN]; //接收緩沖存儲(chǔ)數(shù)組</p><p> bit bdata sendfull; //發(fā)送緩沖區(qū)滿標(biāo)志</p><p> bit bdata sendactive; //發(fā)送有效標(biāo)志</p><p> /*串行中斷服務(wù)程序*/</p><p> static void com_isr(void) in
105、terrupt 4 using 1 //串口中斷</p><p><b> { </b></p><p> //-------------接收數(shù)據(jù)中斷--------------</p><p><b> char c;</b></p><p> if(RI) /
106、/接收中斷</p><p> { </p><p> c=SBUF; //讀字符</p><p> RI=0; //清接收中斷請(qǐng)求標(biāo)志</p><p> if(istart+ILEN!=iend)</p><p><b> { </b></p>
107、;<p> inbuf[iend++&(ILEN-1)]=c; //緩沖區(qū)接收數(shù)據(jù)</p><p><b> }</b></p><p><b> }</b></p><p> //-------------發(fā)送數(shù)據(jù)中斷--------------</p><p>
108、<b> if(TI)</b></p><p><b> { </b></p><p> TI=0; //清發(fā)送中斷標(biāo)志</p><p> if(ostart!=oend)</p><p><b> { </b></p><p> SBU
109、F=outbuf[ostart++&(OLEN-1)];//向發(fā)送緩沖區(qū)傳送字符</p><p> sendfull=0; //設(shè)置緩沖區(qū)滿標(biāo)志位</p><p><b> }</b></p><p><b> else</b></p><p><b> {
110、</b></p><p> sendactive=0; //設(shè)置發(fā)送無(wú)效</p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p>
111、 //PUTBUF: 寫(xiě)字符到SBUF或發(fā)送緩沖區(qū)</p><p> void putbuf(char c)</p><p><b> { </b></p><p> if(!sendfull) //如果緩沖區(qū)不滿就發(fā)送</p><p><b> {</b></p><
112、p> if(!sendactive) </p><p><b> { </b></p><p> sendactive=1; //直接發(fā)送一個(gè)字符</p><p> SBUF=c; //寫(xiě)到SBUF啟動(dòng)緩沖區(qū)</p><p><b> }</b></p>
113、<p><b> else </b></p><p><b> { </b></p><p> ES=0; //暫時(shí)串行口關(guān)閉中斷</p><p> outbuf[oend++&(OLEN-1)]=c; //向發(fā)送緩沖區(qū)傳送字符</p><p> if((
114、(oend^ostart)&(OLEN-1))==0) </p><p> { sendfull=1;} //設(shè)置緩沖區(qū)滿標(biāo)志</p><p> ES=1; //打開(kāi)串行口中斷</p><p><b> }</b></p><p><b> }</b></p
115、><p><b> }</b></p><p> //putchar:中斷控制putchar函數(shù)</p><p> //替換標(biāo)準(zhǔn)庫(kù)函數(shù)putchar程序</p><p> //printf函數(shù)使用putchar輸出一個(gè)字符</p><p> char putchar (char c)<
116、/p><p><b> { </b></p><p> if (c=='\n') //增加新的行</p><p><b> {</b></p><p> while(sendfull); //等待發(fā)送緩沖區(qū)空</p><p> pu
117、tbuf(0x0D); //對(duì)新行在LF前發(fā)送CR</p><p><b> }</b></p><p> while(sendfull); </p><p> putbuf(c);</p><p> return(c);</p><p><b> }</b&g
118、t;</p><p> //_getkey:中斷控制_getkey函數(shù)</p><p> //替換標(biāo)準(zhǔn)庫(kù)函數(shù)_getkey程序</p><p> //getchar和gets函數(shù)使用_getkey</p><p> char _getkey(void)</p><p><b> { </b&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的簡(jiǎn)易智能車(chē)控制系統(tǒng)
- 智能水位控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--智能門(mén)禁控制系統(tǒng)設(shè)計(jì)
- 教室智能控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 溫室智能控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 智能交通控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 智能車(chē)控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----智能溫度控制系統(tǒng)
- 畢業(yè)設(shè)計(jì)---智能插座控制系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----住宅智能照明控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電風(fēng)扇智能控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---智能車(chē)輛控制系統(tǒng)的設(shè)計(jì)
- 智能玩具車(chē)控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--智能清潔裝置控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--智能溫度控制系統(tǒng)硬件設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---校園路燈智能控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于arm的生物發(fā)酵智能控制系統(tǒng)設(shè)計(jì)
- 節(jié)水灌溉智能控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)237智能溫度控制系統(tǒng)
- 畢業(yè)設(shè)計(jì)論文-智能溫度控制系統(tǒng)
評(píng)論
0/150
提交評(píng)論