基于單片機的循跡小車的設計【畢業(yè)論文】_第1頁
已閱讀1頁,還剩52頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本科畢業(yè)論文(設計)</p><p><b> ?。ǘ?屆)</b></p><p>  基于單片機的循跡小車的設計</p><p>  所在學院 </p><p>  專業(yè)班級 電氣工程及其自動化 </p>

2、<p>  學生姓名 學號 </p><p>  指導教師 職稱 </p><p>  完成日期 年 月 </p><p><b>  摘 要</b></p><p>  本設計為

3、基于單片機的循跡小車的設計。該產品是一個能夠自動循跡,避障及測量其行駛速度的智能玩具小車。本設計的硬件電路由微處理器系統(tǒng)、電機模塊、循跡模塊、避障模塊、測速模塊及鍵盤和顯示模塊六大模塊組成。在設計玩具小車電路中,用C語言進行編程,Keil u Vision 軟件進行編譯,制作了智能玩具小車。此玩具小車實現(xiàn)了能夠在黑色軌道上自動循跡,碰到障礙物時及時避開,并且能夠調節(jié)小車的行駛速度,同時在行駛的過程中測量計算出小車的行駛速度并在數(shù)碼管中實

4、時顯示等功能。</p><p>  要實現(xiàn)以上功能芯片的選擇至關重要,單片機本設計選用AT89S52。顯示驅動芯片選用的是HD7279。而循跡模塊采用的是紅外線(IR)接收/檢測器。此傳感器外接電路比較簡單,能夠同時滿足小車循跡,壁障,測速三大功能。由于小車需要實現(xiàn)調速的功能,所以在設計中設置了按鍵。</p><p>  測速功能的實現(xiàn),則是靠伺服電機利用脈沖控制這一特性,計算規(guī)定距離內脈

5、沖的個數(shù)即可計算得到小車的行駛速度。</p><p>  關鍵詞:循跡;避障;測速;紅外傳感器 </p><p><b>  Abstract</b></p><p>  This is a design of tracking car based on MCU. It’s a smart toy car that tracking,obsta

6、cle-avoidance and measure the speed. The design of the hardware circuit by the microprocessor system, keyboard and display module, tracking and obstacle avoidance modules, and motor-driven four modules. Using C language

7、to program,Keil u Vison software to compie when I design the smart toy car. This toy car that can achieve orbit in a black automatic tracking, timely encounter obstacles to avoid, adjust the ca</p><p>  It’s

8、 the most important that choice of the chip for achieve the functions. The SCM is AT89S52. The display driver is HD7279, and the tracking module is the infrared(IR) receiver/detector that is simple external circuit. By

9、 the way, it can meet the car tracking, barrier, speed the three major functions. Because of the speed, it’s need to set the key in the design.</p><p>  To achieve the function of speed, calculating the numb

10、er of pulses within a specified distance by the characteristics of the puse controlle the servo motor.</p><p>  Key Words: Tracking; obstacle avoidance; speed; infrared sensor</p><p><b>  

11、目 錄</b></p><p><b>  1 引言1</b></p><p><b>  2 需求分析2</b></p><p><b>  3 硬件設計3</b></p><p>  3.1 微處理器系統(tǒng)3</p><p>  

12、3.2 鍵盤和顯示模塊4</p><p>  3.3 電機模塊6</p><p>  3.3.1伺服電機的連接6</p><p>  3.3.2伺服電機的調零8</p><p>  3.3.3伺服電機的測試8</p><p>  3.3.4伺服電機的速度和方向控制9</p><p>

13、  3.4 紅外循跡、壁障模塊10</p><p>  3.5測速模塊11</p><p><b>  4 軟件設計12</b></p><p>  4.1 總體程序流程圖12</p><p>  4.1.1初始化子程序13</p><p>  4.1.2循跡子程序13</p&g

14、t;<p>  4.1.3壁障子程序15</p><p>  4.1.4按鍵處理子程序17</p><p>  4.2電機控制程序流程圖20</p><p>  4.2.1循跡時電機的控制程序流程圖20</p><p>  4.2.2壁障時電機控制的流程圖23</p><p>  4.3 小車速

15、度的算法27</p><p><b>  5 測試報告28</b></p><p>  5.1 測試小車初始狀態(tài)28</p><p>  5.2 測試小車的循跡功能28</p><p>  5.3 測試小車的壁障功能28</p><p>  5.4 測試小車速度的控制29</p&

16、gt;<p><b>  6 結論30</b></p><p>  致謝錯誤!未定義書簽。</p><p><b>  參考文獻31</b></p><p>  附錄1 實驗原理圖32</p><p>  附錄2 畢業(yè)設計作品說明書33</p><p>

17、;  附錄3 源程序清單34</p><p><b>  1 引言</b></p><p>  2010年在上海世博會上的日本館上,一群各式各樣的機器人吸引了大批人潮。雖然這些機器人看似離我們的現(xiàn)實生活很遙遠,但是一些特殊的機器人卻已經(jīng)悄悄地走進并影響著我們的生活。比如日本重大核泄露中所運用到的核災機器人,中國嫦娥計劃中所運用的月球探索機器人等等。</p>

