蔽障循跡智能小車畢業(yè)論文_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  2013年 7 月12日</p><p>  一、緒論.......................................................................4 </p><p>  1.1智能小車的作用和意義.............................................................

2、.....4 </p><p>  二、方案設計與論證 ................................................ 4 </p><p>  2.1 總體方案設計 ...............................................................................4 </p>&l

3、t;p>  2.2主控系統(tǒng) ........................................................................................5</p><p>  2.3傳感器選擇方案 ............................................................................6 &l

4、t;/p><p>  2.4電機驅動芯片選擇方案..................................................................6 </p><p>  2.5電機方案選擇..................................................................................6<

5、;/p><p>  2.6電源方案選擇..................................................................................7 </p><p>  三、主要器件介紹 .....................................................7</p><p>

6、  3.1 STC89C52的介紹 .........................................................................7 </p><p>  3.2 L298N的介紹 ...............................................................................8</p>

7、<p>  3.2.1 L298N的引腳功能 ................................................................................... 9 </p><p>  3.2.2 L298N的運行參數(shù) .................................................................

8、..................10</p><p>  3.2.3 L298N的邏輯控制 ................................................................................... 10 </p><p>  3.3 TCRT5000的介紹 ..................................

9、...................................... 11</p><p>  3.4LM339的介紹 ................................................................................12</p><p>  3.5 L7805CV和L7806CV的介紹.................

10、........................................12</p><p>  四、硬件設計 ............................................................... 14 </p><p>  4.1 主控芯片STC89C52單片機最小系統(tǒng)板電路 ........................... 14

11、 </p><p>  4.2 電機驅動模塊電路..........................................................................15</p><p>  4.3紅外對黑線檢測模塊電路...............................................................16 </

12、p><p>  4.4穩(wěn)壓電源電路...................................................................................18</p><p>  五、程序設計 ............................................................. 19 </p>&

13、lt;p>  5.1主程序 .............................................................................................19</p><p>  六、調試....................................................................... 28 </p

14、><p>  6.1硬件調試 .........................................................................................28</p><p>  6.1.1元件的固定 ......................................................................

15、..... 28</p><p>  6.1.2TCRT5000探頭 ..................................................................... 29 </p><p>  6.1.3 L298N馬達驅動模塊 ...........................................................

16、 29 </p><p>  6.2軟件調試 ........................................................................................ 29 </p><p>  6.2.1調試平臺介紹 ..........................................................

17、............... 29</p><p>  6.2.2程序調試.....................................................................................29</p><p>  6.3 測試結果與分析 ................................................

18、........................... 30</p><p>  七、心得體會.................................................................................. 30</p><p><b>  附件 元件清單 </b></p><p><b

19、>  參考文獻</b></p><p><b>  一、緒論</b></p><p>  1.1智能小車的作用和意義 </p><p>  自第一臺工業(yè)機器人誕生以來,機器人的發(fā)展已經(jīng)遍及機械、電子、冶金、交通、宇航、國防等領域。近年來機器人的智能水平不斷提高,并且迅速地改變著人們的生活方式。人們在不斷探討、改造、認識自然的

20、過程中,制造能替代人勞動的機器一直是人類的夢想。</p><p>  隨著科學技術的發(fā)展,機器人的感系統(tǒng),對于視覺的各種技術而言圖像處理技術已相當發(fā)達,而基于圖像的理解技術還很落后,機器視覺需要通過大量的運算也只能識別一些結構化環(huán)境簡單的目標。視覺傳感器的核心器件是攝像管或CCD,目前的CCD已能做到自動聚焦。但CCD傳感器的價格、體積和使用方式上并不占優(yōu)勢,因此在不要求清晰圖像只需要粗略感覺的系統(tǒng)中考慮使用接近

21、覺傳感器是覺傳感器種類越來越多,其中視覺傳感器成為自動行走和駕駛的重要部件。視覺的典型應用領域為自主式智能導航一種實用有效的方法。</p><p>  機器人要實現(xiàn)自動導引功能和避障功能就必須要感知導引線和障礙物,感知導引線相當給機器人一個視覺功能。避障控制系統(tǒng)是基于自動導引小車(AVG—auto-guide vehicle)系統(tǒng),基于它的智能小車實現(xiàn)自動識別路線,判斷并自動避開障礙,選擇正確的行進路線。使用傳感

