電子信息工程畢業(yè)設(shè)計_第1頁
電子信息工程畢業(yè)設(shè)計_第2頁
電子信息工程畢業(yè)設(shè)計_第3頁
電子信息工程畢業(yè)設(shè)計_第4頁
電子信息工程畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、畢 業(yè) 論 文(設(shè)計)論文題目 基于單片機的智能小車設(shè)計與制作 姓 名 王 鷹 學 號 _07531046_專 業(yè) 07電子信息工程 指導教師 張 浩 職 稱 教 授 中國合肥二0一一年六月目 錄1 引言32設(shè)計思想、方案選擇及設(shè)計任務(wù)的指標42.1 設(shè)計思想42.2 方案設(shè)計比較與選擇52.2.1 遙控模塊52.2.2 障礙物檢測模塊62.3 設(shè)計指標及技術(shù)參數(shù)63 硬件電路設(shè)計73.1 智能尋跡小車系統(tǒng)框圖及概述73.2 智能小車系統(tǒng)硬件電路圖及單元電路83.2.1 系統(tǒng)的硬件電路總體設(shè)計83.2.2 分布單元電路設(shè)計與功能概述83.3 單元電路設(shè)計小結(jié)134 軟件程序設(shè)計134.1164

2、.2184.2.1 程序狀態(tài)指示燈模塊184.2.2 流水燈演示模塊184.2.3 數(shù)碼管及跑馬燈模塊194.2.4 按鍵中斷查詢模塊194.2.5 話筒聲音識別模塊194.2.6 光敏電阻及蜂鳴器模塊204.2.7 紅外反射與直流電機驅(qū)動模塊204.2.8 串口通信模塊214.3 單元模塊程序設(shè)計小結(jié)215 實物運行與測試結(jié)果以及結(jié)論215.1 小車的運行情況225.2 小車的測試結(jié)果及分析225.3 結(jié)論236 結(jié)束語23參考文獻23英文摘要24致 謝25附錄a:系統(tǒng)總原理圖26附錄b:部分程序清單27附錄c:33附錄d:34基于單片機的智能小車設(shè)計與制作王 鷹摘 要:基于近幾年大學生電子

3、大賽中關(guān)于小車的研究,對此根據(jù)嵌入式系統(tǒng)的應(yīng)用,提出了提出了一種以8位單片機作為系統(tǒng)大腦能實現(xiàn)智能循線避障避懸崖小車的設(shè)計方法,通過主芯片的32個完全io端口,對這些端口加以信號輸入電路,控制電路和執(zhí)行電路,并且利用紅外探頭技術(shù)檢測障礙物和搜集地面信息,采用at89s52單片機進行適時控制,實現(xiàn)智能循線避障以及避懸崖。智能小車采用前輪驅(qū)動,兩輪各用一個電機執(zhí)行,用max232芯片來控制,前方和底部探頭采用紅外發(fā)射管和紅外接收管進行障礙物檢測以及地面信息的采集。關(guān)鍵詞:at89s52,尋線,避障,避懸崖,流水燈1 引言隨著汽車工業(yè)的迅速發(fā)展,關(guān)于汽車的研究也就越來越受人關(guān)注。全國大學生電子大賽和

4、省內(nèi)電子大賽中幾乎每次都有關(guān)于小車這方面的題目,全國各高校也都很重視該題目的研究,可見其研究意義很大。本設(shè)計就是在這樣的背景下提出的,指導教師已經(jīng)有充分的準備。本題目是結(jié)合科研項目而確定的設(shè)計類課題。設(shè)計的智能電動小車應(yīng)該具有智能尋跡、避障、避懸崖等功能。根據(jù)題目的要求,確定如下方案:在已有線路板及元器件的基礎(chǔ)上,將傳感器改為紅外探頭,將前方底部的兩個步進電機改為用lg9110驅(qū)動的電機,再編寫一段程序,通過com1端口將程序下載至線路板上的stc單片機芯片里,使得led燈和數(shù)碼管具有程序指示作用以及跑馬燈流水燈的演示,并且實現(xiàn)小車的防撞、避懸崖和尋跡。本設(shè)計以at89s52為主芯片,通過p0

5、.0,p0.1,p0.2,p0.3分別控制lg9110電機驅(qū)動,來驅(qū)動電機1和電機2,。由電機的正轉(zhuǎn)與反轉(zhuǎn)來完成小車的前進,后退,左轉(zhuǎn),右轉(zhuǎn)等功能的基本動作。在小車前進時如果前方有障礙物,由紅外發(fā)射管發(fā)射的紅外信號被反射給紅外接收管,且將此信號經(jīng)過p3.7傳送入at89s52中,主芯片通過內(nèi)部的代碼進行小車的繞行,同時主芯片將p3.7的信號狀態(tài)通過p2.5的led燈顯示出來;小車行走時p3.5與p3.6的紅外接收探頭會進行路面檢測,當走到懸崖處時,端口將會收到一個電平信號,此電平信號通過相應(yīng)端口傳送入主芯片中,以此來控制小車后退然后左轉(zhuǎn)以避開懸崖前進;另外通過代碼還附有程序狀態(tài)指示功能,蜂鳴器

