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