18、;<p>  或許設計制作一個這樣的機器人對于我們本科生來說過于遙遠。但是研究循跡小車卻是研究機器人的基礎和開始。從設計循跡小車中學習基本技能,累計經(jīng)驗,為將來打好基礎。</p><p>  根據(jù)美國玩具協(xié)會的調查統(tǒng)計,2006美國智能玩具市場規(guī)模至少300億美元,全球這一市場規(guī)模更是高達600億美元。而且這一數(shù)字還在增長。就2003與2004年相比,智能玩具的銷量增長就達到52%。與此同時,英國玩

19、具零售商協(xié)會選出的2005年圣誕最受歡迎的十大玩具中,7款就是智能玩具。</p><p>  循跡智能小車作為智能玩具中的一種,更是得到了小朋友前所未有的熱捧。這對于享有“世界工廠”的中國來說,這一市場意味著蓬勃的商機和源源不斷的財富。</p><p>  在設計中我們選用了單片機作為小車控制芯片,因為單片機自20世紀70年代問世以來,以其具有體積小、重量輕、抗干擾能力強、環(huán)境要求不高、價

20、格低廉、可靠性高、靈活性好、開發(fā)較為容易等優(yōu)勢,受到人們的重視和關注[1]。設計一個利用單片機實現(xiàn)循跡等功能的小車,無論從制作方便程度還是后價格低廉方面都具有相當?shù)膬?yōu)勢性。</p><p><b>  2 需求分析</b></p><p>  運用單片機設計一個智能的循跡小車,并用C語言進行編程。</p><p><b>  系統(tǒng)具體

21、要求:</b></p><p>  一、通過C語言對AT89S52單片機進行編程控制伺服電機的轉動。</p><p>  二、通過調節(jié)參數(shù)可以改變伺服電機的轉速和轉向,讓小車前進、后退,和做不同角度的轉動。</p><p>  三、能夠在4分鐘之內完成按照規(guī)定的賽道,從規(guī)定的起點開始,饒行一周,盡量縮短饒行時間。</p><p>

22、  四、采用紅外傳感器使小車能夠尋黑線運動。</p><p>  五、可以饒開障礙物進行智能運輸。</p><p>  六、在小車運行的同時對其速度進行檢測,并在數(shù)碼管上顯示。</p><p>  本設計利用AT89S52單片機作為小車的大腦,通過運算控制各個模塊來完成以上的功能。顯示驅動選用的芯片是HD7279,該芯片可連接多達64鍵的鍵盤矩陣,單片機即可完成LE

23、D顯示,鍵盤接口的全部功能。而實際用到的只需要4個,為了產品的擴展,本設計設置了16個鍵。</p><p>  對于小車的循跡,壁障,和測速功能,可以利用紅外線(IR)接收/檢測器實現(xiàn)全部的功能。紅外線二極管發(fā)射管發(fā)射紅外線,如果小車前面有障礙物,紅外線從物體中反射回來,這個時候小車的“眼睛”(紅外線接收管),檢測到發(fā)射回來的紅外光線。并發(fā)出信號告訴小車的“大腦”(單片機)已經(jīng)接受到了紅外光線。“大腦”基于這個傳

24、感器的輸出控制伺服電機。使其做出正確的反應。</p><p>  運用同樣的原理,黑色能夠吸收紅外光線,當傳感器無法接收到紅外光線時,表明小車在既定的軌道上行駛,反之則偏離軌道,應作出正確的反應使其返回既定軌道。實現(xiàn)小車的循跡功能</p><p>  對于小車的測速功能則可以在輪胎上做白色標記,每當沒有檢測到外光線時,單片機發(fā)生中斷,同時利用脈沖的個數(shù)來得知時間,運用公式計算速度。<

25、/p><p>  由于小車選用的電機是伺服電機,根據(jù)其特性,可以改變輸出脈沖控制伺服電機的運行速度。</p><p><b>  3 硬件設計</b></p><p>  本系統(tǒng)硬件主要有六大模塊組成:微處理器系統(tǒng)、電機模塊、循跡模塊、避障模塊、測速模塊、鍵盤和顯示模塊。系統(tǒng)結構框圖如圖3-1。</p><p>  圖3-1

26、 單片機系統(tǒng)結構圖</p><p>  3.1 微處理器系統(tǒng)</p><p>  MCS51是指由美國INTEL公司生產的一系列單片機的總稱。其中8051是最為經(jīng)典的產品。而后,INTEL公司將MCS51的核心技術授權給了很多公司,所以許多公司都在做以8051為核心的單片機,當然,功能或多或少有些改變,以滿足不同的需求。本設計利用的AT89C52單片機就是在此基礎上改進而來的。</

27、p><p>  AT89S52是一種高性能、低功率的8位單片機,內含8K字節(jié)ISP(In-system Programmable,系統(tǒng)在線編輯)可反復擦寫1000次的FLASH只讀程序儲存器,器件采用ATMEL公司的高密度、非易失性儲存技術制造,兼容標準MCS51指令系統(tǒng)及其引腳結構。在實際工程應用中,功能強大的AT89S52已成為許多高性價比嵌入式控制應用系統(tǒng)的解決方案。</p><p> 