6、的報警功能,夜間自動照明等功能。第三代單片機包括了intel公司發(fā)展mcs-51系列的新一代產(chǎn)品,如8c15280c51fa/fb80c51ga/gb8c4518c452,還包括了philipssiemensadmfujutsuokiharria-metraatmel等公司以80c51為核心推出的大量各具特色與80c51兼容的單片機。新一代的單片機的最主要的技術(shù)特點是向外部接口電路擴展,以實現(xiàn)microcomputer完善的控制功能為己任,將一些外部接口功能單元如a/dpwmpca(可編程計數(shù)器陣列)wdt(監(jiān)視定時器)高速i/o口計數(shù)器的捕獲/比較邏輯等。這一代單片機中,在總線方面最重要的進

7、展是為單片機配置了芯片間的串行總線,為單片機應(yīng)用系統(tǒng)設(shè)計提供了更加靈活的方式。philips公司還為這一代單片機80c51系列8c592單片機引入了具有較強功能的設(shè)備間網(wǎng)絡(luò)系統(tǒng)總線-can(controller area network bus)。新一代單片機為外部提供了相當完善的總線結(jié)構(gòu),為系統(tǒng)的擴展與配置打下了良好的基礎(chǔ)。本設(shè)計就采用了比較先進的89s52為控制核心,89s52采用choms工藝,功耗很低,因此該設(shè)計具有實際意義。2設(shè)計思想、方案選擇及設(shè)計任務(wù)的指標2.1 設(shè)計思想本系統(tǒng)主要實現(xiàn)的功能有:避障功能,避懸崖功能,尋黑線功能,聲控功能,流水燈演示,程序狀態(tài)指示功能,數(shù)碼管演示,

8、報警功能,夜間探照燈照明及方向燈模擬。(1)避障避懸崖功能:小車前進時,如果遇到具有反光的物體或者懸崖時,小車會自動后退一段,然后左轉(zhuǎn),繞過障礙物和避開懸崖行駛。(2)巡線功能:將小車放在一條特定的黑色跑道上,邊緣是白色,小車會尋著黑線行駛,不會走到白色跑道上。(3)聲控功能:前進時,用雙手拍打一下,小車就會停止前進,這時前方的探照燈依然亮著,再次拍打后,小車又會繼續(xù)前進。(4)流水燈和數(shù)碼管演示:將流水燈模塊的程序?qū)懭雴纹瑱C之后,小車上的led燈會從左到右,從右到左,從兩邊到中間以及從中間到兩邊依次點亮。(5)報警功能:小車在遇到懸崖和障礙物時后退左轉(zhuǎn)過程中會報警,一直到繼續(xù)前進時才停下警笛

9、聲音。(6)夜間探照燈照明及方向燈模擬:當小車處于黑暗條件時,前方的探照燈會一直點亮,起到照明作用;小車處于左轉(zhuǎn)時,左邊方向燈閃一次,右邊的方向燈會滅,模擬了生活中汽車的方向燈。具體設(shè)計思路如圖2-1所示。 遙控功能流水燈演示 at89s52避障功能避懸崖巡線功能 聲控功能 報警功能 com1接口 方向燈模擬 圖2-1 基本模塊方框圖2.2 方案設(shè)計比較與選擇2.2.1 遙控模塊方案一:普通遙控玩具小車的遙控裝置。此裝置是通過發(fā)送不同頻率的電磁波,被小車接收后,在電路中產(chǎn)生不同的電流和電壓,從而控制各個電動機的開關(guān)和方向,來實現(xiàn)遙控目標的。此裝置需要在遙控器和小車上安裝小型天線,用于發(fā)射和接受

10、,雖然是無線的,但是也不方便,容易彎曲與損壞,而且遙控距離較短。方案二:紅外遙控裝置。此裝置是通過遙控器的按鍵發(fā)送由一串0和1的二進制代碼組成,被紅外接收裝置接受,運用單片機將遙控器上的多種按鍵解碼出來,用作單片機系統(tǒng)的輸入。這樣不但解決了常規(guī)矩陣鍵盤線路板過大、布線復(fù)雜、占用i/o口過多的弊病,而且通過使用遙控器,操作時可實現(xiàn)人與機器設(shè)備的分離,從而更加方便實用。通過兩種方案的比較,結(jié)合本設(shè)計所采用的主控制器為單片機芯片at89s52,故采用第二種方案。2.2.2 障礙物檢測模塊方案一:超聲波探測采用超聲波器件。超聲波傳感器向空氣中發(fā)射聲脈沖,聲波遇到障礙物反射回來,被接收探頭接受進行相關(guān)的

11、計算和處理;超聲波波瓣較寬,一個發(fā)生器就可以監(jiān)測較寬的范圍。其優(yōu)點為抗干擾能力強,不受物體表面顏色的影響;缺點為實現(xiàn)電路復(fù)雜,且用通常的測量方法在較近距離上有盲區(qū)。方案二:光電式探測采用光電式發(fā)射器。發(fā)射器向外發(fā)送信號,如遇到具有反光效應(yīng)的障礙物,接受管會接收到信號,通過電路轉(zhuǎn)換成高電平或低電平的電信號,送入芯片內(nèi)部,通過預(yù)先設(shè)計的程序使其繞過障礙物。其優(yōu)點是電路實現(xiàn)非常簡單,抗干擾能力較強,但是這種探測只能躲避反光物體,如遇黑色物體則不能避障。通過比較,兩種方案均有優(yōu)缺點,由于本設(shè)計中的避障功能不需要非常的精確,并且探測的距離比較近,考慮到電路實現(xiàn)的難易程度,對于電路知識掌握不夠熟練,所以綜