22、器感知路線和障礙并作出判斷和相應的執(zhí)行動作。</p><p>  該智能小車可以作為機器人的典型代表。它可以分為三大組成部分:傳感器檢測部分、CPU、執(zhí)行部分。機器人要實現(xiàn)自動避障功能,還可以擴展循跡等功能,感知導引線和障礙物??梢詫崿F(xiàn)小車自動識別路線,選擇正確的行進路線,并檢測到障礙物自動躲避?;谏鲜鲆?,傳感檢測部分考慮到小車一般不需要感知清晰的圖像,只要求粗略感知即可。智能小車的執(zhí)行部分,是由直流電機來充

23、當?shù)?,主要控制小車的行進方向和速度。 </p><p><b>  二、方案設計與論證</b></p><p>  2.1 總體方案設計 </p><p>  本系統(tǒng)基于AT89C52單片機的小車尋跡系統(tǒng),該系統(tǒng)采用兩組高靈敏度的紅外反射式光電傳感器,對路面的黑色軌跡進行檢測,將檢測的數(shù)據(jù)送入單片機進行處理,并利用單片機產生PWM波,并以最短時

24、間完成尋跡。同時采用紅外傳感器對障礙物進行躲避功能,遇到對于交通燈的檢測采用固定頻率的紅外線信號表示不同的交通指示燈,使控制系統(tǒng)更加智能。在軟件程序上采用一定的控制算法,使得小車在通道上第一次遇到十字黑線時候減速行駛,在第二次遇到十字黑線可以實現(xiàn)減速轉彎,因此,本系統(tǒng)由紅外光電傳感器,單片機和驅動單元共同作用,保證小車能在預先設定的軌跡上行駛。 </p><p>  本設計的主要特色本設計的主要特色本設計的主

25、要特色本設計的主要特色: </p><p>  1.自制的四個輪結構小車,采用PWM調速。</p><p>  2.采用6V電池供電,直流穩(wěn)壓電路工作穩(wěn)定。 </p><p>  3.采用紅外發(fā)射傳感器接收對黑線標志進行識別,具有高精度和高靈敏度。 </p><p><b>  2.2主控系統(tǒng)</b></p>

26、<p>  根據(jù)設計要求,我認為此設計屬于多輸入量的復雜程序控制問題。據(jù)此,擬定了以下兩種方案并進行了綜合的比較論證,具體如下: </p><p>  方案一: 選用一片CPLD(如EPM7128LC84-15)作為系統(tǒng)的核心部件,實現(xiàn)控制與處理的功能。CPLD具有速度快、編程容易、資源豐富、開發(fā)周期短等優(yōu)點,可利用VHDL語言進行編寫開發(fā)。但CPLD在控制上較單片機有較大的劣勢。同時,CPLD的處

27、理速度非??欤≤嚨男羞M速度不可能太高,那么對系統(tǒng)處理信息的要求也就不會太高,在這一點上,MCU就已經(jīng)可以勝任了。若采用該方案,必將在控制上遇到許許多多不必要增加的難題。為此,我們不采用該種方案,進而提出了第二種設想。 </p><p>  方案二: 采用單片機作為整個系統(tǒng)的核心,用其控制行進中的小車,以實現(xiàn)其既定的性能指標。充分分析我們的系統(tǒng),其關鍵在于實現(xiàn)小車的自動控制,而在這一點上,單片機就顯現(xiàn)出來它的優(yōu)

28、勢——控制簡單、方便、快捷。這樣一來,單片機就可以充分發(fā)揮其資源豐富、有較為強大的控制功能及可位尋址操作功能、價格低廉等優(yōu)點。因此,這種方案是一種較為理想的方案。 針對本設計特點——多開關量輸入的復雜程序控制系統(tǒng),需要擅長處理多開關量的標準單片機,而不能用精簡I/O口和程序存儲器的小體積單片機,D/A、A/D功能也不必選用。根據(jù)這些分析,我選定了STC89C52RA單片機作為本設計的主控裝置,52單片機具有功能強大的位操作指令,I/O口

29、均可按位尋址,程序空間多達8K,對于本設計也綽綽有余,更可貴的是52單片機價格非常低廉。 在綜合考慮了傳感器、兩部電機的驅動等諸多因素后,我們決定采用一片單片機,充分利用STC89C52單片機的資源。</p><p>  2.3傳感器選擇方案 </p><p>  方案一:采用發(fā)光二極管發(fā)光,用光敏二極管接收; 發(fā)光二極管發(fā)出的可見光照射到黑帶時,光線被黑帶吸收,光敏二極管為檢測到信號。呈

