版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢 業(yè) 論 文</b></p><p> 專 業(yè): </p><p> 班 級: </p><p> 姓 名: </p&
2、gt;<p> 畢業(yè)設計題目:基于單片機的多功能智能小車</p><p> 指導教師姓名: </p><p><b> 二〇一三年四月</b></p><p><b> 摘要</b></p><p> 基于近幾年大學生電子大賽中
3、關于小車的研究,對此根據(jù)嵌入式系統(tǒng)的應用,提出了提出了一種以8位單片機作為系統(tǒng)大腦能實現(xiàn)智能循線避障避懸崖小車的設計方法,通過主芯片的32個完全IO端口,對這些端口加以信號輸入電路,控制電路和執(zhí)行電路,并且利用紅外探頭技術檢測障礙物和搜集地面信息,采用AT89S52單片機進行適時控制,實現(xiàn)智能循線避障以及避懸崖。智能小車采用前輪驅動,兩輪各用一個電機執(zhí)行,用MAX232芯片來控制,前方和底部探頭采用紅外發(fā)射管和紅外接收管進行障礙物檢測以
4、及地面信息的采集。</p><p> 關鍵詞:AT89S52,尋線,避障,避懸崖,流水燈</p><p><b> Abstract</b></p><p> based on undergraduate electronic contest in recent years, the research on this car accord
5、ing to the application of the embedded system, puts forward presented a 8-bit microcontroller as the system can realize intelligent follow line brain obstacle-avoidance avoid cliff car design methods, through the main ch
6、ip 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 information, co</p><p> Key wor
7、ds: AT89S51 , Cast about line,obstacle-avoidance avoid cliffs,flowing water line of light.</p><p><b> 目 錄</b></p><p><b> 摘要2</b></p><p> Abstract3<
8、/p><p><b> 1 引言5</b></p><p> 2設計思想、方案選擇及設計任務的指標6</p><p> 2.1 設計思想6</p><p> 2.2 方案設計比較與選擇7</p><p> 2.2.1 遙控模塊7</p><p> 2.2.
9、2 障礙物檢測模塊8</p><p> 2.3 設計指標及技術參數(shù)8</p><p> 3 硬件電路設計8</p><p> 3.1 智能尋跡小車系統(tǒng)框圖及概述9</p><p> 3.2 智能小車系統(tǒng)硬件電路圖及單元電路10</p><p> 3.2.1 系統(tǒng)的硬件電路總體設計10</p&
10、gt;<p> 3.2.2 分布單元電路設計與功能概述10</p><p> 3.3 單元電路設計小結15</p><p> 4 軟件程序設計15</p><p><b> 4.118</b></p><p><b> 4.220</b></p>&l
11、t;p> 4.2.1 程序狀態(tài)指示燈模塊20</p><p> 4.2.2 流水燈演示模塊20</p><p> 4.2.3 數(shù)碼管及跑馬燈模塊21</p><p> 4.2.4 按鍵中斷查詢模塊21</p><p> 4.2.5 話筒聲音識別模塊21</p><p> 4.2.6 光敏電阻
12、及蜂鳴器模塊22</p><p> 4.2.7 紅外反射與直流電機驅動模塊22</p><p> 4.2.8 串口通信模塊23</p><p> 4.3 單元模塊程序設計小結23</p><p> 5 實物運行與測試結果以及結論23</p><p> 5.1 小車的運行情況24</p>
13、<p> 5.2 小車的測試結果及分析24</p><p><b> 5.3 結論25</b></p><p><b> 6 結束語25</b></p><p><b> 參考文獻26</b></p><p><b> 致 謝27&l
14、t;/b></p><p> 附錄A:系統(tǒng)總原理圖28</p><p> 附錄B:部分程序清單29</p><p><b> 附錄C:35</b></p><p><b> 附錄D:36</b></p><p> 基于單片機的智能小車設計與制作<
15、/p><p><b> 1 引言</b></p><p> 隨著汽車工業(yè)的迅速發(fā)展,關于汽車的研究也就越來越受人關注。全國大學生電子大賽和省內電子大賽中幾乎每次都有關于小車這方面的題目,全國各高校也都很重視該題目的研究,可見其研究意義很大。本設計就是在這樣的背景下提出的,指導教師已經(jīng)有充分的準備。本題目是結合科研項目而確定的設計類課題。設計的智能電動小車應該具有智能尋
16、跡、避障、避懸崖等功能。</p><p> 根據(jù)題目的要求,確定如下方案:在已有線路板及元器件的基礎上,將傳感器改為紅外探頭,將前方底部的兩個步進電機改為用LG9110驅動的電機,再編寫一段程序,通過COM1端口將程序下載至線路板上的STC單片機芯片里,使得LED燈和數(shù)碼管具有程序指示作用以及跑馬燈流水燈的演示,并且實現(xiàn)小車的防撞、避懸崖和尋跡。</p><p> 本設計以AT89S5
17、2為主芯片,通過P0.0,P0.1,P0.2,P0.3分別控制LG9110電機驅動,來驅動電機1和電機2,。由電機的正轉與反轉來完成小車的前進,后退,左轉,右轉等功能的基本動作。在小車前進時如果前方有障礙物,由紅外發(fā)射管發(fā)射的紅外信號被反射給紅外接收管,且將此信號經(jīng)過P3.7傳送入AT89S52中,主芯片通過內部的代碼進行小車的繞行,同時主芯片將P3.7的信號狀態(tài)通過P2.5的LED燈顯示出來;小車行走時P3.5與P3.6的紅外接收探頭
18、會進行路面檢測,當走到懸崖處時,端口將會收到一個電平信號,此電平信號通過相應端口傳送入主芯片中,以此來控制小車后退然后左轉以避開懸崖前進;另外通過代碼還附有程序狀態(tài)指示功能,蜂鳴器的報警功能,夜間自動照明等功能。</p><p> 第三代單片機包括了Intel公司發(fā)展MCS-51系列的新一代產(chǎn)品,如8xC152﹑80C51FA/FB﹑80C51GA/GB﹑8xC451﹑8xC452,還包括了Philips﹑Si
19、emens﹑ADM﹑Fujutsu﹑OKI﹑Harria-Metra﹑ATMEL等公司以80C51為核心推出的大量各具特色﹑與80C51兼容的單片機。新一代的單片機的最主要的技術特點是向外部接口電路擴展,以實現(xiàn)Microcomputer完善的控制功能為己任,將一些外部接口功能單元如A/D﹑PWM﹑PCA(可編程計數(shù)器陣列)﹑WDT(監(jiān)視定時器)﹑高速I/O口﹑計數(shù)器的捕獲/比較邏輯等。這一代單片機中,在總線方面最重要的進展是為單片機配置
20、了芯片間的串行總線,為單片機應用系統(tǒng)設計提供了更加靈活的方式。Philips公司還為這一代單片機80C51系列8xC592單片機引入了具有較強功能的設備間網(wǎng)絡系統(tǒng)總線----CAN(Controller Area Network BUS)。新一代單片機為外部提供了相當完善的總線結構,為系統(tǒng)的擴展與配置打下了良好的基礎。本設計就采用了比較先進的89S52為控制核心,89S52采</p><p> 2 設計思想、方
21、案選擇及設計任務的指標</p><p><b> 2.1 設計思想</b></p><p> 本系統(tǒng)主要實現(xiàn)的功能有:避障功能,避懸崖功能,尋黑線功能,聲控功能,流水燈演示,程序狀態(tài)指示功能,數(shù)碼管演示,報警功能,夜間探照燈照明及方向燈模擬。</p><p> ?。?)避障避懸崖功能:小車前進時,如果遇到具有反光的物體或者懸崖時,小車會自動
22、后退一段,然后左轉,繞過障礙物和避開懸崖行駛。</p><p> (2)巡線功能:將小車放在一條特定的黑色跑道上,邊緣是白色,小車會尋著黑線行駛,不會走到白色跑道上。</p><p> ?。?)聲控功能:前進時,用雙手拍打一下,小車就會停止前進,這時前方的探照燈依然亮著,再次拍打后,小車又會繼續(xù)前進。</p><p> ?。?)流水燈和數(shù)碼管演示:將流水燈模塊的程
23、序寫入單片機之后,小車上的LED燈會從左到右,從右到左,從兩邊到中間以及從中間到兩邊依次點亮。</p><p> ?。?)報警功能:小車在遇到懸崖和障礙物時后退左轉過程中會報警,一直到繼續(xù)前進時才停下警笛聲音。</p><p> ?。?)夜間探照燈照明及方向燈模擬:當小車處于黑暗條件時,前方的探照燈會一直點亮,起到照明作用;小車處于左轉時,左邊方向燈閃一次,右邊的方向燈會滅,模擬了生活中汽
24、車的方向燈。</p><p> 具體設計思路如圖2-1所示。</p><p> 圖2-1 基本模塊方框圖</p><p> 2.2 方案設計比較與選擇</p><p> 2.2.1 遙控模塊</p><p> 方案一:普通遙控玩具小車的遙控裝置。</p><p> 此裝置是通過發(fā)送
25、不同頻率的電磁波,被小車接收后,在電路中產(chǎn)生不同的電流和電壓,從而控制各個電動機的開關和方向,來實現(xiàn)遙控目標的。此裝置需要在遙控器和小車上安裝小型天線,用于發(fā)射和接受,雖然是無線的,但是也不方便,容易彎曲與損壞,而且遙控距離較短。</p><p> 方案二:紅外遙控裝置。</p><p> 此裝置是通過遙控器的按鍵發(fā)送由一串0和1的二進制代碼組成,被紅外接收裝置接受,運用單片機將遙控器
26、上的多種按鍵解碼出來,用作單片機系統(tǒng)的輸入。這樣不但解決了常規(guī)矩陣鍵盤線路板過大、布線復雜、占用I/O口過多的弊病,而且通過使用遙控器,操作時可實現(xiàn)人與機器設備的分離,從而更加方便實用。</p><p> 通過兩種方案的比較,結合本設計所采用的主控制器為單片機芯片AT89S52,故采用第二種方案。</p><p> 2.2.2 障礙物檢測模塊</p><p>&
27、lt;b> 方案一:超聲波探測</b></p><p> 采用超聲波器件。超聲波傳感器向空氣中發(fā)射聲脈沖,聲波遇到障礙物反射回來,被接收探頭接受進行相關的計算和處理;超聲波波瓣較寬,一個發(fā)生器就可以監(jiān)測較寬的范圍。其優(yōu)點為抗干擾能力強,不受物體表面顏色的影響;缺點為實現(xiàn)電路復雜,且用通常的測量方法在較近距離上有盲區(qū)。</p><p><b> 方案二:光電
28、式探測</b></p><p> 采用光電式發(fā)射器。發(fā)射器向外發(fā)送信號,如遇到具有反光效應的障礙物,接受管會接收到信號,通過電路轉換成高電平或低電平的電信號,送入芯片內部,通過預先設計的程序使其繞過障礙物。其優(yōu)點是電路實現(xiàn)非常簡單,抗干擾能力較強,但是這種探測只能躲避反光物體,如遇黑色物體則不能避障。</p><p> 通過比較,兩種方案均有優(yōu)缺點,由于本設計中的避障功能不
29、需要非常的精確,并且探測的距離比較近,考慮到電路實現(xiàn)的難易程度,對于電路知識掌握不夠熟練,所以綜合之下,采用方案二。</p><p> 在方案二中,由于單個發(fā)射器的照射范圍不能太小,因此不使用激光管。用波瓣較寬的脈沖調制型紅外發(fā)射管和接收管。</p><p> 2.3 設計指標及技術參數(shù)</p><p> (1)輸入基準電壓:6V</p><
30、;p> (2)路徑識別:黑色尋跡</p><p> ?。?)障礙物檢測范圍:①具有反光性質物體范圍:0.005m~1m</p><p> ?、诓痪叻垂庑再|物體范圍:0</p><p> ?。?)懸崖探測范圍:大于0.1m</p><p> ?。?)轉彎角度設置:左轉90度</p><p> ?。?)行駛速度:0
31、.06 m/s</p><p> ?。?)遙控距離:25m</p><p><b> 3 硬件電路設計</b></p><p> 一個單片機應用系統(tǒng)的硬件電路設計包含有兩部分內容:一是系統(tǒng)擴展,即單片機內部的功能單元,如ROM﹑RAM﹑I/O口﹑定時/記數(shù)器﹑中斷系統(tǒng)等能量不能滿足應用系統(tǒng)的要求時,必須在片外進行擴展,選擇適當?shù)男酒?,設計相
32、應的電路。二是系統(tǒng)配置,既按照系統(tǒng)功能要求配置外圍設備,如鍵盤顯示器﹑打印機﹑A/D﹑D/A轉換器等,要設計合適的接口電路。</p><p> 3.1 智能尋跡小車系統(tǒng)框圖及概述</p><p><b> 如下圖3-1所示:</b></p><p> 圖3-1 小車系統(tǒng)框圖</p><p> 微控制器CPU即控制
33、核心模塊(MCU):使用AT89S52單片機,其作用是對其他模塊采集到的信號進行通過設計的程序進行相關處理,并發(fā)出正確的控制信號,是整個系統(tǒng)中最重要的部分。</p><p> 防撞模塊巡跡避懸崖模塊都采用紅外發(fā)射探頭和紅外接收探頭,利用紅外光線反射和其對黑白兩色反光程度不同的原理,既可以很好的檢測到前方能夠反射的白光物體,從而實現(xiàn)繞障礙物與防撞的功能,也可以用來檢測黑線與白線,實現(xiàn)智能巡跡的功能,同時還可以根據(jù)
34、這種方法來實現(xiàn)避懸崖及其他更多的高級功能。</p><p> 聲控模塊由普通的小型話筒構成,簡易方便,電路搭建也不復雜;在接近小車上方的位置,有間隔的拍打雙手兩次,小車會實行停止與前進兩種狀態(tài)。</p><p> 流水燈數(shù)碼管以及程序狀態(tài)指示模塊均由一排發(fā)光二極管和一個數(shù)碼管組成,發(fā)光二極管可以展示不同的花樣,比且與小車的運行狀態(tài)同步;數(shù)碼管采用共陽的方式接入,由芯片端口直接控制,可以
35、更好的展現(xiàn)出小車的運行狀態(tài)。</p><p> 電機驅動模塊分別由兩個LG9110芯片通過主芯片的發(fā)出指令來驅動底部的兩個電動機,以完成小車的順利運行;采用簡單易于管理的LG9110驅動芯片,充分主程序有時間去處理其它更多功能,比步進電機驅動更簡單,更能提高主芯片的效率。</p><p> 電源模塊比較簡單,由四節(jié)干電池構成電池組,提供整機的電源;</p><p&g
36、t; COM接口模塊采用RS232連接方式,為電腦控制小車實現(xiàn)RS232通信建立了接口,能實現(xiàn)串口通信,同時它還是程序下載與燒錄不可缺少的端口,可以通過它完成ISP編程。</p><p> 3.2 智能小車系統(tǒng)硬件電路圖及單元電路</p><p> 3.2.1 系統(tǒng)的硬件電路總體設計</p><p> 小車的硬件搭建電路主要根據(jù)上述框圖的每個模塊設計,將分步
37、的模塊電路與主控制器連接構成系統(tǒng)總原理圖,原理總圖見附錄A。</p><p> 3.2.2 分布單元電路設計與功能概述</p><p> ?。?)微控制器CPU模塊</p><p> 根據(jù)前面關于單片機系統(tǒng)的概述,本設計的主控電路采用AT89S52單片機芯片,主要是根據(jù)外部遙控和紅外探頭送入單片機的信號,以內部代碼來控制小車的運動狀態(tài)以及數(shù)碼管LED燈的動作;附
38、控電路選用LG9110芯片,即驅動小車的底部電機,它根據(jù)主芯片發(fā)出的指令來控制電機的正轉和反轉,以完成小車的前進、后退、左轉、右轉。</p><p> 兩種芯片的結構、引腳及連接電路如下圖3-2所示:</p><p> 圖3-2 AT89S52引腳圖和LG9110引腳圖</p><p> ?。?)COM1端口模塊</p><p> C
39、OM端口在電路中的連接如下圖3-3所示:</p><p> 圖3-3 COM1端口模塊電路</p><p> MAX232芯片是為電腦的RS-232標準串口設計的單電源電平轉換芯片,使用+5v單電源供電。</p><p> 第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構成。功能是產(chǎn)生+12v和-12v兩個電源,提供給RS-232串口電平的需要。
40、</p><p> 第二部分是數(shù)據(jù)轉換通道。由7、8、9、10、11、12、13、14腳構成兩個數(shù)據(jù)通道。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。</p><p> TTL/CMOS數(shù)據(jù)從T1IN、T2IN輸入轉換成RS-232數(shù)據(jù)從
41、T1OUT、T2OUT送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。</p><p> 第三部分是供電,15腳GND、16腳VCC(+5v)。</p><p><b> ?。?)遙控模塊</b></p><p> 外部遙控信號與小車的無線連接裝置利用電視機的
42、遙控器發(fā)送無線信號以及安裝在小車上的紅外遙控接收頭接收信號,然后轉變成電信號,通過外部中斷端口和訪問外部程序存儲器控制信號的端口送入主芯片內部進行處理,以發(fā)出正確的指令來控制小車</p><p> ?。?)防撞尋跡以及電機驅動模塊</p><p> 此模塊是小車的肢體,小車根據(jù)微控制器CPU大腦所下發(fā)的指令,來做出正確的肢體行為,此肢體即為紅外反射與直流電機驅動,用紅外發(fā)射管和紅外接收管
43、以及電機驅動芯片LG9110來實現(xiàn)。其與主芯片的搭建電路如下圖3-4所示:</p><p> 防撞尋跡探頭 LG9110驅動電機 </p><p> 圖3-4 防撞尋跡以及電機驅動模塊電路</p><p> 紅外反射是通過V1、V2、V5、V6、V3和V4,信號通過220電阻到達發(fā)射管
44、V1,電路中220歐電阻是給發(fā)射管提供工作電壓和工作電流;15K電阻至V2是將光信號轉變成電信號傳送到單片機的端口P3.7和P3.6以及P3.5端口,V3、V4是防撞的,V5、V6是尋跡的。</p><p> 電機驅動主要是通過驅動芯片LG9110,將電機直接接到芯片輸出的兩端,引腳1和4用于電機方向的控制,1和4的電平不同變換表示電機的運轉方向不同,主要有正轉和反轉等狀態(tài),以驅動小車的前進、后退、左轉以及右轉
45、。</p><p> 設計中對路徑檢測精度要求較高,可采用6個紅外探頭置于小車前方(超出小車的車頭,成“一”型)和底端(垂直于車身向下,離地面大約1cm),安裝時探頭需置于小車前方超出小車車頭,是為了增加徑向探出距離,從理論上講,徑向探出距離越大即探頭超出小車車頭的距離越大,越有利于盡早的預測小車即將通過的路徑,早點將此信息傳遞給單片機,作出相應的調整,發(fā)出正確的控制信號,從而改善小車的性能,因此從理論上講,徑
46、向探出距離是越大越好。但從實際出發(fā),增加徑向探出距離會使探頭位于小車前方,必然會使小車的重心前移,如果小車本事的重量較輕的話,勢必會影響到小車自身的平衡性,嚴重影響小車在行駛過程中的穩(wěn)定性能,當然不會得到理想的控制效果的。但是本設計中的小車底部有電機,重心比較穩(wěn),并且檢測障礙物選用的是紅外探頭,重量很輕,故不需考慮會影響到小車的平衡性。</p><p> 此外,在采取合理的安置檢測探頭后,還可以將探頭向下傾斜安
47、置,如下圖3-5所示。這樣做會比垂直安置光電傳感器更能獲得較大的徑向探出距離,更能有效的探測障礙物。</p><p> 圖3-5 探頭裝置圖</p><p><b> ?。?)聲控模塊</b></p><p> 實現(xiàn)小車具有聲控功能,則需有聲音信號采集裝置,因此采用比較簡單的小型話筒,其聲控的硬件電路設計如下圖3-6所示:</p&g
48、t;<p> 圖3-6 聲控電路</p><p> 當有聲音輸入時,話筒內部的電流會發(fā)生相應的變化,47K電阻將聲音信號轉變成電壓信號,其電壓信號經(jīng)過10uF的濾波電容傳入到三極管中,8050在設置時有靜態(tài)工作點,通過1M電阻和150K電阻使三極管處于一種即將開啟狀態(tài)或者是即將導通狀態(tài),當有信號輸入時,三極管導通,輸出一個低電平的信號,傳送到單片機的P0.4端口;沒有信號時,三極管將處于截止狀
49、態(tài),信號的電平被拉高,則P0.4端口將會是一個高電平。這樣就可以實現(xiàn)話筒的聲控功能。</p><p> ?。?)數(shù)碼管顯示、程序指示燈及跑馬燈演示模塊</p><p> 數(shù)碼管與LED燈電路的電路設計比較簡單,主要在于它的軟件設計。其硬件電路如下圖3-7所示:</p><p> 圖3-7 顯示電路</p><p> 電路中數(shù)碼管和LE
50、D燈與主芯片通過560歐的限流電阻連接,主芯片根據(jù)預先設計的程序會通過P1和P2發(fā)出指令信號,這樣數(shù)碼管就會顯示相應的數(shù)字或相應順序的連續(xù)變換,以及發(fā)光二極管同時點亮,完成從左到右、從右到左、從中間往兩邊和從兩邊往中間依次點亮的跑馬燈的演示。</p><p> ?。?)探照燈模擬與蜂鳴器模塊</p><p> 此模塊主要是在電路中加入了兩個發(fā)光二極管,前方左右各一個用于方向指示,以及一個
51、光敏電阻用于夜間照明;同時安裝了一個蜂鳴器,實現(xiàn)報警功能。其電路如下圖3-8所示:</p><p> 圖3-8 照明與報警電路</p><p> 光敏電阻RL1通過15K電阻,將光信號轉為電壓信號,傳送到單片機的P0.5端口;蜂鳴器經(jīng)過三極管V1和220歐電阻與P0.6端口連接,作為輸出。因為選用的三極管是8550,故低電平時才能導通。當外界光度較強時,RL1阻值變小,輸入到單片機的
52、是低電平,此時蜂鳴器就會工作;相反,當沒有光照或較暗時,送入的是高電平,蜂鳴器就會截止。而且電路中在P0.7和P2.0端口輸出照明電路,黑暗條件下,裝在小車前段的LED燈會點亮,模擬了汽車的夜間照明。</p><p> 3.3 單元電路設計小結</p><p> 以上為智能小車的每個單元電路設計,并且對每個電路的設計思想、部分元器件的性能及實現(xiàn)的功能,進行了比較詳細的闡述,把每個模塊整
53、合后就會形成小車的整體硬件電路,但是這只是小車的肢體,沒有語言使大腦發(fā)出正確的指令,它需要大腦來控制,即需要對小車的軟件部分進行精心設計。</p><p><b> 4 軟件程序設計</b></p><p> 在進行微機控制系統(tǒng)設計時,除了系統(tǒng)硬件設計外,大量的工作就是如何根據(jù)每個生產(chǎn)對象的實際需要設計應用程序。因此,軟件設計在微機控制系統(tǒng)設計中占重要地位。對于本
54、系統(tǒng),軟件更為重要。</p><p> 在單片機控制系統(tǒng)中,大體上可分為數(shù)據(jù)處理、過程控制兩個基本類型。數(shù)據(jù)處理包括:數(shù)據(jù)的采集、數(shù)字濾波、標度變換等。過程控制程序主要是使單片機按一定的方法進行計算,然后再輸出,以便控制生產(chǎn)。</p><p> 為了完成上述任務,在進行軟件設計時,通常把整個過程分成若干個部分,每一部分叫做一個模塊。所謂“模塊”,實質上就是所完成一定功能,相對獨立的程序
55、段,這種程序設計方法叫模塊程序設計法。</p><p> 模塊程序設計法的主要優(yōu)點是:</p><p> 單個模塊比起一個完整的程序易編寫及調試;</p><p> 模塊可以共存,一個模塊可以被多個任務在不同條件下調用;</p><p> 模塊程序允許設計者分割任務和利用已有程序,為設計者提供方便。</p><p&
56、gt; 本系統(tǒng)軟件部分與硬件電路設計相似,采用模塊化結構,由程序狀態(tài)指示燈模塊,流水燈演示模塊,數(shù)碼管及跑馬燈模塊,按鍵中斷查詢模塊,話筒聲音識別模塊,光敏電阻及蜂鳴器模塊,紅外反射與直流電機驅動模塊,紅外遙控解碼模塊,串口通信模塊構成。</p><p> 軟件流程如圖4-1流程圖所示:</p><p> 圖4-1 軟件設計流程圖</p><p> 4.1總
57、程序的頭文件、數(shù)據(jù)類型和端口定義以及綜合程序</p><p> #include <at89x51.h> </p><p> 包含51 相關的頭文件</p><p> typeset unsigned char uchar; </p><p> typedef unsigned int uint; </p>
58、<p> 重定義char和int數(shù)據(jù)類型</p><p> #define ShowPort P2 </p><p> uchar code LedShowData[]={0x03,0x9F,0x25,0x0D,0x99, 0x49,0x41,0x1F,0x01,0x19}; //0,1,2,3,4,5,6,7,8,9</p><p> 定義數(shù)碼管
59、顯示端口和顯示數(shù)據(jù)</p><p> static unsigned int RecvData; </p><p> static unsigned char CountData; </p><p> 定義接收紅外數(shù)據(jù)變量和紅外個數(shù)計數(shù)變量</p><p> static unsigned char AddData; </p&g
60、t;<p> static unsigned int LedFlash; </p><p> 定義自增變量和閃動頻率計數(shù)變量</p><p> unsigned char HeardData; </p><p> bit RunFlag=0;</p><p> 定義接收到數(shù)據(jù)的高位變量和運行標志位</p>
61、<p> 以上完成了基本數(shù)據(jù)變量和端口的定義,下面對狀態(tài)指示燈及按鍵端口進行相關的定義:</p><p> sbit S1State=P1^0; </p><p> sbit S2State=P1^1; </p><p> sbit B1State=P1^2; </p><p> sbit IRState=P1^3; &
62、lt;/p><p> 定義S1、S2、B1、IR狀態(tài)標志位</p><p> sbit RunStopState=P1^4;</p><p> sbit FontIRState=P1^5; </p><p> sbit LeftIRState=P1^6; </p><p> sbit RightIRState=P
63、1^7; </p><p> 定義運行停止標志位以及FontIR、LeftIR和RightIRState三種狀態(tài)標志位</p><p> sbit S1=P3^2; </p><p> sbit S2=P3^4;</p><p> 定義S1、S2按鍵端口</p><p> 完成LED燈的定義后,我們將對最重要
64、的紅外探頭和電機端口進行定義,如下:</p><p> sbit LeftLed=P2^0; </p><p> sbit RightLed=P0^7; </p><p> 定義前方左側和右側指示燈端口</p><p> sbit LeftIR=P3^5; </p><p> sbit RightIR=P3^
65、6; </p><p> sbit FontIR=P3^7;</p><p> 定義前方左側和右側紅外探頭以及正前方紅外探頭</p><p> sbit M1A=P0^0; </p><p> sbit M1B=P0^1; </p><p> sbit M2A=P0^2; </p><p&
66、gt; sbit M2B=P0^3; </p><p> 定義電機1及電機2的正向端口和反向端口</p><p> 下面是對小車的附加功能,如話筒、光敏電阻、蜂鳴器的端口定義,如下:</p><p> sbit B1=P0^4; </p><p> sbit RL1=P0^5; </p><p> sbit
67、 SB1=P0^6;</p><p> 定義話筒傳感器、光敏電阻和蜂鳴端口</p><p> sbit IR1=P3^3</p><p><b> 定義紅外接收端口</b></p><p> void Delay();</p><p> { uint DelayTime=30000 &l
68、t;/p><p> 定義延時子程序和延時時間變量</p><p> 綜上所有程序只是整體程序代碼設計的開頭部分,只是對小車所有需要定義的端口及數(shù)據(jù)類型進行定義,為以下的每個模塊程序設計做好鋪墊。</p><p> 4.2 單個模塊程序設計與編寫</p><p> 4.2.1 程序狀態(tài)指示燈模塊</p><p>
69、程序狀態(tài)指示燈是比較常見到的一種工作狀態(tài)指示器,像網(wǎng)卡、無線發(fā)射器、電腦等等都會有相應的LED指示燈來表示當前儀器的工作狀況。往往用LED閃亮的快慢來表示儀器是否處在工作中,以及長亮與長滅來表示儀器是否故障或需要檢查等操作</p><p> 本設計系統(tǒng)中的此模塊也是通過LED燈來模擬小車的運行情況,設計思路如下:</p><p> ?。?)定義一個可變的延時函數(shù),通過它來改變燈閃亮的時間
70、.</p><p> ?。?)選取51機器人中相應的LED模塊,聲明端口,用來顯示閃亮的狀態(tài)。</p><p> ?。?)編寫主函數(shù),讓芯片一直循環(huán)運行,并定義一個時間記錄器來改變閃亮情況。</p><p> (4)根據(jù)時間記錄器的數(shù)值來改變LED指示燈的閃亮情況,來完成程序狀態(tài)指示燈的模擬操作.</p><p> 具體的程序見附錄B程序
71、指示燈模塊。</p><p> 4.2.2 流水燈演示模塊</p><p> ?。?)unsigned int code BToM[]={0x7E,0x3C,0x18,0x00}; </p><p> unsigned int code MToB[]={0xE7,0xC3,0x81,0x00};</p><p> 定義由兩邊到中間及中間
72、到兩邊的顯示數(shù)據(jù)</p><p> void Delay() reentrant </p><p> { unsigned int DelayTime=10000;</p><p> while(DelayTime--); </p><p><b> }</b></p><p> 加入可
73、重入的延時函數(shù)延和時時間基數(shù),以便每個LED燈閃滅之間有一定的延時</p><p> (2)void LeftToRight() </p><p> {unsigned char TempCount=0; </p><p> Led=Led<<1; </p><p> 定義從左邊到右邊的顯示函數(shù)以及顯示次數(shù)變量;由右邊向左
74、邊移動數(shù)據(jù);然后定義初步的顯示數(shù)據(jù),通過循環(huán)進行數(shù)據(jù)顯示,在每次移動數(shù)據(jù)開始的時候加入(1)中的延時,最后通過空返回語句return表明該子程序的結束,進入下一個子程序。</p><p> 流水燈的四個動作程序結構與設計上完全一樣,完整的程序見附錄B中流水燈模塊。</p><p> 4.2.3 數(shù)碼管及跑馬燈模塊</p><p> 此模塊只是將數(shù)碼管的顯示融入
75、到上述的流水燈演示里面,使兩者結合起來演示,所以不復雜,并且設計中已經(jīng)將這個模塊的程序寫入到總程序中,在小車運行時,會有相應的顯示。</p><p> 4.2.4 按鍵中斷查詢模塊</p><p> 本模塊通過兩個按鍵對數(shù)碼管進行操作,分別演示了查詢與中斷的操作方式,中斷中應用了對按鍵進行查詢的方法來判斷按鍵的鍵值,查詢按鍵方法中則采用了鍵盤延遲的方法來消除按鍵重復輸入。</p&
76、gt;<p> 程序運行效果:開機后數(shù)碼管顯示數(shù)字 "1" ,當按 S1 不放時,數(shù)碼管數(shù)字不變,松開 S1 按鍵,數(shù)碼減 1 ;按 S2 鍵不放時,數(shù)碼管數(shù)字會自動加 1。并且數(shù)字遵守從 0-9 循環(huán)操作。</p><p> 具體的程序見附錄B中的按鍵中斷查詢模塊</p><p> 4.2.5 話筒聲音識別模塊</p><p&g
77、t; 本程序主要通過話筒對聲音信號進行識別,由于硬件關于本模塊電路設計中能有效的去除雜波,所以僅能對響度較大的聲音進行識別 ( 例 : 拍手聲,大叫聲等等 )。像正常的說話聲對本電路慮除,不會產(chǎn)生信息的輸入。話筒識別的加入,為我們建立了聲控平臺。主要的程序設計如下:</p><p><b> while(1) </b></p><p><b> {&l
78、t;/b></p><p> if (0==B1) </p><p><b> {</b></p><p> while(0==B1); </p><p><b> Delay(); </b></p><p> LeftLed=!LeftLed; </
79、p><p> RightLed=!RightLed;</p><p><b> }</b></p><p><b> }</b></p><p> 首先判斷是否有聲音輸入,等待聲音信號結束,去除多余雜音,然后使小車前方左側和右側指示燈分別取反,這樣就實現(xiàn)了聲音識別的功能;關于聲音控制小車運行的設
80、計,已經(jīng)寫入了總程序中,在小車運行時能展現(xiàn)出聲控的功能。</p><p> 4.2.6 光敏電阻及蜂鳴器模塊</p><p><b> while(1)</b></p><p><b> {</b></p><p> if(1==RL1)</p><p><b&
81、gt; {</b></p><p><b> Delay();</b></p><p><b> SB1=!SB1;</b></p><p> LeftLed=!LeftLed;</p><p> RightLed=!RightLed;</p><p>
82、<b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> SB1=1;</b></p><p> LeftLed=1;</p><p> Right
83、Led=1;</p><p><b> }</b></p><p><b> }</b></p><p> 首先判斷光敏的現(xiàn)在狀態(tài) ( 有光 0, 無光 1),然后開始延時,如果在黑暗條件下,高電平輸入使蜂鳴器響亮以及前方左右兩側指示燈閃亮;否則蜂鳴器和指示燈均關閉。</p><p> 4.
84、2.7 紅外反射與直流電機驅動模塊</p><p> 此模塊為小車最為重要的模塊,因為它關系著小車整體的運行情況,避障避懸崖和尋線都是設計的核心部分,也都是在本模塊實現(xiàn)的。</p><p> 首先要定義前方指示燈、紅外探頭以及電機驅動、語音傳感器和蜂鳴器端口,然后加入小車調轉子時間子程序并定義轉彎時間變量,在延時子程序中寫入讓蜂鳴器響亮的代碼:</p><p>
85、 while(DelayTime--); </p><p> SB1=!SB1; </p><p> 這樣使得小車轉彎時蜂鳴器報警,用return語句來結束該子程序,進入到下一個電機控制子程序,將電機的初始化都設為0,用case語句來判斷小車的前進,后退,左轉以及右轉四種狀態(tài),并在相應的狀態(tài)下寫入電機的運轉狀態(tài),如前進時電機M1M2正轉,左轉時M1 電機反轉M2 電機正轉;下面是進入
86、主循環(huán)。用LeftLed和RightLed分別表示前方左側和右側紅外探頭狀態(tài),RunShow指示前方紅外探頭狀態(tài),然后用if語句(if(FontIR==0 || LeftIR==1)來判斷前方 , 左側 , 右側是否有信號輸入</p><p> RightIR==1);</p><p> {ControlCar(2);</p><p> 讓小車后退,在后退過程
87、中加入了蜂鳴器報警,注意此時小車沒有聲控功能,因為存在報警聲音,對其造成了一定的干擾。</p><p> 4.2.8 串口通信模塊</p><p> 本程序是通過數(shù)碼管、LED 指示燈的閃亮來表示當前串口通信的結果 , 串口通信使單片機與電腦之間通信的橋梁,可以很好的用電腦來進行單片機的控制,及對單片機數(shù)據(jù)的采集。</p><p> 具體的程序代碼見附錄B中的
88、串口通信模塊</p><p> 運行時可以看到,打開本機電源開關后, P1端LED 指示燈在不停的閃耀,此時使用“串口調試助手” 或其它軟件向單片機發(fā)送數(shù)據(jù),可以看到相應的數(shù)據(jù)顯示在數(shù)碼管上,并且發(fā)送的數(shù)據(jù)又返回到電腦中。 ( 只顯示 0-9 數(shù)字)</p><p> 4.3 單元模塊程序設計小結</p><p> 以上是對小車軟件部分的每個模塊進行了說明,并
89、且對主要的程序設計思想進行了闡述,有的模塊已經(jīng)融入到了綜合程序中,有的模塊是需要分步下載之后才能展現(xiàn)出來,將每個模塊的程序經(jīng)過整合,定義的端口和函數(shù)都放在前面,子程序通過空返回語句return來連接,構成總程序。</p><p> 總程序代碼如附錄B中總程序所示。</p><p> 5 實物運行與測試結果以及結論</p><p> 5.1 小車的運行情況<
90、;/p><p> 將COM端口的USB線把小車和電腦連接起來,通過ISP編程器和STC_ISP_V394軟件將綜合程序寫入到芯片中,等待幾秒鐘,放在一張反光較強的桌子上,打開電源可以看到,小車往前走,當遇到障礙物時會后退轉彎,繞過障礙物行駛;行駛到桌子的邊緣時,小車同樣也會后退轉彎,躲避懸崖;同時在前進過程中,可以用拍手聲來控制小車,使小車停下來,再拍一次小車又會前進。</p><p>
91、由于尋跡功能需單獨演示,所以要將其程序寫入芯片并把原有程序覆蓋,單獨實現(xiàn)黑色尋跡。</p><p> 流水燈和程序狀態(tài)指示燈也都是屬于獨立演示的模塊,所以要通過端口依次寫入依次演示。</p><p> 5.2 小車的測試結果及分析</p><p> ?。?)測試結果及數(shù)據(jù)如下:</p><p> ①小車的前進和后退速度一致,均為0.05
92、9m/s;</p><p> ?、谡系K物檢測距離:反光很強的物體:約1m;</p><p> 反光很弱的物體:約0.005m;</p><p> 黑色物體:0 m(即檢測不到黑色的障礙物);</p><p> ?、郾軕已赂叨确秶捍笥诘扔?.09m;</p><p> ?、苎埠诰€偏離范圍:0~0.04m;</
93、p><p> ?、蒉D彎角度:路面較光滑時為左轉87~90度</p><p> 路面比較粗糙時左轉約80~87度</p><p> ?、迶?shù)碼管能正常顯示出數(shù)字“0、1、2、···”,LED燈比較亮,沒有出現(xiàn)閃、較暗或不亮的情況;</p><p> ?、吡魉疅粞菔?、方向燈探照燈及聲控功能都能實現(xiàn)</p>
94、<p><b> ?、噙b控功能沒有實現(xiàn)</b></p><p> ?。?)測試結果分析如下:</p><p> 經(jīng)過調試與測試,實物小車的速度與設計指標相差0.001 m/s;轉彎度與目標值相差10度,這兩種誤差都與小車行駛的路面狀況有關,摩擦力大時,誤差范圍會更大,所以都符合預先設計的技術要求。避障避懸崖以及尋線的精確度與設計指標相差不是太大,這與元器件
95、的性能有關。其他功能也都能實現(xiàn),只有實遙控功能沒有實現(xiàn),這是本次設計中的缺陷所在</p><p> 經(jīng)過線路板及元器件的焊點觀察和測試分析,主要原因有以下幾點:</p><p> ?、倏赡苁羌t外遙控接收頭壞了,接收不到遙控器發(fā)出的信號;</p><p> ?、诳赡苁羌t外接收頭至芯片那一路的某個元件虛焊導致斷路;</p><p> ?、圻€有可
96、能是所選遙控器與軟件設計的代碼不匹配,實現(xiàn)不了對小車的遙控。</p><p> ④由于對遙控解碼程序不熟悉,可能通過單片機的程序對遙控器的按鍵解碼不正確,導致小車不具遙控功能。</p><p><b> 5.3 結論</b></p><p> 至此小車的整體包括硬件和軟件的設計已經(jīng)完成,歷時三個月的設計過程中,我首先上網(wǎng)搜集資料,并在網(wǎng)上
97、選購線路板,在我實習的車間里焊接小車的線路板。雖然我訓練過兩個月的焊接,但是在實際的焊接過程中,我感覺到即使是一個簡單的電路,要想很輕松的焊好,也不是很容易的事情,有時是“虛焊”的原因,有時可能是阻值選錯,比如這次的遙控功能就不能實現(xiàn),這使我深深感受到理論與實際間的差距。通過這樣的設計,提高了我的動手能力。</p><p> 焊接結束后,要對其進行調試,在調試過程中,出現(xiàn)了很多問題,如數(shù)碼管不顯示、小車總是后退
98、不前進等等一些問題,在孟老師的指導與幫助下,這些難題已經(jīng)被攻克了,小車能夠正確的實現(xiàn)智能防撞壁懸崖等功能。</p><p> 小車的模型圖和實物圖見附錄C所示;</p><p> 小車的元件清單見附錄D所示。</p><p><b> 6 結束語</b></p><p> 從三月份著手查資料開始到今日,小車的焊接
99、、調試和組裝已經(jīng)完成,系統(tǒng)基本上能穩(wěn)定的運行,但是還有不足之處,就是上面所提到的遙控功能沒有實現(xiàn),所以要吸取經(jīng)驗,在以后的學習和工作中要更加完善。</p><p><b> 參考文獻</b></p><p> [1] 胡漢才.單片機原理及其接口技術. [M]. 北京: 清華大學出版社,2004年2月.</p><p> [2] 張永瑞,王
100、松林,李小平.電路分析. [M]. 北京:高等教育出版社,2004年10月.</p><p> [3] 譚浩強.C程序設計. [M]. 北京: 清華大學出版社,2005年7月.</p><p> [4] 清源科技.電路原理圖與PCB設計及仿真. [M]. 北京:機械工業(yè)出版社,2008年6月.</p><p> [5] 李松法.電子元器件應用技術. [M].
101、北京:航空工業(yè)出版社,2009年6月.</p><p> [6] AT89C51 DATA SHEEP Philips Semiconductors 1999.dec</p><p> [7] Nilsson,J.W.Introductory Circuits for Electrical and Computer Engineering. [M].BeiJing:Publishing
102、 House of Electronics Industry</p><p><b> 致 謝</b></p><p> 經(jīng)過自己不斷的搜索努力以及王老師的耐心指導和熱情幫助,本設計已經(jīng)基本完成。在這段時間里, 老師嚴謹?shù)闹螌W態(tài)度和熱忱的工作作風令我十分欽佩,她的指導使我受益非淺。</p><p> 通過這次畢業(yè)設計,使我深刻地認
103、識到學好專業(yè)知識的重要性,也理解了理論聯(lián)系實際的含義,并且檢驗了大學三年的學習成果。雖然在這次設計中對于知識的運用和銜接還不夠熟練。但是我將在以后的工作和學習中繼續(xù)努力、不斷完善。這個畢業(yè)設計是對過去所學知識的系統(tǒng)提高和擴充的過程,為今后的發(fā)展打下了良好的基礎。</p><p> 由于自身水平有限,設計中一定存在很多不足之處,敬請各位老師批評指正。</p><p> 附錄A:系統(tǒng)總原理
104、圖</p><p> 附錄B:部分程序清單</p><p><b> 附錄C:</b></p><p><b> 模 型 圖</b></p><p><b> 實 物 圖</b></p><p><b> 附錄D:&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機的智能小車設計畢業(yè)設計
- 基于單片機的智能尋跡小車畢業(yè)設計
- 畢業(yè)設計--基于單片機的智能小車的設計
- 基于單片機的wifi智能小車設計 畢業(yè)設計
- 基于單片機的智能尋跡小車設計畢業(yè)設計
- 基于單片機的wifi智能小車設計 畢業(yè)設計
- 畢業(yè)設計---基于單片機的電動智能小車設計
- 畢業(yè)設計--基于arduino單片機的智能小車設計
- 畢業(yè)設計基于arduino單片機的智能小車設計
- 基于單片機的多功能智能小車畢業(yè)設計
- 畢業(yè)設計論文基于單片機的智能循跡小車
- 畢業(yè)設計----基于單片機控制的智能電動小車
- 機電專業(yè)畢業(yè)設計--基于單片機的智能循跡小車
- 基于單片機的多功能智能小車的設計【畢業(yè)設計】
- 基于單片機的智能小車設計
- 基于單片機的智能循跡小車的控制畢業(yè)設計論文
- 基于單片機的智能循跡小車的控制畢業(yè)設計論文
- 基于單片機的多功能智能小車設計畢業(yè)設計論文
- 基于單片機智能小車畢業(yè)設計(論文)
- 基于單片機的智能小車設計
評論
0/150
提交評論