12、合之下,采用方案二。在方案二中,由于單個發(fā)射器的照射范圍不能太小,因此不使用激光管。用波瓣較寬的脈沖調(diào)制型紅外發(fā)射管和接收管。2.3 設(shè)計指標及技術(shù)參數(shù) (1)輸入基準電壓:6v(2)路徑識別:黑色尋跡(3)障礙物檢測范圍:具有反光性質(zhì)物體范圍:0.005m1m 不具反光性質(zhì)物體范圍:0(4)懸崖探測范圍:大于0.1m(5)轉(zhuǎn)彎角度設(shè)置:左轉(zhuǎn)90度(6)行駛速度:0.06 m/s(7)遙控距離:25m3 硬件電路設(shè)計一個單片機應(yīng)用系統(tǒng)的硬件電路設(shè)計包含有兩部分內(nèi)容:一是系統(tǒng)擴展,即單片機內(nèi)部的功能單元,如romrami/o口定時/記數(shù)器中斷系統(tǒng)等能量不能滿足應(yīng)用系統(tǒng)的要求時,必須在片外進行擴展

13、,選擇適當?shù)男酒?,設(shè)計相應(yīng)的電路。二是系統(tǒng)配置,既按照系統(tǒng)功能要求配置外圍設(shè)備,如鍵盤顯示器打印機a/dd/a轉(zhuǎn)換器等,要設(shè)計合適的接口電路。3.1 智能尋跡小車系統(tǒng)框圖及概述如下圖3-1所示:com 1端口微控制器cpu電動機電機驅(qū)動模塊防撞功能模塊數(shù)碼管顯示模塊程序指示燈模塊尋跡避懸崖功能模塊跑馬燈演示模塊探照燈模擬模塊聲控模塊蜂鳴器報警模塊遙控模塊圖3-1 小車系統(tǒng)框圖微控制器cpu即控制核心模塊(mcu):使用at89s52單片機,其作用是對其他模塊采集到的信號進行通過設(shè)計的程序進行相關(guān)處理,并發(fā)出正確的控制信號,是整個系統(tǒng)中最重要的部分。防撞模塊巡跡避懸崖模塊都采用紅外發(fā)射探頭和紅外

14、接收探頭,利用紅外光線反射和其對黑白兩色反光程度不同的原理,既可以很好的檢測到前方能夠反射的白光物體,從而實現(xiàn)繞障礙物與防撞的功能,也可以用來檢測黑線與白線,實現(xiàn)智能巡跡的功能,同時還可以根據(jù)這種方法來實現(xiàn)避懸崖及其他更多的高級功能。聲控模塊由普通的小型話筒構(gòu)成,簡易方便,電路搭建也不復(fù)雜;在接近小車上方的位置,有間隔的拍打雙手兩次,小車會實行停止與前進兩種狀態(tài)。流水燈數(shù)碼管以及程序狀態(tài)指示模塊均由一排發(fā)光二極管和一個數(shù)碼管組成,發(fā)光二極管可以展示不同的花樣,比且與小車的運行狀態(tài)同步;數(shù)碼管采用共陽的方式接入,由芯片端口直接控制,可以更好的展現(xiàn)出小車的運行狀態(tài)。電機驅(qū)動模塊分別由兩個lg911

15、0芯片通過主芯片的發(fā)出指令來驅(qū)動底部的兩個電動機,以完成小車的順利運行;采用簡單易于管理的lg9110驅(qū)動芯片,充分主程序有時間去處理其它更多功能,比步進電機驅(qū)動更簡單,更能提高主芯片的效率。電源模塊比較簡單,由四節(jié)干電池構(gòu)成電池組,提供整機的電源;com接口模塊采用rs232連接方式,為電腦控制小車實現(xiàn)rs232通信建立了接口,能實現(xiàn)串口通信,同時它還是程序下載與燒錄不可缺少的端口,可以通過它完成isp編程。3.2 智能小車系統(tǒng)硬件電路圖及單元電路3.2.1 系統(tǒng)的硬件電路總體設(shè)計小車的硬件搭建電路主要根據(jù)上述框圖的每個模塊設(shè)計,將分步的模塊電路與主控制器連接構(gòu)成系統(tǒng)總原理圖,原理總圖見附錄

16、a。3.2.2 分布單元電路設(shè)計與功能概述 (1)微控制器cpu模塊 根據(jù)前面關(guān)于單片機系統(tǒng)的概述,本設(shè)計的主控電路采用at89s52單片機芯片,主要是根據(jù)外部遙控和紅外探頭送入單片機的信號,以內(nèi)部代碼來控制小車的運動狀態(tài)以及數(shù)碼管led燈的動作;附控電路選用lg9110芯片,即驅(qū)動小車的底部電機,它根據(jù)主芯片發(fā)出的指令來控制電機的正轉(zhuǎn)和反轉(zhuǎn),以完成小車的前進、后退、左轉(zhuǎn)、右轉(zhuǎn)。兩種芯片的結(jié)構(gòu)、引腳及連接電路如下圖3-2所示:圖3-2 at89s52引腳圖和lg9110引腳圖(2)com1端口模塊com端口在電路中的連接如下圖3-3所示:圖3-3 com1端口模塊電路max232芯片是為電腦的