28、 主控模塊的電路原理圖如圖3-2所示:</p><p>  圖3-2 基本單片機模塊</p><p>  3.2 鍵盤和顯示模塊</p><p>  HD7279A智能顯示驅動芯片內部含有譯碼器,可直接接受BCD碼或16進制碼,并同時具有2種譯碼方式,此外。還具有多種控制指令,如消隱,閃爍,左移,右移,段尋址等。</p><p>  HD

29、7279A具有片選信號,可方便地實現(xiàn)多于8位的顯示或多于64鍵的鍵盤接口。而本設計實際用到的按鍵只需要4個,為了產品的擴展,本設計設置了16個鍵。</p><p>  鍵盤顯示電路圖如下圖3-4所示,顯示屏由兩個4位LED數(shù)碼管組成,HD7279采用串行方式與單片機, 串行數(shù)據(jù)從DATA引腳送入芯片,并由CLK端同步.當片選信號變?yōu)榈碗娖胶?,DATA引腳上的數(shù)據(jù)在CLK引腳的上升沿

30、被寫入HD7279A的緩沖寄存器。由于本設計使用了數(shù)碼管與鍵盤,所以HD7279芯片與鍵盤的連接中串入了8只200歐姆的電阻,和8只100K的下拉電阻。RC接口接振蕩電路以供系統(tǒng)工作,其中C9=15PF,R3=1.5K。RESET復位端有三種接連方法,1;連接一外部復位電路,2;由單片機控制,3;直接與正電源相連。本設計選用第三套方案。</p><p>  圖3-4 鍵盤顯示電路</p><

31、p>  芯片讀鍵盤數(shù)據(jù)的方式如表3-1所示:</p><p>  表3-1讀鍵盤數(shù)據(jù)指令</p><p>  該指令從HD7279A讀出當前的按鍵代碼。與其它指令不同,此命令的前一個字節(jié)00010101B為微控制器傳送到HD7279A的指令,而后一個字節(jié)dO-d7則為HD7279A返回的按鍵代碼,其范圍是O-3FH(無鍵按下時為OXFF)。當此指令的前半段,HD7279A的DATA引

32、腳處于高阻輸入狀態(tài),以接受來自微處理器的指令;在指令的后半段,DATA引腳輸入狀態(tài)轉為輸出狀態(tài),輸出鍵盤代碼的值。故微處理器連接到DATA引腳的I/D口應有一從輸出態(tài)到輸入態(tài)的轉換過程。</p><p>  當HD7279A檢測大到有效的按鍵時,KEY引腳從高電平變?yōu)殡娖?,并一直保持到按鍵結束。在此期間,如果HD7279A接收到‘讀鍵盤數(shù)據(jù)指令’,則輸出當前按鍵的鍵盤代碼,如果在接收到‘讀鍵盤指令’時沒有有效按鍵

33、,HD7279A將輸出FFH(11111111B。)。</p><p><b>  3.3 電機模塊</b></p><p>  伺服電動機又稱執(zhí)行電動機,在自動控制系統(tǒng)中,用作執(zhí)行元件,把所收到的電信號轉換為電動機軸上的角位移或角速度輸出。其主要特點是,當信號電壓為零時無自轉現(xiàn)象,轉速隨著轉矩的增加而勻速下降。</p><p>  3.3.1

34、伺服電機的連接</p><p>  每個伺服電機的控制電纜有三根線——白色,紅色和黑色。其中白色是用來傳送電機的控制信號,紅色是用來連接電源,而黑色則是連接底線(本設計使用的是電壓為6V的電池組)。從圖3-5的伺服電機連接圖可知,兩個伺服電機的控制信號線(白色)分別連接到單片機的P1.2和P1.3,即由單片機的P1.2和P1.3口輸出的控制信號控制兩個伺服電機的運動。</p><p>  

35、圖3-5 伺服電機的連接</p><p>  同時為了方便判斷單片機的控制信號是否順利傳送給伺服電機(在電機的調零及查錯時非常有用),所以可以搭建一個伺服電機的控制信號電路如圖3-6。</p><p>  圖3-6 伺服電機控制信號燈的LED監(jiān)視電路圖</p><p>  3.3.2伺服電機的調零</p><p>  所謂的伺服電機調

36、零是指當發(fā)送一個特定的控制信號給伺服電機時,讓電機保持靜止的過程。由于每個伺服電機在出廠時并沒有預先調零,在給他發(fā)送調零控制信號時,電機接受到控制信號并不會停止而會轉動。因此要用螺絲刀調節(jié)伺服電機模塊內的調節(jié)電阻讓伺服電機保持靜止。這也就是伺服電機的調零過程。電機調零后還可以傳送順時針和逆時針的控制信號,驗證電機功能是否正常。</p><p>  圖3-7 顯示的信號是發(fā)送到與P1.2(或P1.3)連接的伺服電機

37、的零點校準信號,稱為零點標定信號。即如果伺服電機零點已經(jīng)調節(jié)好,發(fā)送這個信號給電機就可以讓電機保持靜止不動。這是一個脈沖時間間隔為20ms,脈沖寬度為1.5ms的脈沖序列信號。</p><p>  圖3-7 電機轉速為零的控制信號時序圖</p><p>  3.3.3伺服電機的測試</p><p>  測試伺服電機主要是運行程序,使電機以不同速度和方向旋轉。通過測