30、高阻抗,使輸出端為低電平。當發(fā)光二極管發(fā)出的可見光照射到地面時,它發(fā)出的可見光反射回來被光敏二極管檢測到,其阻抗迅速降低,此時輸出端為高電平。但是由于光敏二極管受環(huán)境中可見光影響較大,電路的穩(wěn)定性很差,但可以通過運放對檢測信號進行處理。</p><p>  方案二: 采用反射式紅外光電傳感器。 用TCRT5000型反射式紅外對管組成的路徑識別傳感器模塊,檢測距離和靈敏度均能達到系統(tǒng)要求,該器件具有如下特點:當發(fā)光

31、二極管發(fā)出的光反射回來時,三極管導通輸出低電平,該光電對管調理電路簡單,工作性能穩(wěn)定。 綜上所述,本設計采用發(fā)光二極管進行檢測,原因是性價比較合理。</p><p>  2.4電機驅動芯片選擇方案</p><p>  方案一:采用分立元件的H橋驅動電路。 </p><p>  方案二:采用集成的H橋驅動電路芯片。 由于集成的H橋驅動電路芯片體積小,穩(wěn)定性高,因此選用

32、集成的驅動電路芯片作為電機的驅動芯片,型號為L298N。</p><p>  2.5電機方案選擇 </p><p>  方案一: 采用步進電機,步進電機的一個顯著特點就是具有快速啟停能力可實現(xiàn)電機正反轉及調速,啟動性能好,啟動轉矩大。工作電壓可達到36V,4A。可同時驅動兩臺直流電機。適合應用于機器人設計及智能小車的設計中,如果符合不超過步進電機所能提供的動態(tài)轉矩值,就能夠立即使步進電

33、機的啟功或者反轉。調速方式:直流電動機采用PWM信號平滑調速。</p><p>  方案二: 采用普通直流減速電機,直流電動機具有優(yōu)良的調速特性,調速平滑,方便,調整范圍廣,過載能力強,能承受頻繁的沖擊負載,可實現(xiàn)頻繁的無極快速啟動,制動,和反轉,能滿足各種不同的特殊運行要求。 綜上所訴,我們選擇直流減速電機。</p><p><b>  2.6電源方案選擇</b>&

34、lt;/p><p>  方案一: 直接使用AA干電池進行供電它的結構十分簡單,但是供電能力差,不易長時間供電。 </p><p>  方案二: 使用3500mA干電池配合直流穩(wěn)壓整流電路輸入端口接9mA的干電池,經(jīng)電容濾波和L7805和L7806穩(wěn)壓后輸出約5V,6V電壓??杀WC長時間穩(wěn)定的輸出電壓。這樣可以提供持久穩(wěn)定的電流,穩(wěn)壓后給單片機系統(tǒng)和其他芯片供電??紤]到系統(tǒng)穩(wěn)定工作的要求,所以選

35、擇方案一。</p><p><b>  三 主要器件介紹</b></p><p>  3.1 STC89C52的介紹 </p><p>  STC89C52引腳功能說明</p><p>  VCC(40引腳):電源電壓 VSS(20引腳):接地</p><p>  P0端口(P0.0~P0.7,3

36、9~32引腳):P0口是一個漏極開路的8位雙向I/O口。作為輸出端口,每個引腳能驅動8個TTL負載,對端口P0寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,P0口也可以提供低8位地址和8位數(shù)據(jù)的復用總線。此時,P0口內部上拉電阻有效。在Flash ROM編程時,P0端口接收指令字節(jié);</p><p>  而在校驗程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。</p><p

37、>  P1端口(P1.0~P1.7,1~8引腳):P1口是一個帶內部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅動(吸收或者輸出電流方式)4個TTL輸入。對端口寫入1時,通過內部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時,因為有內部上拉電阻,那些被外部拉低的引腳會輸出一個電流。</p><p>  此外,P1.0和P1.1還可以作為定時器/計數(shù)器2的外部技術輸入(P1.0/T2)

38、和定時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體參見下表:</p><p>  在對Flash ROM編程和程序校驗時,P1接收低8位地址。表XX P1.0和P1.1引腳復用功能</p><p>  在對Flash ROM編程或程序校驗時,P3還接收一些控制信號。 P3口除作為一般I/O口外,還有其他一些復用功能,如下表所示: 表XX P3口引腳復用功能</p>&l

39、t;p>  來完成單片機單片機的復位初始化操作??撮T狗計時完成后,RST引腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認狀態(tài)下,復位高電平有效。</p><p>  XTAL1(19引腳):振蕩器反相放大器和內部時鐘發(fā)生電路的輸入端。</p><p>  XTAL2(18引腳):振蕩器反相放大器的輸入端。 特殊功能寄