17、rs-232標準串口設(shè)計的單電源電平轉(zhuǎn)換芯片,使用+5v單電源供電。第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(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、t2out送到電腦db9插頭;db9

18、插頭的rs-232數(shù)據(jù)從r1in、r2in輸入轉(zhuǎn)換成ttl/cmos數(shù)據(jù)后從r1out、r2out輸出。第三部分是供電,15腳gnd、16腳vcc(+5v)。(3)遙控模塊 外部遙控信號與小車的無線連接裝置利用電視機的遙控器發(fā)送無線信號以及安裝在小車上的紅外遙控接收頭接收信號,然后轉(zhuǎn)變成電信號,通過外部中斷端口和訪問外部程序存儲器控制信號的端口送入主芯片內(nèi)部進行處理,以發(fā)出正確的指令來控制小車(4)防撞尋跡以及電機驅(qū)動模塊 此模塊是小車的肢體,小車根據(jù)微控制器cpu大腦所下發(fā)的指令,來做出正確的肢體行為,此肢體即為紅外反射與直流電機驅(qū)動,用紅外發(fā)射管和紅外接收管以及電機驅(qū)動芯片lg9110來實

19、現(xiàn)。其與主芯片的搭建電路如下圖3-4所示: 防撞尋跡探頭 lg9110驅(qū)動電機 圖3-4 防撞尋跡以及電機驅(qū)動模塊電路紅外反射是通過v1、v2、v5、v6、v3和v4,信號通過220電阻到達發(fā)射管v1,電路中220歐電阻是給發(fā)射管提供工作電壓和工作電流;15k電阻至v2是將光信號轉(zhuǎn)變成電信號傳送到單片機的端口p3.7和p3.6以及p3.5端口,v3、v4是防撞的,v5、v6是尋跡的。 電機驅(qū)動主要是通過驅(qū)動芯片lg9110,將電機直接接到芯片輸出的兩端,引腳1和4用于電機方向的控制,1和4的電平不同變換表示電機的運轉(zhuǎn)方向不同,主要有正轉(zhuǎn)和反轉(zhuǎn)等狀態(tài),以驅(qū)動小車的前進、后退、左轉(zhuǎn)以及右轉(zhuǎn)。設(shè)計中

20、對路徑檢測精度要求較高,可采用6個紅外探頭置于小車前方(超出小車的車頭,成“一”型)和底端(垂直于車身向下,離地面大約1cm),安裝時探頭需置于小車前方超出小車車頭,是為了增加徑向探出距離,從理論上講,徑向探出距離越大即探頭超出小車車頭的距離越大,越有利于盡早的預(yù)測小車即將通過的路徑,早點將此信息傳遞給單片機,作出相應(yīng)的調(diào)整,發(fā)出正確的控制信號,從而改善小車的性能,因此從理論上講,徑向探出距離是越大越好。但從實際出發(fā),增加徑向探出距離會使探頭位于小車前方,必然會使小車的重心前移,如果小車本事的重量較輕的話,勢必會影響到小車自身的平衡性,嚴重影響小車在行駛過程中的穩(wěn)定性能,當然不會得到理想的控制

21、效果的。但是本設(shè)計中的小車底部有電機,重心比較穩(wěn),并且檢測障礙物選用的是紅外探頭,重量很輕,故不需考慮會影響到小車的平衡性。此外,在采取合理的安置檢測探頭后,還可以將探頭向下傾斜安置,如下圖3-5所示。這樣做會比垂直安置光電傳感器更能獲得較大的徑向探出距離,更能有效的探測障礙物。小車車身紅外探頭圖3-5 探頭裝置圖(5)聲控模塊實現(xiàn)小車具有聲控功能,則需有聲音信號采集裝置,因此采用比較簡單的小型話筒,其聲控的硬件電路設(shè)計如下圖3-6所示:圖3-6 聲控電路當有聲音輸入時,話筒內(nèi)部的電流會發(fā)生相應(yīng)的變化,47k電阻將聲音信號轉(zhuǎn)變成電壓信號,其電壓信號經(jīng)過10uf的濾波電容傳入到三極管中,8050

22、在設(shè)置時有靜態(tài)工作點,通過1m電阻和150k電阻使三極管處于一種即將開啟狀態(tài)或者是即將導通狀態(tài),當有信號輸入時,三極管導通,輸出一個低電平的信號,傳送到單片機的p0.4端口;沒有信號時,三極管將處于截止狀態(tài),信號的電平被拉高,則p0.4端口將會是一個高電平。這樣就可以實現(xiàn)話筒的聲控功能。(6)數(shù)碼管顯示、程序指示燈及跑馬燈演示模塊 數(shù)碼管與led燈電路的電路設(shè)計比較簡單,主要在于它的軟件設(shè)計。其硬件電路如下圖3-7所示:圖3-7 顯示電路電路中數(shù)碼管和led燈與主芯片通過560歐的限流電阻連接,主芯片根據(jù)預(yù)先設(shè)計的程序會通過p1和p2發(fā)出指令信號,這樣數(shù)碼管就會顯示相應(yīng)的數(shù)字或相應(yīng)順序的連續(xù)變

23、換,以及發(fā)光二極管同時點亮,完成從左到右、從右到左、從中間往兩邊和從兩邊往中間依次點亮的跑馬燈的演示。(7)探照燈模擬與蜂鳴器模塊此模塊主要是在電路中加入了兩個發(fā)光二極管,前方左右各一個用于方向指示,以及一個光敏電阻用于夜間照明;同時安裝了一個蜂鳴器,實現(xiàn)報警功能。其電路如下圖3-8所示:圖3-8 照明與報警電路光敏電阻rl1通過15k電阻,將光信號轉(zhuǎn)為電壓信號,傳送到單片機的p0.5端口;蜂鳴器經(jīng)過三極管v1和220歐電阻與p0.6端口連接,作為輸出。因為選用的三極管是8550,故低電平時才能導通。當外界光度較強時,rl1阻值變小,輸入到單片機的是低電平,此時蜂鳴器就會工作;相反,當沒有光照

24、或較暗時,送入的是高電平,蜂鳴器就會截止。而且電路中在p0.7和p2.0端口輸出照明電路,黑暗條件下,裝在小車前段的led燈會點亮,模擬了汽車的夜間照明。3.3 單元電路設(shè)計小結(jié)以上為智能小車的每個單元電路設(shè)計,并且對每個電路的設(shè)計思想、部分元器件的性能及實現(xiàn)的功能,進行了比較詳細的闡述,把每個模塊整合后就會形成小車的整體硬件電路,但是這只是小車的肢體,沒有語言使大腦發(fā)出正確的指令,它需要大腦來控制,即需要對小車的軟件部分進行精心設(shè)計。4 軟件程序設(shè)計在進行微機控制系統(tǒng)設(shè)計時,除了系統(tǒng)硬件設(shè)計外,大量的工作就是如何根據(jù)每個生產(chǎn)對象的實際需要設(shè)計應(yīng)用程序。因此,軟件設(shè)計在微機控制系統(tǒng)設(shè)計中占重要

25、地位。對于本系統(tǒng),軟件更為重要。在單片機控制系統(tǒng)中,大體上可分為數(shù)據(jù)處理、過程控制兩個基本類型。數(shù)據(jù)處理包括:數(shù)據(jù)的采集、數(shù)字濾波、標度變換等。過程控制程序主要是使單片機按一定的方法進行計算,然后再輸出,以便控制生產(chǎn)。為了完成上述任務(wù),在進行軟件設(shè)計時,通常把整個過程分成若干個部分,每一部分叫做一個模塊。所謂“模塊”,實質(zhì)上就是所完成一定功能,相對獨立的程序段,這種程序設(shè)計方法叫模塊程序設(shè)計法。模塊程序設(shè)計法的主要優(yōu)點是:1、 單個模塊比起一個完整的程序易編寫及調(diào)試;2、 模塊可以共存,一個模塊可以被多個任務(wù)在不同條件下調(diào)用;3、 模塊程序允許設(shè)計者分割任務(wù)和利用已有程序,為設(shè)計者提供方便。本

26、系統(tǒng)軟件部分與硬件電路設(shè)計相似,采用模塊化結(jié)構(gòu),由程序狀態(tài)指示燈模塊,流水燈演示模塊,數(shù)碼管及跑馬燈模塊,按鍵中斷查詢模塊,話筒聲音識別模塊,光敏電阻及蜂鳴器模塊,紅外反射與直流電機驅(qū)動模塊,紅外遙控解碼模塊,串口通信模塊構(gòu)成。軟件流程如圖4-1流程圖所示:初 始 化狀態(tài)指示燈閃爍是否燒錄程序開關(guān)是否按下前 進是否遇障礙物是否第一次檢測到聲音避障子程序避懸崖子程序是否遇到懸崖是否第二次檢測到聲音停止前進圖4-1 軟件設(shè)計流程圖4.1總程序的頭文件、數(shù)據(jù)類型和端口定義以及綜合程序#include 包含51 相關(guān)的頭文件typeset unsigned char uchar; typedef un

27、signed int uint; 重定義char和int數(shù)據(jù)類型#define showport p2 uchar code ledshowdata=0x03,0x9f,0x25,0x0d,0x99, 0x49,0x41,0x1f,0x01,0x19; /0,1,2,3,4,5,6,7,8,9 定義數(shù)碼管顯示端口和顯示數(shù)據(jù)static unsigned int recvdata; static unsigned char countdata; 定義接收紅外數(shù)據(jù)變量和紅外個數(shù)計數(shù)變量static unsigned char adddata; static unsigned int ledflas

28、h; 定義自增變量和閃動頻率計數(shù)變量unsigned char hearddata; bit runflag=0;定義接收到數(shù)據(jù)的高位變量和運行標志位以上完成了基本數(shù)據(jù)變量和端口的定義,下面對狀態(tài)指示燈及按鍵端口進行相關(guān)的定義:sbit s1state=p10; sbit s2state=p11; sbit b1state=p12; sbit irstate=p13; 定義s1、s2、b1、ir狀態(tài)標志位sbit runstopstate=p14;sbit fontirstate=p15; sbit leftirstate=p16; sbit rightirstate=p17; 定義運行停止標

29、志位以及fontir、leftir和rightirstate三種狀態(tài)標志位sbit s1=p32; sbit s2=p34;定義s1、s2按鍵端口完成led燈的定義后,我們將對最重要的紅外探頭和電機端口進行定義,如下:sbit leftled=p20; sbit rightled=p07; 定義前方左側(cè)和右側(cè)指示燈端口sbit leftir=p35; sbit rightir=p36; sbit fontir=p37;定義前方左側(cè)和右側(cè)紅外探頭以及正前方紅外探頭sbit m1a=p00; sbit m1b=p01; sbit m2a=p02; sbit m2b=p03; 定義電機1及電機2的正

30、向端口和反向端口下面是對小車的附加功能,如話筒、光敏電阻、蜂鳴器的端口定義,如下:sbit b1=p04; sbit rl1=p05; sbit sb1=p06;定義話筒傳感器、光敏電阻和蜂鳴端口sbit ir1=p33定義紅外接收端口void delay(); uint delaytime=30000 定義延時子程序和延時時間變量綜上所有程序只是整體程序代碼設(shè)計的開頭部分,只是對小車所有需要定義的端口及數(shù)據(jù)類型進行定義,為以下的每個模塊程序設(shè)計做好鋪墊。4.2 單個模塊程序設(shè)計與編寫4.2.1 程序狀態(tài)指示燈模塊程序狀態(tài)指示燈是比較常見到的一種工作狀態(tài)指示器,像網(wǎng)卡、無線發(fā)射器、電腦等等都會

31、有相應(yīng)的led指示燈來表示當前儀器的工作狀況。往往用led閃亮的快慢來表示儀器是否處在工作中,以及長亮與長滅來表示儀器是否故障或需要檢查等操作本設(shè)計系統(tǒng)中的此模塊也是通過led燈來模擬小車的運行情況,設(shè)計思路如下:(1)定義一個可變的延時函數(shù),通過它來改變燈閃亮的時間.(2)選取51機器人中相應(yīng)的led模塊,聲明端口,用來顯示閃亮的狀態(tài)。(3)編寫主函數(shù),讓芯片一直循環(huán)運行,并定義一個時間記錄器來改變閃亮情況。(4)根據(jù)時間記錄器的數(shù)值來改變led指示燈的閃亮情況,來完成程序狀態(tài)指示燈的模擬操作.具體的程序見附錄b程序指示燈模塊。4.2.2 流水燈演示模塊(1)unsigned int cod

32、e btom=0x7e,0x3c,0x18,0x00; unsigned int code mtob=0xe7,0xc3,0x81,0x00;定義由兩邊到中間及中間到兩邊的顯示數(shù)據(jù)void delay() reentrant unsigned int delaytime=10000;while(delaytime-); 加入可重入的延時函數(shù)延和時時間基數(shù),以便每個led燈閃滅之間有一定的延時(2)void lefttoright() unsigned char tempcount=0; led=led1; 定義從左邊到右邊的顯示函數(shù)以及顯示次數(shù)變量;由右邊向左邊移動數(shù)據(jù);然后定義初步的顯示數(shù)據(jù)

33、,通過循環(huán)進行數(shù)據(jù)顯示,在每次移動數(shù)據(jù)開始的時候加入(1)中的延時,最后通過空返回語句return表明該子程序的結(jié)束,進入下一個子程序。流水燈的四個動作程序結(jié)構(gòu)與設(shè)計上完全一樣,完整的程序見附錄b中流水燈模塊。4.2.3 數(shù)碼管及跑馬燈模塊此模塊只是將數(shù)碼管的顯示融入到上述的流水燈演示里面,使兩者結(jié)合起來演示,所以不復(fù)雜,并且設(shè)計中已經(jīng)將這個模塊的程序?qū)懭氲娇偝绦蛑?,在小車運行時,會有相應(yīng)的顯示。4.2.4 按鍵中斷查詢模塊本模塊通過兩個按鍵對數(shù)碼管進行操作,分別演示了查詢與中斷的操作方式,中斷中應(yīng)用了對按鍵進行查詢的方法來判斷按鍵的鍵值,查詢按鍵方法中則采用了鍵盤延遲的方法來消除按鍵重復(fù)輸入