38、試,可以確保在裝配之前電機工作是否正常。</p><p>  圖3-8所示是脈沖時間間隔為20ms,脈沖寬度為1.3ms的脈沖序列信號,然后不斷重復發(fā)送控制脈沖序列。該脈沖序列發(fā)給經(jīng)過零點標定后的伺服電機,電機順時針全速旋轉(全速的范圍大約是50~60r/min,即約每秒鐘轉一圈)。圖3-9所示是脈沖時間間隔為20ms,脈沖寬度為1.7ms的脈沖序列信號,重復以上的動作,電機逆時針全速旋轉。</p>

39、<p>  圖3-8 1.3ms的控制脈沖序列使電機順時針全速旋轉</p><p>  圖3-9 1.7ms的控制脈沖序列使電機逆時針全速旋轉</p><p>  3.3.4伺服電機的速度和方向控制</p><p>  由于伺服電機是用控制信號對其控制,所以我們也可以通過信號控制他的速度。由上可以得知高電平持續(xù)時間為1.5ms時電機停止,高電平持續(xù)1

40、.3ms和1.5ms時電機全速運行。由此得知,當電機高點平持續(xù)的時間越接近1.5ms時電機的速度越慢。但需要注意的是:由于伺服電機是背靠背進行運行的,所以小車前進時需要一個電機順時針運行,另外一個電機逆時針運行,如表3-2所示。</p><p>  表3-2 伺服電機速度和方向的控制</p><p>  3.4 紅外循跡、壁障模塊</p><p>  紅外線(IR

41、)接收/檢測器有內置的光濾波器和電子濾波器,只能夠讓980nm波長的紅外線和大約38.5KHZ的電信號通過,排除太陽光和外界其他光源的干擾[3]。所以可以利用檢測器是否檢測到38500次紅外線來判斷,是否需要循跡或者壁障。</p><p>  同時紅外線會被黑色吸收,所以我們利用黑色的軌道,當小車沒有檢測到紅外線時表明小車在既定軌道上行駛;如果檢測到紅外線時著表明小車已經(jīng)脫離了既定軌道,應作出正確的判斷使其回到正

42、確的軌道。壁障模塊和測速模塊的原理相同。</p><p>  圖3-10所示的電路就是小車左右循跡IR組原理圖。由于AT89S52的IO驅動能力較弱,無法直接驅動IR LED。所以我們利用了三極管能放大電流的這一特性,用小電流來控制大電流。這樣三極管相當于一個開關:當P1_4(P1_5)置高時,從集電區(qū)經(jīng)基區(qū)到發(fā)射區(qū)電路導通,加載在IR LED上的電壓為VCC(5V),IR LED向外發(fā)射紅外線;當P1_4(P1

43、_5)置低時,電路有斷開,IR LED停止發(fā)射。如此循環(huán)行程38.5KHZ的電信號。</p><p>  圖3-10 左側和右側IR組原理圖</p><p><b>  3.5測速模塊</b></p><p>  決定小車速度的兩個要素為距離和時間,所以只要通過測量小車在規(guī)定時間內行駛的距離就可以通過計算得知小車的速度。</p>

44、<p><b>  一、距離:</b></p><p>  本設計在輪胎上安裝了一個紅外探測器,并在輪胎的一角做白色標記。每當紅外探測器無法探測到紅外線時,單片機發(fā)生中斷,得知輪胎旋轉一周。且輪胎的周期為5cm。</p><p><b>  二、時間:</b></p><p>  通過對伺服電機的了解,我們根據(jù)其

45、利用脈沖控制電機這一特性來計算時間。電機每當需要作出反應時,則會調用相應的脈沖,此時我們把他們調用的次數(shù)存放在寄存器time中。</p><p>  每當單片機發(fā)生中斷時,單片機及時計算出其速度。公式如下:</p><p>  Sudu=500000/time*(second+20000)</p><p>  圖3-11 小車速度計算脈沖</p>&l

46、t;p><b>  4 軟件設計</b></p><p>  本設計采用C語言來編寫程序,它既具有高級語言的特點,又具有匯編語言的特點。</p><p>  它可以作為工作系統(tǒng)的設計語言,編寫系統(tǒng)應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。因此,它的應用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,具體應用比如單片機以及

47、嵌入式系統(tǒng)開發(fā)。</p><p>  在軟件表現(xiàn)方面C語言一共只有32個關鍵字,9種控制語句卻擁有34總運算符,且數(shù)據(jù)類型豐富。語法的限制也不太嚴格,所以程序的設計自由度非常大。并且適用于多種操作系統(tǒng),可移植性非常高。在硬件表現(xiàn)方面,C語言允許直接訪問物理地址,可以直接對硬件進行操作,因此既具有高級語言的功能,又具有低級語言的許多程序。</p><p>  4.1 總體程序流程圖</