40、存器</p><p>  3.2 L298N的介紹</p><p>  L298N是一種高電壓、大電流電機驅動芯片。該芯片的主要特點是:工作電壓高,最高工作電壓可達46V;輸出電流大,瞬間峰值電流可達3A,持續(xù)工作電流為2A;內含兩個H橋的高電壓大電流全橋式驅動器,可以用來驅動直流電動機和步進電動機、繼電器、線圈等感性負載;采用標準TTL邏輯電平信號控制;具有兩個使能控制端,在不受輸入信號

41、影響的情況下允許或禁止器件工作;有一個邏輯電源輸入端,使內部邏輯電路部分在低電壓下工作;可以外接檢測電阻,將變化量反饋給控制電路。</p><p>  3.2.1 L298N的引腳功能</p><p>  3.2.2 L298N的運行參數(shù)</p><p>  3.2.3 L298N的邏輯控制</p><p>  主要采用L298N,通過單片機

42、的I/O輸入改變芯片控制端的電平,即可以對電機進行正反轉,停止的操作,輸入引腳與輸出引腳的邏輯關系圖為</p><p>  表3.3 L298N對直流電機控制的邏輯真值表</p><p>  3.3 TCRT5000的介紹</p><p>  TCRT5000光電傳感器模塊是基于TCRT5000紅外光電傳感器設計的一款紅外反射式光電開關。傳感器采用高發(fā)射功率紅外光電

43、二極管和高靈敏度光電晶體管組成,輸出信號經(jīng)施密特電路整形,穩(wěn)定可靠。</p><p>  +:接直流DC5V正極</p><p>  -:接直流DC5V負極</p><p>  S:信號輸出端,光敏三極管飽和,此時模塊的輸出端為高電平,指示二極管被點亮。</p><p><b>  應用場合: </b><

44、/p><p>  電度表脈沖數(shù)據(jù)采樣、 傳真機碎紙機紙張檢測、  障礙檢測 黑白線檢測 </p><p><b>  基本參數(shù): </b></p><p>  外形尺寸: 長 32mm~37 mm;寬 7.5mm;厚 5mm</p&g

45、t;<p>  工作電壓: DC 3V~5.5V,推薦工作電壓為5V </p><p>  檢測距離: 1mm~8mm適用,焦點距離為2.5mm</p><p>  傳感器的紅外發(fā)射二極管不斷發(fā)射紅外線,當發(fā)射出的紅外線沒有被反射回來或被反射回來但強度不夠大時,光敏三極管一直處于關斷狀態(tài),此時模塊的輸出端為低電平,指示二極管一直處于熄滅

46、狀態(tài);被檢測物體出現(xiàn)在檢測范圍內時,紅外線被反射回來且強度足夠大,光敏三極管飽和,此時模塊的輸出端為高電平,指示二極管被點亮。</p><p>  靈敏度可調的循跡電路。當比較器的正向輸入端電壓低于反向輸入端的電壓時輸出低電平,LED 亮,表示接收到反射光。</p><p>  3.4 LM339的介紹</p><p>  智能小車中運用于電路分析模塊&l

47、t;/p><p>  LM339引腳圖與功能簡介</p><p>  LM339集成塊內部裝有四個獨立的電壓比較器。LM339類似于增益不可調的運算放大器。每個比較器有兩個輸入端和一個輸出端。兩個輸入端一個稱為同相輸入端,用“+”表示,另一個稱為反相輸入端,用“-”表示。用作比較兩個電壓時,任意一個輸入端加一個固定電壓做參考電壓(也稱為門限電平,它可選擇LM339輸入共模范圍的任何一點),另一

48、端加一個待比較的信號電壓。當“+”端電壓高于“-”端時,輸出管截止,相當于輸出端開路。當“-”端電壓高于“+”端時,輸出管飽和,相當于輸出端接低電位。兩個輸入端電壓差別大于10mV就能確保輸出能從一種狀態(tài)可靠地轉換到另一種狀態(tài),因此,把LM339用在弱信號檢測等場合是比較理想的。LM339的輸出端相當于一只不接集電極電阻的晶體三極管,在使用時輸出端到正電源一般須接一只電阻(稱為上拉電阻,選3-15K)。選不同阻值的上拉電阻會影響輸出端高

49、電位的值。因為當輸出晶體三極管截止時,它的集電極電壓基本上取決于上拉電阻與負載的值。另外,各比較器的輸出端允許連接在一起使用。</p><p>  3.5 L7805CV和L7806CV的介紹</p><p><b>  L7805</b></p><p>  L7805是我們最常用到的穩(wěn)壓芯片了,他的使用方便,用很簡單的電路即可以輸入一個直流