34、。程序運行效果:開機后數(shù)碼管顯示數(shù)字 1 ,當按 s1 不放時,數(shù)碼管數(shù)字不變,松開 s1 按鍵,數(shù)碼減 1 ;按 s2 鍵不放時,數(shù)碼管數(shù)字會自動加 1。并且數(shù)字遵守從 0-9 循環(huán)操作。具體的程序見附錄b中的按鍵中斷查詢模塊4.2.5 話筒聲音識別模塊 本程序主要通過話筒對聲音信號進行識別,由于硬件關(guān)于本模塊電路設(shè)計中能有效的去除雜波,所以僅能對響度較大的聲音進行識別 ( 例 : 拍手聲,大叫聲等等 )。像正常的說話聲對本電路慮除,不會產(chǎn)生信息的輸入。話筒識別的加入,為我們建立了聲控平臺。主要的程序設(shè)計如下: while(1) if (0=b1) while(0=b1); delay();

35、 leftled=!leftled; rightled=!rightled;首先判斷是否有聲音輸入,等待聲音信號結(jié)束,去除多余雜音,然后使小車前方左側(cè)和右側(cè)指示燈分別取反,這樣就實現(xiàn)了聲音識別的功能;關(guān)于聲音控制小車運行的設(shè)計,已經(jīng)寫入了總程序中,在小車運行時能展現(xiàn)出聲控的功能。4.2.6 光敏電阻及蜂鳴器模塊while(1)if(1=rl1)delay();sb1=!sb1;leftled=!leftled;rightled=!rightled;elsesb1=1;leftled=1;rightled=1;首先判斷光敏的現(xiàn)在狀態(tài) ( 有光 0, 無光 1),然后開始延時,如果在黑暗條件下,高