48、p><p>  本設計將程序劃分為多個模塊進行分別書寫,如此既可以使書寫方便,程序美觀,同時在程序的差錯時,可以精確定位,并修改。在主程序部分,可以分別調用各個模塊子程序進行循環(huán)。實現(xiàn)小車各個模塊的功能??傮w程序流程圖如4-1所示</p><p>  圖4-1 總體程序流程圖 </p><p>  4.1.1初始化子程序</p><p>  每

49、當單片機重新上電時,需要對單片機進行一些恢復和置零。</p><p>  一、設置初始值,使電機初始保持全速運動,而后通過按鍵對其速度進行控制,同時,脈沖的計數(shù)器置零,使速度的計算精確。</p><p>  二、本設計中運用到了兩個中斷器,首先要開啟兩個中斷器,再對兩個中斷方式進行選擇(選擇下降沿有效),最后開啟總開關。</p><p>  三、同時在上電時使數(shù)碼管

50、顯示6、5、4、3,為了提高數(shù)碼管的亮度,我們消隱高4位數(shù)碼管。程序流程圖如4-2所示</p><p>  圖4-2 初始化子程序流程圖</p><p>  4.1.2循跡子程序</p><p>  如圖4-3所示為循跡子程序流程圖, 程序首先調用紅外線發(fā)射子程序,紅外線管發(fā)射每秒閃爍38500次(38.5KHZ)的紅外線,而紅外接收管接受紅外線,并判斷左右紅外線管

51、接受紅外線的情況。單片機做出小車接下來的動作。IR1_L和IR1_R為紅外線接收管連接單片機的端口,當接收到紅外線時置1。</p><p>  由于紅外探測器只能尋找每秒閃爍38500次得紅外光。所以我們需要通過單片機制造一個1ms頻率為38.5kHz這個的紅外線并發(fā)射出去。設計使用的是一個12MHZ晶振,按此計算單片機AT89S52一個時鐘周期(晶振頻率的倒數(shù))為:</p><p>  

52、T=1/12M=(1/2) X 10-6s</p><p>  而單片機的操作是用計算器周期來計算的,一個計算周期為12個時鐘周期。因此</p><p>  T=12 X T=1us</p><p>  38.5kHz的脈沖的周期為26us,我們需要對置1和置0的脈沖延時13us。此脈沖需要延續(xù)1ms,我們循環(huán)38次此脈沖。至此,實現(xiàn)1ms頻率為38.5kHz紅外線

53、發(fā)射。</p><p>  程序流程圖如4-4所示:</p><p>  4.1.3壁障子程序</p><p>  由于壁障模塊運用的原理與循跡模塊的原理相同。程序的流程圖也4-3相似。首先程序調用紅外線發(fā)射子程序,紅外線管發(fā)射每秒閃爍38500次(38.5KHZ)的紅外線,而紅外接收管接受紅外線,并判斷左右紅外線管接受紅外線的情況。單片機做出小車接下來的動作。IR

54、_L和IR_R為紅外線接收管連接單片機的端口,當接收到紅外線時置1。</p><p>  壁障模塊的紅外線發(fā)射原理同循跡模塊的紅外線發(fā)射,詳見4.1.3。</p><p>  4.1.4按鍵處理子程序</p><p>  按鍵的處理是根據(jù)芯片HD7279的原理進行。當按鍵模塊有按鍵按下時,單片機發(fā)生中斷,從而單片機逐個讀取8個按鍵(8位)的信息,再將8位信息儲存在一

55、個寄存器中,單片機判斷按鍵位置做出相應的反應。每個按鍵執(zhí)行的任務如表4-1所示:</p><p>  表4-1 按鍵處理表</p><p>  4.2電機控制程序流程圖</p><p>  4.2.1循跡時電機的控制程序流程圖</p><p>  伺服電機的控制不同于其他電機,他是通過控制脈沖從而來控制電機。高電平持續(xù)時間為1300ns和1

56、700ns時為兩個全速行駛的臨界點,而持續(xù)時間越靠近1500ns速度越慢,到達1500ns時則停止運動。本設計將電機的速度劃分為6個檔位,通過按鍵控制其速度的快慢。</p><p>  需要注意的是,由于電機是背靠背放置,所以電機的逆時針與順時針是相對的。小車前進時一個電機需要得到的是逆時針脈沖,而另外一個電機則需要得到的是順時針脈沖。設計中按鍵按6個檔位控制這電機的速度。Second則是控制速度的寄存器。速度控

57、制的詳細信息如表4-2所示:</p><p>  表4-2 小車速度控制表</p><p>  4.2.2壁障時電機控制的流程圖</p><p>  小車遇到障礙物時,不同于循跡時只需要做出小幅度的調整使小車回到既定的軌道,而需要做出一系列的自動反應。如小車正前方遇到障礙物時需要將小車調頭,但是為避免小車調頭時撞到障礙物,通常是先將小車后退留出足夠的空間讓小車調頭

58、。小車遇到障礙物時應做的正確行為如表4-3:</p><p>  表4-3 小車壁障</p><p>  通過實踐和計算,得出,當電機以全速旋轉時,電機旋轉一周(360°)所需要的脈沖大概為50個。小車旋轉90°需要的脈沖位25個。在壁障電機控制的程序中,我們使用64個脈沖使小車倒退與障礙物之間的距離拉開足以使小車自由活動。而后利用25個脈沖使小車旋轉大約90