50、穩(wěn)壓電源他的輸出電壓恰好為5v,剛好是51系列單片機運行所需的電壓,他有很多的系列如ka7805,ads7805,cw7805等,性能有微小的差別,用的最多的還是LM7805,下面我簡單的介紹一下他的3個引腳以及用它來構成的穩(wěn)壓電路的資料。  </p><p>  <L7805引腳圖>  </p><p>  其中1接整流器輸出的+電壓,2為公共地(也就是負

51、極),3就是我們需要的正5V輸出電壓了.</p><p><b>  L7806</b></p><p>  L7806為固定正電壓穩(wěn)壓電路,屬三端正電源穩(wěn)壓電路系列(3Terminals positive Voltage Regulator Series)。產品應用非常廣泛,涉及到各種穩(wěn)壓電源、充電器、數(shù)碼產品以及家電領域等。</p><p>

52、;  L7806芯片參數(shù):</p><p><b>  封裝</b></p><p><b>  四、硬件設計</b></p><p><b>  .</b></p><p>  4.1 主控芯片AT89C52單片機最小系統(tǒng)板電路</p><p>  本

53、智能小車采用的單片機最小系統(tǒng)板是自己制做的AT89C52單片機最小系統(tǒng)板,它具有體積小,質量輕,使用方便等優(yōu)點,能夠很好的放置在智能小車中。原理圖如下。 </p><p><b>  小系統(tǒng)PCB板</b></p><p>  4.2 電機驅動模塊電路</p><p>  電機驅動模塊采用專用驅動芯片L298N作為電機的驅動芯片。L298N是

54、一種具有高電壓大電流的全橋驅動芯片,它的響應頻率高,一片L298N可以分別控制兩個直流減速電機,而且還帶有控制使能端,用它作為驅動芯片,操作方便,穩(wěn)定,性能優(yōu)良。L298N的5、7引腳為一個電機的控制信號輸入端,10、12引腳為另一個電機的控制信號輸入端,2、3引腳為一個電機的控制信號輸出端,13、14引腳為另一個電機的控制信號輸出端,通過單片機對L298N的輸入端進行指令控制,就能實現(xiàn)直流減速電機的正轉和反轉,從而控制小車前進和后退。

55、</p><p>  電機驅動電路原理圖如下。</p><p><b>  驅動模塊PCB板</b></p><p>  4.3紅外對黑線檢測模塊電路</p><p>  由于有6個紅外傳感器排成一排均勻的安裝在小車底部,當光線照射到路面并反射,由于黑線和白紙的反射系數(shù)不同,根據(jù)接收到的反射光強度判斷是否眼黑線前進。在一

56、般情況下,當黑線位于中間的兩個紅外傳感器之間,不管小車偏向哪一邊,都能檢測出小車的偏移方向?;蛘弋斝≤嚻蜃筮厱r,右邊的傳感器檢測到黑線,輸出低電平給電機,否則,輸出高電平。</p><p>  紅外作循跡電路原理圖</p><p><b>  紅外作循跡PCB板</b></p><p>  采用紅外對管制作循跡電路,當檢測到黑線時,紅外接受管

57、導通,否則紅外對管截止,通過比較器LM339電壓比較,把電平狀態(tài)送給單片機進而單片機處理。原理圖如下。 </p><p><b>  電路分析原理圖</b></p><p>  紅外電路分析PCB板</p><p><b>  4.4穩(wěn)壓電源電路</b></p><p><b>  電機

58、驅動電路模塊:</b></p><p>  本題目要求小車的機械系統(tǒng)穩(wěn)定、靈活、簡單,可選用兩輪式,考慮到現(xiàn)在的汽車多采用兩輪式我選用兩輪式的設計,使設計更貼近生活需求。驅動部分:直流驅動電機,由L298N雙通道馬達驅動模塊驅動前后兩個馬達,其力矩完全可以達到模擬效果。 電池的安裝:將電池放置在車體的下面,降低車體重心,提高穩(wěn)定性,同時可增加驅動輪的抓地力,減小輪子空轉所引起的誤差。 電源模塊:采用2

59、支3500mA電池給電機供電,再用穩(wěn)壓芯片對電池電壓進行降壓給單片機。采用一套電源可減少小車的負重。</p><p>  電機動力電路應用說明:</p><p>  基本思路為使能端輸入使能信號,即接高電平,控制輸入端A端輸入PWM 信號,控制輸出端B輸入方向信號,在一個PWM周期內,電動機只承受單極性的電壓,電機的選擇方向由控制信號決定,電機的速度由PWM決定,PWM占空比為0%-100