36、電平輸入使蜂鳴器響亮以及前方左右兩側(cè)指示燈閃亮;否則蜂鳴器和指示燈均關(guān)閉。4.2.7 紅外反射與直流電機驅(qū)動模塊此模塊為小車最為重要的模塊,因為它關(guān)系著小車整體的運行情況,避障避懸崖和尋線都是設(shè)計的核心部分,也都是在本模塊實現(xiàn)的。首先要定義前方指示燈、紅外探頭以及電機驅(qū)動、語音傳感器和蜂鳴器端口,然后加入小車調(diào)轉(zhuǎn)子時間子程序并定義轉(zhuǎn)彎時間變量,在延時子程序中寫入讓蜂鳴器響亮的代碼:while(delaytime-); sb1=!sb1; 這樣使得小車轉(zhuǎn)彎時蜂鳴器報警,用return語句來結(jié)束該子程序,進入到下一個電機控制子程序,將電機的初始化都設(shè)為0,用case語句來判斷小車的前進,后退,左轉(zhuǎn)

37、以及右轉(zhuǎn)四種狀態(tài),并在相應(yīng)的狀態(tài)下寫入電機的運轉(zhuǎn)狀態(tài),如前進時電機m1m2正轉(zhuǎn),左轉(zhuǎn)時m1 電機反轉(zhuǎn)m2 電機正轉(zhuǎn);下面是進入主循環(huán)。用leftled和rightled分別表示前方左側(cè)和右側(cè)紅外探頭狀態(tài),runshow指示前方紅外探頭狀態(tài),然后用if語句(if(fontir=0 | leftir=1)來判斷前方 , 左側(cè) , 右側(cè)是否有信號輸入rightir=1);controlcar(2); 讓小車后退,在后退過程中加入了蜂鳴器報警,注意此時小車沒有聲控功能,因為存在報警聲音,對其造成了一定的干擾。4.2.8 串口通信模塊本程序是通過數(shù)碼管、led 指示燈的閃亮來表示當前串口通信的結(jié)果 ,