59、6;避開障礙物。</p><p>  4.3 小車速度的算法</p><p>  我們可以利用公式:Sudu=500000/time*(second+20000)算出小車的速度。但是我們需要將得到的數(shù)分開分別在4個數(shù)碼管上顯示出來。此時,我們可以利用“/”,“%”這個公式將幾位數(shù)分開。 </p><p>  一、“/”為除號,保留數(shù)的整數(shù),去掉數(shù)的余數(shù)。</p

60、><p>  二、“%”為除號,保留數(shù)的余數(shù),去掉數(shù)的整數(shù)。</p><p>  最后將得到的數(shù)分別發(fā)送給數(shù)碼管顯示,值得注意的是:此次速度計算完后,我們需要對time寄存器置零,以便進行下一輪的速度計算。</p><p><b>  5 測試報告</b></p><p>  5.1 測試小車初始狀態(tài)</p>

61、<p> ?。?):打開電源時,數(shù)碼管依次顯示6、5、4、3四個數(shù)字,而后不顯示任何數(shù)字。</p><p>  (2):小車處于靜止狀態(tài),沒有運動。</p><p>  5.2 測試小車的循跡功能</p><p>  (1):用手擋住左邊傳感器發(fā)射管,模擬小車右半部分偏離規(guī)定跑道,</p><p>  小車左轉(右電機順時針旋轉,左

62、電機順時針旋轉)。</p><p> ?。?):用手擋住右邊傳感器發(fā)射管,模擬小車左半部分偏離規(guī)定跑道,</p><p>  小車右轉(右電機逆時針旋轉,左電機逆時針旋轉)。 </p><p>  (3):用手擋住兩邊傳感器發(fā)射管,模擬小車正在規(guī)定軌道上面,</p><p>  小車前進(右電機順時針旋轉,左電機逆時針旋轉)。</p&g

63、t;<p> ?。?):沒有擋住兩邊傳感器發(fā)射管,模擬小車完全偏離規(guī)定的跑道,</p><p><b>  小車停止。</b></p><p>  將小車放在黑色軌道上,小車能夠按照規(guī)定的軌道跑完全程。</p><p>  5.3 測試小車的壁障功能</p><p>  (1):把手放在左邊傳感器前面(隔一

64、段距離),模擬小車左邊有障礙物。</p><p>  小車先后退一段距離,而后右轉90°,繼續(xù)行駛。</p><p>  (2):把手放在右邊傳感器前面(隔一段距離),模擬小車右邊有障礙物。</p><p>  小車先后退一段距離,而后左轉90°,繼續(xù)行駛。</p><p> ?。?):把手放在兩邊傳感器前面(隔一段距離)

65、,模擬小車前方有障礙物。</p><p>  小車先后退一段距離,而后左轉90°再左轉90°(調頭),繼續(xù)行駛。</p><p>  小車后退的范圍足以使小車能后左右轉或是調頭。小車能后完成90°的左右轉。</p><p>  5.4 測試小車速度的控制</p><p>  (1):按第一個按鍵時,小車全速前進。

66、數(shù)碼管顯示速度顯示最大。</p><p> ?。?):按第二個按鍵,小車減速,共6個檔位,最后小車停止。</p><p>  數(shù)碼管顯示速度依次從最大變?yōu)?</p><p> ?。?):按第三個按鍵,小車加速,共6個檔位,最后小車全速前進。 </p><p>  數(shù)碼管顯示速度依次從0變?yōu)樽畲?lt;/p><p>  (4

67、):按第四個按鍵,小車停止。 </p><p><b>  數(shù)碼管顯示速度為0</b></p><p>  小車可以通過按鍵的控制調整小車的速度。當小車在全速行駛的狀態(tài)下足以在4分鐘內完成這個跑道的行駛。</p><p><b>  6 結論</b></p><p>  本設計方案按照任務書的要求,

68、使用AT89C52單片機作為主要芯片,用C語言進行編程,WAVE軟件進行編譯,制作了智能的循跡小車。</p><p>  此設計的顯示屏由2個4位LED數(shù)碼管,鍵盤設置16個鍵,軟件部分的程序由微處理器系統(tǒng)、電機模塊、循跡模塊、避障模塊、測速模塊、鍵盤和顯示模塊組成,用STC-ISP下載軟件下載到單片機。由測試報告說明本系統(tǒng)可以實現(xiàn)的功能如下:</p><p> ?。?)小車可以實現(xiàn)循跡功

69、能。</p><p> ?。?)小車可以實現(xiàn)壁障功能。</p><p> ?。?)小車可以實現(xiàn)測速功能。</p><p> ?。?)小車可以實現(xiàn)調速功能。</p><p><b>  參考文獻</b></p><p>  [1] 楊恢先,黃輝先.單片機原理及應用[M].北京:人民郵電出版社,200

70、6,10.</p><p>  [2] 熊維. VHDL語言在數(shù)字電路設計中的應用 [J] . 黑龍江科技信息.2008,1:23~25.</p><p>  [3] 靳會清. 熱釋電紅外傳感器原理及應用[J].煤炭技術,2008,8,27(8):1-2</p><p>  [4] 劉宗新,王丹偉,張迪超,徐世錄. 紅外傳感技術的軍事應用與分析[J].紅外與激光工程