60、%對應于電機轉速0-MAX。因此,當接收到由檢測模塊的信號時,單片機處理該信號,根據(jù)該信號產生對應的PWM 波,從而可以根據(jù)調節(jié)電機的轉速與方向。</p><p><b>  穩(wěn)壓電源電路圖</b></p><p><b>  穩(wěn)壓電源PCB板</b></p><p><b>  五、程序設計 </b>

61、;</p><p><b>  5.1主程序 </b></p><p>  #include<reg52.h></p><p>  #defineuchar unsigned char</p><p>  #defineuint unsigned int</p><p>  uch

62、ar pwm_left =0;//變量定義,與速度比較的變量</p><p>  uchar push_left =0;// 左電機占空比N/10 調速</p><p>  uchar pwm_right =0;//與速度比較的變量</p><p>  uchar push_right=0;// 右電機占空比N/10 調速</p><p

63、>  bit Right_moto_stop=1;</p><p>  bit Left_moto_stop =1;</p><p>  uint time=0;</p><p>  uint a=0,flag=0,flag1=0;</p><p>  sbit Left_1_led=P1^0; //四路尋跡模塊接口第一路

64、</p><p>  sbit Left_2_led=P1^1; //四路尋跡模塊接口第二路</p><p>  sbit Right_1_led=P1^2; //四路尋跡模塊接口第二路</p><p>  sbit Right_2_led=P1^3; //四路尋跡模塊接口第三路</p><p>  uin

65、t a,d,y,z,q,w,c;</p><p>  sbit out1 = P2^0;</p><p>  sbit out2 = P2^1;</p><p>  sbit out3 = P2^2;</p><p>  sbit out4 = P2^3;</p><p>  sbit ena = P1^6;<

66、/p><p>  sbit enb = P1^7;</p><p>  sbit inright = P2^4;</p><p>  sbit inleft = P2^5;</p><p>  delay(uint a);</p><p>  intturnleft(uint z) </p><

67、;p><b>  {</b></p><p><b>  ena=1;</b></p><p><b>  enb=1;</b></p><p><b>  out1=1;</b></p><p><b>  out2=0;</b&g

68、t;</p><p><b>  out3=1;</b></p><p><b>  out4=0;</b></p><p><b>  delay(z);</b></p><p><b>  return 0;</b></p><p&

69、gt;<b>  }</b></p><p>  int turnright(uint y)</p><p><b>  {</b></p><p><b>  ena=1;</b></p><p><b>  enb=1;</b></p>

70、<p><b>  out1=0;</b></p><p><b>  out2=1;</b></p><p><b>  out3=0;</b></p><p><b>  out4=1;</b></p><p><b>  dela

71、y(y);</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  int dengdai (uint d) </p><p><b>  {</b></p><p><

72、;b>  ena=0;</b></p><p><b>  enb=0;</b></p><p><b>  out1=0;</b></p><p><b>  out2=0;</b></p><p><b>  out3=0;</b>&

73、lt;/p><p><b>  out4=0; </b></p><p><b>  delay(d);</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  voi

74、d go(uint q)</p><p><b>  {</b></p><p><b>  ena=1;</b></p><p><b>  enb=1; </b></p><p><b>  out1=0;</b></p><p&g

75、t;<b>  out2=1;</b></p><p><b>  out3=1;</b></p><p><b>  out4=0;</b></p><p><b>  delay(q);</b></p><p><b>  }</b&g

76、t;</p><p>  intback(uint w) </p><p><b>  {</b></p><p><b>  ena=1;</b></p><p><b>  enb=1;</b></p><p><b>  out1=

77、1;</b></p><p><b>  out2=0;</b></p><p><b>  out3=0;</b></p><p><b>  out4=1;</b></p><p><b>  delay(w);</b></p>

78、<p><b>  return 0;</b></p><p><b>  }</b></p><p>  int backright(int c)</p><p><b>  {</b></p><p><b>  ena=0;</b>&l

79、t;/p><p><b>  enb=1;</b></p><p><b>  out1=0;</b></p><p><b>  out2=0;</b></p><p><b>  out3=0;</b></p><p><b&

80、gt;  out4=1;</b></p><p><b>  delay(c);</b></p><p>  return 0; </p><p><b>  }</b></p><p>  voidbizhang()</p><p><b>  {&

81、lt;/b></p><p>  if(inright==1&&inleft==1)</p><p><b>  {</b></p><p><b>  go(50);</b></p><p><b>  }</b></p><p>

82、;  if(inright==0)</p><p><b>  {</b></p><p>  turnright(50);</p><p><b>  }</b></p><p>  if(inleft==0)</p><p><b>  {</b>&

83、lt;/p><p>  turnleft(50);</p><p><b>  }</b></p><p>  if(inright==0&&inleft==0)</p><p><b>  {</b></p><p>  backright(2000);<

84、/p><p><b>  }</b></p><p><b>  }</b></p><p>  void xunji()</p><p><b>  {</b></p><p>  { if(Left_1_led==0&&Left_

85、2_led==0&&Right_1_led==0&&Right_2_led==0) //0</p><p><b>  {</b></p><p><b>  go(50);</b></p><p><b>  }</b></p><p> 

86、 else if(Left_1_led==0&&Left_2_led==0&&Right_1_led==0&&Right_2_led==1)//0001</p><p><b>  {</b></p><p>  turnright(20);</p><p><b>  delay(5

87、);</b></p><p><b>  }</b></p><p>  else if(Left_1_led==0&&Left_2_led==0&&Right_1_led==1&&Right_2_led==0)//0010</p><p><b>  {</b>

88、;</p><p>  turnright(20); //(9,6)</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p>  else if(Left_1_led==0&&Left_2_led==0&&

89、Right_1_led==1&&Right_2_led==1) //0011</p><p><b>  {</b></p><p>  turnright(20);</p><p><b>  delay(3);</b></p><p><b>  }&l

90、t;/b></p><p>  else if(Left_1_led==0&&Left_2_led==1&&Right_1_led==0&&Right_2_led==0) //0100</p><p><b>  {</b></p><p>  turnleft(30);<

91、/p><p><b>  delay(3);</b></p><p><b>  }</b></p><p>  else if(Left_1_led==0&&Left_2_led==1&&Right_1_led==0&&Right_2_led==1) //0101&