38、串口通信使單片機與電腦之間通信的橋梁,可以很好的用電腦來進行單片機的控制,及對單片機數(shù)據(jù)的采集。 具體的程序代碼見附錄b中的串口通信模塊運行時可以看到,打開本機電源開關(guān)后, p1端led 指示燈在不停的閃耀,此時使用“串口調(diào)試助手” 或其它軟件向單片機發(fā)送數(shù)據(jù),可以看到相應(yīng)的數(shù)據(jù)顯示在數(shù)碼管上,并且發(fā)送的數(shù)據(jù)又返回到電腦中。 ( 只顯示 0-9 數(shù)字)4.3 單元模塊程序設(shè)計小結(jié) 以上是對小車軟件部分的每個模塊進行了說明,并且對主要的程序設(shè)計思想進行了闡述,有的模塊已經(jīng)融入到了綜合程序中,有的模塊是需要分步下載之后才能展現(xiàn)出來,將每個模塊的程序經(jīng)過整合,定義的端口和函數(shù)都放在前面,子程序通過空

39、返回語句return來連接,構(gòu)成總程序。 總程序代碼如附錄b中總程序所示。5 實物運行與測試結(jié)果以及結(jié)論5.1 小車的運行情況將com端口的usb線把小車和電腦連接起來,通過isp編程器和stc_isp_v394軟件將綜合程序?qū)懭氲叫酒?,等待幾秒鐘,放在一張反光較強的桌子上,打開電源可以看到,小車往前走,當遇到障礙物時會后退轉(zhuǎn)彎,繞過障礙物行駛;行駛到桌子的邊緣時,小車同樣也會后退轉(zhuǎn)彎,躲避懸崖;同時在前進過程中,可以用拍手聲來控制小車,使小車停下來,再拍一次小車又會前進。 由于尋跡功能需單獨演示,所以要將其程序?qū)懭胄酒言谐绦蚋采w,單獨實現(xiàn)黑色尋跡。 流水燈和程序狀態(tài)指示燈也都是屬于獨

40、立演示的模塊,所以要通過端口依次寫入依次演示。5.2 小車的測試結(jié)果及分析(1)測試結(jié)果及數(shù)據(jù)如下:小車的前進和后退速度一致,均為0.059m/s;障礙物檢測距離:反光很強的物體:約1m; 反光很弱的物體:約0.005m; 黑色物體:0 m(即檢測不到黑色的障礙物);避懸崖高度范圍:大于等于0.09m;巡黑線偏離范圍:00.04m;轉(zhuǎn)彎角度:路面較光滑時為左轉(zhuǎn)8790度 路面比較粗糙時左轉(zhuǎn)約8087度數(shù)碼管能正常顯示出數(shù)字“0、1、2、”,led燈比較亮,沒有出現(xiàn)閃、較暗或不亮的情況;流水燈演示、方向燈探照燈及聲控功能都能實現(xiàn)遙控功能沒有實現(xiàn)(2)測試結(jié)果分析如下:經(jīng)過調(diào)試與測試,實物小車的速

41、度與設(shè)計指標相差0.001 m/s;轉(zhuǎn)彎度與目標值相差10度,這兩種誤差都與小車行駛的路面狀況有關(guān),摩擦力大時,誤差范圍會更大,所以都符合預(yù)先設(shè)計的技術(shù)要求。避障避懸崖以及尋線的精確度與設(shè)計指標相差不是太大,這與元器件的性能有關(guān)。其他功能也都能實現(xiàn),只有實遙控功能沒有實現(xiàn),這是本次設(shè)計中的缺陷所在經(jīng)過線路板及元器件的焊點觀察和測試分析,主要原因有以下幾點:可能是紅外遙控接收頭壞了,接收不到遙控器發(fā)出的信號;可能是紅外接收頭至芯片那一路的某個元件虛焊導致斷路;還有可能是所選遙控器與軟件設(shè)計的代碼不匹配,實現(xiàn)不了對小車的遙控。由于對遙控解碼程序不熟悉,可能通過單片機的程序?qū)b控器的按鍵解碼不正確,