71、,2007,9,36(9):600-605</p><p>  [5] Kirchnerova J. ,Bale C.W. ,Skeaff J. M. Sensors & Actuators B[M], 1990,B2,7.</p><p>  [6] 宋雪臣.傳感器與檢測技術[M].北京:人民郵電出版社,2009,5.</p><p>  [7] 肖景

72、和,趙健. 紅外線熱釋電與超聲遙控電路[M]. 北京:人民郵電出版社,2003,9.</p><p>  [8] 賈伯年,俞樸,宋愛國.傳感器技術(第三版)[M].江蘇:東南大學出版社,2007,2.</p><p>  [9] 周四春,吳建平,祝忠明等.傳感器技術與工程應用[M].北京:原子能出版社,2007,9.</p><p>  [10] 劉愛華,滿寶元.

73、傳感器原理與應用技術[M]. 北京:人民郵電出版社,2006,10.</p><p>  [11] 俞志根等.傳感器與檢測技術(第二版)[M]. 北京:科學出版社,2010,6.</p><p>  [12] Wohltjen H. , Sensors & Actuators [M], 5(1984)307.</p><p>  [13] 殷淑英.傳感器應用

74、技術[M].北京:冶金工業(yè)出版社,2008,7.</p><p>  [14] 劉篤仁,韓保君,劉勒.傳感器原理及應用技術(第二版)[M].西安:西安電子科技大學出版社,2009,4.</p><p><b>  附錄1 實驗原理圖</b></p><p>  附錄2 畢業(yè)設計作品說明書</p><p><b>

75、;  一、作品名稱</b></p><p>  基于單片機的循跡小車的設計</p><p><b>  二、作品功能</b></p><p> ?。?)小車可以實現(xiàn)循跡功能。</p><p> ?。?)小車可以實現(xiàn)壁障功能。</p><p>  (3)小車可以實現(xiàn)測速功能。</p

76、><p> ?。?)小車可以實現(xiàn)調速功能。</p><p><b>  三、運行環(huán)境</b></p><p><b>  硬件環(huán)境</b></p><p>  AT89C52、HD7279A芯片正常,電路板子通過檢測。</p><p><b>  軟件環(huán)境</b&

77、gt;</p><p>  C語言編程,通過WAVE編譯。</p><p><b>  四、操作步驟</b></p><p>  (1)打開電源時,數(shù)碼管依次顯示6、5、4、3四個數(shù)字,而后不顯示任何數(shù)字。</p><p>  小車處于靜止狀態(tài),沒有運動。</p><p> ?。?)把小車放在黑色

78、軌道上,小車沿著軌道行駛。</p><p>  (3)在小車前面放置障礙物,小車能夠避開障礙物繼續(xù)進行。</p><p>  (4)按第一個按鍵,小車全速前進。</p><p>  (5)按第二個按鍵,小車減速,共6個檔位,最后小車停止。 </p><p>  (6)按第三個按鍵,小車加速,共6個檔位,最后小車全速前進。 </p>

79、<p>  (7)按第四個按鍵,小車停止。 </p><p><b>  五、注意事項</b></p><p>  需要為電路板提供5V直流電壓</p><p><b>  附錄3 源程序清單</b></p><p>  #include <reg51.h>

80、 /*定義頭文件*/</p><p>  /************************************/</p><p>  typedef unsigned char BYTE; /*自定義字節(jié)類型*/</p>

81、<p>  #define uchar unsigned char</p><p>  /************************************/</p><p>  #define Set_Bit(BIT) (BIT = 1) /*定義置1函數(shù)*/</p>

82、<p>  #define Clear_Bit(BIT) (BIT = 0) /*定義清0函數(shù)*/</p><p>  /************************************/</p><p>  #define HD7279_TEST 0xbf

83、 //測試</p><p>  #define HD7279_RLC 0xa3 //循環(huán)左移</p><p>  #define HD7279_RRC 0xa2

84、 //循環(huán)右移</p><p>  #define HD7279_RL 0xa1 //左移</p><p>  #define HD7279_RR 0xa0 //右移</p>

85、<p>  #define HD7279_DECODE0 0x80 //譯碼方式0</p><p>  #define HD7279_DECODE1 0xc8 //譯碼方式1</p><p>  #define HD727

86、9_UNDECODE 0x90 //譯碼方式2: 不譯碼</p><p>  #define HD7279_HIDE 0x98 //消隱</p><p>  #define HD7279_FLASH 0x88

87、 //閃爍</p><p>  #define HD7279_SEGON 0xe0 //段亮</p><p>  #define HD7279_SEGOFF 0xc0

88、 //段滅</p><p>  #define HD7279_READ 0x15 //讀</p><p>  void Write_HD7279(BYTE,BYTE); /*定義HD7279寫函數(shù)*/</

89、p><p>  BYTE Read_HD7279(BYTE); /*定義HD7279讀函數(shù)*/</p><p>  void Send_Byte(BYTE); /*定義HD7279發(fā)送字節(jié)函數(shù)*/</p><p>  BYTE Receive_By