92、lt;/p><p>  {turnright(30);</p><p><b>  delay(2);</b></p><p><b>  }</b></p><p>  else if(Left_1_led==0&&Left_2_led==1&&Right_1_led

93、==1&&Right_2_led==1) //0111</p><p><b>  {</b></p><p>  turnleft(30);</p><p>  delay(1);</p><p><b>  }</b></p><p>  else

94、 if(Left_1_led==1&&Left_2_led==0&&Right_1_led==0&&Right_2_led==0) //1000</p><p><b>  {</b></p><p>  turnleft(30);</p><p><b>  delay(3);&l

95、t;/b></p><p><b>  }</b></p><p>  else if(Left_1_led==1&&Left_2_led==0&&Right_1_led==0&&Right_2_led==1) //1001</p><p><b>  {</b>&

96、lt;/p><p><b>  go(30);</b></p><p>  delay(3); //本來延時6</p><p><b>  }</b></p><p>  else if(Left_1_led==1&&Left_2_led==0&&Right_1_led

97、==1&&Right_2_led==0) //1010</p><p><b>  {</b></p><p>  turnleft(30);</p><p><b>  delay(3);</b></p><p><b>  }</b></p>

98、<p>  else if(Left_1_led==1&&Left_2_led==0&&Right_1_led==1&&Right_2_led==1) //1011</p><p><b>  {</b></p><p>  turnright(20);</p><p><

99、b>  delay(3);</b></p><p><b>  }</b></p><p>  else if(Left_1_led==1&&Left_2_led==1&&Right_1_led==0&&Right_2_led==0) //1100</p><p><b

100、>  {</b></p><p>  turnleft(20);</p><p><b>  delay(5);</b></p><p><b>  }</b></p><p>  else if(Left_1_led==0&&Left_2_led==0&&

101、amp;Right_1_led==0&&Right_2_led==1) // 1101</p><p>  {turnleft(20);</p><p><b>  delay(5);</b></p><p><b>  }</b></p><p>  else if(Left

102、_1_led==1&&Left_2_led==1&&Right_1_led==1&&Right_2_led==0) // 1110</p><p>  {turnleft(20);</p><p><b>  delay(5);</b></p><p><b>  } <

103、;/b></p><p>  //else if(Left_1_led==1&&Left_2_led==1&&Right_1_led==1&&Right_2_led==1) // 1111</p><p>  //{ //tiaosu();</p><p>  // go(20);&l