42、導致小車不具遙控功能。5.3 結(jié)論至此小車的整體包括硬件和軟件的設(shè)計已經(jīng)完成,歷時三個月的設(shè)計過程中,我首先上網(wǎng)搜集資料,并在網(wǎng)上選購線路板,在我實習的車間里焊接小車的線路板。雖然我訓練過兩個月的焊接,但是在實際的焊接過程中,我感覺到即使是一個簡單的電路,要想很輕松的焊好,也不是很容易的事情,有時是“虛焊”的原因,有時可能是阻值選錯,比如這次的遙控功能就不能實現(xiàn),這使我深深感受到理論與實際間的差距。通過這樣的設(shè)計,提高了我的動手能力。焊接結(jié)束后,要對其進行調(diào)試,在調(diào)試過程中,出現(xiàn)了很多問題,如數(shù)碼管不顯示、小車總是后退不前進等等一些問題,在孟老師的指導與幫助下,這些難題已經(jīng)被攻克了,小車能夠正

43、確的實現(xiàn)智能防撞壁懸崖等功能。小車的模型圖和實物圖見附錄c所示;小車的元件清單見附錄d所示。6 結(jié)束語從三月份著手查資料開始到今日,小車的焊接、調(diào)試和組裝已經(jīng)完成,系統(tǒng)基本上能穩(wěn)定的運行,但是還有不足之處,就是上面所提到的遙控功能沒有實現(xiàn),所以要吸取經(jīng)驗,在以后的學習和工作中要更加完善。參考文獻1 胡漢才.單片機原理及其接口技術(shù). m. 北京: 清華大學出版社,2004年2月.2 張永瑞,王松林,李小平.電路分析. m. 北京:高等教育出版社,2004年10月.3 譚浩強.c程序設(shè)計. m. 北京: 清華大學出版社,2005年7月.4 清源科技.電路原理圖與pcb設(shè)計及仿真. m. 北京:機械

44、工業(yè)出版社,2008年6月.5 李松法.電子元器件應(yīng)用技術(shù). m. 北京:航空工業(yè)出版社,2009年6月.6 at89c51 data sheep philips semiconductors 1999.dec7 nilsson,j.w.introductory circuits for electrical and computer engineering. m.beijing:publishing house of electronics industry英文摘要based on single chip microcomputer intelligent car design and pr

45、oductionwang ying(anhui agricultural university economic institute of technology, hefei 230036)abstract: based on undergraduate electronic contest in recent years, the research on this car according to the application of the embedded system, puts forward presented a 8-bit microcontroller as the syst

46、em can realize intelligent follow line brain obstacle-avoidance avoid cliff car design methods, through the main chip 32 completely to these ports, io port to signal input circuit, control circuit and execute circuit, and make use of infrared sensor technology testing obstacles and ground informatio

47、n, collected by at89s51 for timing control, intelligent obstacle-avoidance and resolutely line from the cliff. intelligent car using two rounds of the front wheel drive, with a motor with max232 chips to carry out, control, and front and bottom probe uses the infrared tubes and infrared receiving tu

48、be obstacle detection and ground information collection.key words: at89s51 , cast about line,obstacle-avoidance avoid cliffs,flowing water line of light.致 謝四年的生活與學習經(jīng)歷,是我對大學戀戀不忘,學校優(yōu)美的環(huán)境,濃烈的學習氣氛,老師們的精心教學,都給我留下美好的深刻的印象,在此我想對輔導員和所有的授課老師以及同學說聲謝謝!尤其是在我的這個畢業(yè)設(shè)計與制作中,張老師給了我很大的幫助,調(diào)試中好多的問題都是在張老師細心認真的指導下解決的,所以我特

49、別向他表示感謝!附錄a:系統(tǒng)總原理圖附錄b:部分程序清單程序指示燈模塊流水燈模塊#include #define led p1void delay(unsigned int delaytime) while(delaytime-); void main() unsigned int countdata=0;while(1) if(countdata30) delay(60000); else if(countdata60)delay(30000); else if(countdata90) delay(10000);else if(countdata120) countdata=0;.coun

50、tdata=countdata+1; led=led; #include #define led p1 unsigned int code btom=0x7e,0x3c,0x18,0x00; unsigned int code mtob=0xe7,0xc3,0x81,0x00;void delay() reentrant unsigned int delaytime=10000; while(delaytime-); void lefttoright() unsigned char tempcount=0; led=0xfe; for(tempcount=0;tempcount8;tempco

51、unt+) delay(); led=led1; return; void righttoleft() unsigned char tempcount=0; led=0x7f; for(tempcount=0;tempcount1; return; void bothtomid() unsigned char tempcount=0; led=0xff;for(tempcount=0;tempcount5;tempcount+) delay();led=btomtempcount; return; void midtoboth()unsigned char tempcount=0; led=0

52、xff;for(tempcount=0;tempcount5;tempcount+) delay(); led=mtobtempcount;return;void main() while(1) lefttoright();righttoleft(); bothtomid(); midtoboth();按鍵中斷查詢模塊串口通信模塊#include typedef unsigned char uchar;typedef unsigned int uint; sbit s1=p32; sbit s2=p34; uchar datacount=0; charcode ledshowdata=0x9f

53、,0x25,0x0d,0x99,0x49, 0x41,0x1f,0x01,0x19,0x03; void keydelay() uint keytime=20000; while(keytime-);return;void s1_break() interrupt 0while(0=s1); datacount-; if(datacount9) datacount=9; return;void main() et0=1; ex0=1; ea=1; while(1) if(0=s2) keydelay(); datacount+;if(datacount9)datacount=0; p2=ledshow

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論