90、te(void); /*定義HD7279接收字節(jié)函數(shù)*/</p><p>  sbit HD7279_Key=P3^3; /*定義HD7279中斷硬件連接--->INT1*/</p><p>  sbit HD7279_Clk=P1^0;

91、 /*定義HD7279時鐘硬件連接*/</p><p>  sbit HD7279_Data=P1^1; /*定義HD7279數(shù)據(jù)硬件連接*/</p><p>  sbit HD7279_CS=P2^6; /*片選端,讀取鍵盤內容*/</p&

92、gt;<p>  BYTE Keyboard_Out; /*定義鍵值變量*/</p><p>  bit Keyboard_Flag; /*定義按鍵標志*/</p><p>  /*********

93、***************************/</p><p>  sbit For_R=P1^2; /*右電機*/</p><p>  sbit For_L=P1^3;

94、 /*左電機*/</p><p>  sbit trace_L=P1^4; /*左循跡 發(fā)射*/</p><p>  sbit trace_R=P1^5; /*右循跡 發(fā)射*/</p>

95、<p>  sbit IR1_L=P1^6; /*循跡 接收*/</p><p>  sbit IR1_R=P1^7; </p><p>  sbit avoid_L=P2^0; /*左避障

96、發(fā)射*/</p><p>  sbit avoid_R=P2^1; /*右避障 發(fā)射*/</p><p>  sbit IR_L=P2^2; /*壁障 接收*/</p><p> 

97、 sbit IR_R=P2^3;</p><p>  sbit Speed_s=P2^4;</p><p>  sbit Speed=P3^2; /*測速*/</p><p>  /************************************/<

98、/p><p>  int time;</p><p>  int sudu;</p><p>  int counter;</p><p>  int Command1;</p><p>  int Command2;</p><p>  int Command3;</p><

99、;p>  int Command4;</p><p>  /************************************/</p><p>  void Short_Delay(void); /*定義短延時函數(shù)*/</p><p>  void Long_Delay(v

100、oid); /*定義長延時函數(shù)*/</p><p>  void Mcu_Init(void); /*定義MCU初始化函數(shù)*/</p><p>  void FASHE(void);</p><p>  void XUN

101、JI(void);</p><p>  void CHESU(void);</p><p>  void ANJIAN(void);</p><p>  void Forward(void); </p><p>  void Backward(void);</p><p>  void Turn_Right(void)

102、;</p><p>  void Turn_Left(void);</p><p>  void Backward1(void);</p><p>  void Turn_Right1(void);</p><p>  void Turn_Left1(void);</p><p>  void Stop(void);&

103、lt;/p><p>  /************************************/</p><p>  void main(void)</p><p><b>  {</b></p><p>  Mcu_Init(); /*MCU初

104、始化,調用子程序*/</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  XUNJI();</b></p><p><b>  BIZHAN();</b></p><

105、p><b>  CHESU();</b></p><p><b>  ANJIAN();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*************************

106、***********/</p><p>  void Mcu_Init(void) /*MCU初始化函數(shù)*/</p><p><b>  {</b></p><p>  time=0;

107、 /*測速計數(shù)*/</p><p>  Second=1300; /*默認時 全速前進*/</p><p>  HD7279_CS=0;</p><p>  Set_Bit(EX0);

108、 /*外部中斷0使能*/</p><p>  Set_Bit(IT0); /*外部中斷0下降沿觸發(fā)*/</p><p>  Set_Bit(EX1); /*外部中斷1使能*/</p><p&

109、gt;  Set_Bit(IT1); /*外部中斷1下降沿觸發(fā)*/</p><p>  Set_Bit(EA); /*中斷使能*/</p><p>  Send_Byte(0xa4);

110、 /*HD7279復位*/</p><p>  Write_HD7279(0x98,0x0f)</p><p>  ; /*HD7279啟動消隱功能(高4位消隱),能提高燈的亮度*/</p><p>  Write_HD7279(0xc8,0x03);</p><p>  /*上電顯示

111、6、5、4、3,方式1譯碼:0xc8,顯示位置0xc8+(0~7) */</p><p>  Write_HD7279(0xc9,0x04);</p><p>  Write_HD7279(0xca,0x05);</p><p>  Write_HD7279(0xcb,0x06);</p><p><b>  }</b>

112、</p><p>  /************************************/</p><p>  void XUNJI(void) /*循跡程序*/</p><p><b>  {</b></p><p> 

113、 IRLaunch('R'); //右邊發(fā)射</p><p>  IRLaunch('L'); //左邊發(fā)射</p><p>  if ((IR1_L==0)&

114、amp;&(IR1_R==0)) </p><p><b>  {</b></p><p>  Forward();</p><p><b>  }</b></p><p>  else if((IR1_L==0)&&(IR1_R==1))</p><

115、p><b>  {</b></p><p>  Turn_Left();</p><p><b>  }</b></p><p>  else if((IR1_L==1)&&(IR1_R==0)) </p><p><b>  {</b></p>

116、;<p>  Turn_Right();</p><p><b>  }</b></p><p>  else if((IR1_L==1)&&(IR1_R==1))</p><p><b>  {</b></p><p><b>  Stop();</b

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論