104、t;/p><p>  // delay(5);</p><p><b>  //}</b></p><p><b>  } </b></p><p><b>  } </b></p><p>  int delay(uint

105、a)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=a;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  retu

106、rn 0;</b></p><p><b>  }</b></p><p>  /************************************************************************/</p><p>  /* PWM調制電機轉速

107、 */</p><p>  /************************************************************************/</p><p>  /* 左電機調速 */</

108、p><p>  /*調節(jié)push_val_left的值改變電機轉速,占空比 */</p><p>  void pwm_out_left_moto(void)</p><p><b>  { </b></p><p>  if(Left_moto_stop)</p><p>&

109、lt;b>  {</b></p><p>  if(pwm_left<=push_left)</p><p><b>  ena=1; </b></p><p><b>  else </b></p><p><b>  ena=0;</b></p

110、><p>  if(pwm_left>=100)</p><p>  pwm_left=0;</p><p><b>  }</b></p><p>  else ena=0;</p><p><b>  }</b></p><p>  /****

111、**************************************************************/</p><p>  /* 右電機調速 */ </p><p>  void pwm_out_right_moto(void)</p><p

112、><b>  { </b></p><p>  if(Right_moto_stop)</p><p><b>  { </b></p><p>  if(pwm_right<=push_right)</p><p><b>  enb=1; </b></p&

113、gt;<p><b>  else </b></p><p><b>  enb=0;</b></p><p>  if(pwm_right>=100)</p><p>  pwm_right=0;</p><p><b>  }</b></p>

114、<p>  else enb=0;</p><p><b>  }</b></p><p>  /*******************************************************************/</p><p>  /*

115、 */</p><p>  /* 定時器初值化 */</p><p>  /*******************************************************************/</p&g

116、t;<p>  void init0(void)</p><p><b>  {</b></p><p>  TMOD=0X01;</p><p>  TH0= 0XF8; //1ms定時TH0= 0XF8; TL0= 0X30;</p><p>  TL0= 0X30;</p>

117、<p><b>  TR0= 1;</b></p><p><b>  ET0= 1;</b></p><p><b>  EA = 1;</b></p><p><b>  }</b></p><p>  void init1(void)&

118、lt;/p><p><b>  {</b></p><p>  TMOD=0x10; //設置定時器0工作模式1</p><p>  TH1=(65536-50000)/256; //定時器裝初值</p><p>  TL1=(65536-50000)%256;</p>

119、<p><b>  IT0=1;</b></p><p><b>  IT1=1;</b></p><p>  EX0=1;//開外部中斷0</p><p>  EX1=1;//開外部中斷1</p><p>  ET1=1;//開定時器0中斷</p>&l

120、t;p>  TR1=1;//啟動定時器0</p><p>  EA=1;//開總中斷</p><p><b>  }</b></p><p>  /******************************************************************/</p><p>  

121、///*TIMER0中斷服務子函數(shù)產生PWM信號*/</p><p>  void timer0()interrupt 1 using 2</p><p><b>  {</b></p><p>  TH0=0XF8; //1Ms定時</p><p><b>  TL0=0X30;</b>&

122、lt;/p><p><b>  time++;</b></p><p>  pwm_left++;</p><p>  pwm_right++;</p><p>  pwm_out_left_moto();</p><p>  pwm_out_right_moto();</p><

123、p><b>  }</b></p><p>  void run(int m,int n)</p><p><b>  { </b></p><p>  push_left =m; //PWM 調節(jié)參數(shù)1-10 1為最慢,10是最快 改這個值可以改變其速度</p><p>  

124、push_right =n; //PWM 調節(jié)參數(shù)1-10 1為最慢,10是最快 改這個值可以改變其速度</p><p>  out1=0; //左電機前進</p><p><b>  out2=1;</b></p><p><b>  out3=1;</b></p><p>  out

125、4=0; //右電機前進</p><p><b>  }</b></p><p>  void tiaosu()</p><p>  { while(flag==1)</p><p>  {run(30,30);</p><p>  delay(30);</p><p&

126、gt;<b>  xunji(); </b></p><p>  if(Left_1_led==1&&Left_2_led==1&&Right_1_led==1&&Right_2_led==1) { a=1;flag=0;}</p><p><b>  }</b></p>

127、<p>  while(a==1)</p><p>  {run(99,99);</p><p>  delay(30);</p><p><b>  xunji();</b></p><p>  if(Left_1_led==1&&Left_2_led==1&&Right_1

128、_led==1&&Right_2_led==1) { a=2;}</p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p>  { init0();</p><

溫馨提示

  • 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

提交評論