C語言實訓(xùn)報告--精選文檔_第1頁
C語言實訓(xùn)報告--精選文檔_第2頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計實訓(xùn)報告題 目: 紅外避障機器人 院 (系): 信息工程系 專 業(yè): 通信工程 學(xué)生姓名: 韋嘉寶 學(xué) 號: 1551100424 指導(dǎo)教師: 朱震 周斌 王旬 全劉輝 2016 年 10月 8 日 目 錄摘要1設(shè)計要求2設(shè)計步驟3代碼編寫4心得體會5參考文獻(xiàn)·6 許多機器人使用雷達(dá)(RADAR)或者聲納(SONAR)來探測物體而不需要同物體接觸。本文的方法是使用紅外光來照射機器人前進(jìn)的路線,然后確定何時有光線從被探測目標(biāo)反射回來,通過檢測反射回來的紅外光就可以確定前方是否有物體。由于紅外遙控技術(shù)的發(fā)展,現(xiàn)在紅外線發(fā)射器和接收器已經(jīng)很普及并且價格很便宜。 隨著微電子技術(shù)

2、的不斷發(fā)展,微處理器芯片的集成程度越來越高,單片機已可以在一塊芯片上同時集成CPU、存儲器、定時器、并行和串行接口、看門狗、前置放大器、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器等多種電路,這就很容易將計算機技術(shù)與測量控制技術(shù)結(jié)合,組成智能化測量控制系統(tǒng)。這種技術(shù)促使機器人技術(shù)也有了突飛猛進(jìn)的發(fā)展,目前人們已經(jīng)完全可以設(shè)計并制造出具有某些特殊功能的簡易智能小車。 機器人使用紅外線二極管 LED 作為前燈,如圖 6-1 所示。 紅外線二極管發(fā)射紅外光線,如果機器人前面有障礙物,紅外線從物體反射回來,相當(dāng) 于機器人眼睛的紅外檢測(接收)器,檢測到反射回的紅外光線,并發(fā)出信號來表明檢測到從 物體反射回紅外線。機器人

3、的大腦單片機 AT89S52 基于這個傳感器的輸入控制伺服電機。 紅外線(IR)接收/檢測器有內(nèi)置的光濾波器,除了需要檢測的 980 nm 波長的紅外線外,它幾乎不允許其他光通過。紅外檢測器還有一個電子濾波器,它只允許大約 38.5 kHz 的電信 號通過。換句話說,檢測器只尋找每秒閃爍 38500 次的紅外光。這就防止了普通光源像太陽 光和室內(nèi)光對 IR 的干涉。太陽光是直流干涉(0Hz)源,而室內(nèi)光依賴于所在區(qū)域的主電源, 閃爍頻率接近 100 Hz 或 120 Hz。由于 120 Hz 在電子濾波器的 38.5 kHz 通帶頻率之外,它完 全被 IR 探測器忽略。本任務(wù)將搭建并測試紅外線

4、發(fā)射和檢測器對。本講需要用到的新部件如下:元件清單 (1)紅外檢測器,2 個。 (2)IR LED(帶套筒),2 個。 (3)470 電阻,2 個。(4)連接線,若干。二、設(shè)計要求(1)小車能夠完成前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等動作。(2)機器人能夠讀出傳感器電平變化,并作相應(yīng)的動作變化。(3)利用機器人所裝配的兩個探測器,探測和避開障礙物。三、設(shè)計步驟1.測試紅外發(fā)射探測器 下面要用 P1_3 發(fā)送持續(xù) 1ms 的 38.5kHz 的紅外光,如果紅外光被機器人路徑上的物體反射回來,紅外檢測器將給微控制器發(fā)送一個信號,讓它知道已經(jīng)檢測到反射回的紅外光。 讓每個IR LED探測器組工作的關(guān)鍵是發(fā)送1m

5、s頻率為38.5kHz的紅外信號,然后立刻將IR探測器的輸出存儲到一個變量中。下面是一個例子,它發(fā)送 38.5 kHz信號給連接到P1_3的IR發(fā)射器,然后用整型變量 irDetectLeft存儲連接到P1_2的IR探測器的輸出上。 for(counter=0;counter<38;counter+) P1_3=1; delay_nus(13); P1_3=0; delay_nus(13); irDetectLeft=P1_2state();上述代碼給 P1_3 輸出的信號高電平13s,低電平為13s,總周期為26s,即頻率約為38.5kHz??偣草敵?38個周期的信號,即持續(xù)時間約為1

6、ms(38×261000s)。當(dāng)沒有紅外信號返回時,探測器的輸出狀態(tài)為高電平。當(dāng)它探測到被物體反射的38.5kHz紅外信號時,它的輸出為低電平。因紅外信號發(fā)送的持續(xù)時間為1ms,因此IR探測器的輸出如果處于低電平,其持續(xù)狀態(tài)也不會超過1ms,因此發(fā)送完信號后必須立即將IR探測器的輸出存儲到變量中。這些存儲的值會顯示在調(diào)試終端或被機器人用來導(dǎo)航。 保持機器人與串口電纜的連接,因為需用調(diào)試終端來測試 IR 組。 放一個物體,比如手或一張紙,距離左側(cè) IR 組大約 23cm 處,調(diào)試終端會顯示“irDetecfLeft=0”;將物體移開時,它顯示“irDetectLeft=1”。再次修改程

7、序,使其適用于右方紅外。3、探測和避開障礙物 有關(guān)IR檢測器的趣事是它們的輸出與觸須的輸出非常相像。沒有檢測到物體時,輸出為高電平;檢測到物體時,輸出為低電平。本任務(wù)是更改程序RoamingWithWhiskers.c,使它適用于IR檢測器。 進(jìn)行IR探測時要使用AT89S52的4個引腳:P1_2、P1_3、P3_5和P3_6。#define LeftIR P1_3 /左邊紅外接收連接到 P1_3 #define RightIR P1_2 /右邊紅外接收連接到 P1_2 #define LeftLaunch P3_6 /左邊紅外發(fā)射連接到 P3_6 #define RightLaunch P3

8、_5 /右邊紅外發(fā)射連接到 P3_5這里用到了宏定義命令:#define,它的作用是在后面的程序文件中可以用LeftIR等來代替P1_3這個字符串等。程序在編譯預(yù)處理時,會自動將后面程序中出現(xiàn)的所有LeftIR等都用P1_3代替。這種方法是用一個簡單的名字代替一個長的字符串,或者用一個有意義的名字代替一些無規(guī)則、無意義的字符串,方便程序閱讀、理解和修改。4、改變觸須程序使其適用于 IR 檢測和躲避 設(shè)計一個函數(shù) void IRLaunch(unsigned char IR)來進(jìn)行紅外線發(fā)射。 void IRLaunch(unsigned char IR)int counter;if(IR=&#

9、39;L') /左邊發(fā)射for(counter=0;counter<38;counter+) /發(fā)射時間比胡須長LeftLaunch=1;nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();LeftLaunch=0;_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();i

10、f(IR='R') /右邊發(fā)射for(counter=0;counter<38;counter+)RightLaunch=1;_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();RightLaunch=0;_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

11、這個函數(shù)的形參是一個無符號的字符型變量,用到了修飾符unsigned。對于字符型變量而言,在第 2 講介紹過,如果沒有指定修飾符unsigned,它也可以作為一個有符號的8位整型變量,取值范圍為-128127。如果是無符號型,則取值范圍為 0255。無論是有符號還是無符號,其數(shù)值作為編碼時代表的字符都是一樣的。 修改ifelse語句存儲IR檢測信息的變量。if(irDetectLeft=0)&&(irDetectRight=0) /兩邊同時接收到紅外線Left_Turn();Left_Turn();else if(irDetectLeft=0) /只有左邊接收到紅外線Right

12、_Turn();else if(irDetectRight=0) /只有右邊接收到紅外線Left_Turn();elseForward();2.本程序由如下模塊組成:(1)小車左右兩個輪子的控制模塊,完成小車不同狀態(tài)下的行進(jìn)方式。(2)小車的后退控制程序模塊,通過接受到指定信號完成小車的后退指令。(3)小車的接收器接收信號模塊,完成不同信號狀態(tài)的傳遞和選擇狀態(tài)開關(guān)。3.完成運動流程(1)當(dāng)左接收器檢測到信號右接收器沒有檢測到信號時小車向左轉(zhuǎn)彎 (2)當(dāng)右接收器檢測到信號左接收器沒有檢測到信號時小車向右轉(zhuǎn)彎(3)當(dāng)左右探頭都檢測到信號時小車后退。(4)當(dāng)小車左右接收器均未檢測到信號時直行。4.函

13、數(shù)的定義5.運動控制程序四、代碼編寫#include<BoeBot.h>#include <AT89X52.h>void Forward(void) /向前行走子程序P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);void Left_Turn(void) /左轉(zhuǎn)子程序int i;for( i=1;i<=16;i+)P1_1=1;delay_nus(1500);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);voi

14、d Right_Turn(void) /右轉(zhuǎn)子程序int i;for( i=1;i<=26;i+)P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);void Backward(void) /向后行走子程序int i;for( i=1;i<=30;i+)P1_1=1;delay_nus(1500);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);void main()if(P1_2=0)&&(P1_3=0) /兩邊同時

15、接收到紅外線Backward();Right_Turn();Right_Turn();Right_Turn();else if(P1_3=0) /只有左邊接收到紅外線Backward();Right_Turn();else if(P1_2=0) /只有右邊接收到紅外線Backward();Left_Turn();elseForward();五、心得體會(1)在對模塊化機器人的組裝調(diào)整中,我們熟悉了各種結(jié)構(gòu)件的使用技巧,為設(shè)計更復(fù)雜的構(gòu)型打好了基礎(chǔ);使我了解了機器人小車執(zhí)行各種功能的原理和利用的器件,了解了小車最基本的前進(jìn)后退轉(zhuǎn)彎的工作原理,了解了小車如何尋線行駛,了解小車如何避障和尋找目標(biāo)。(2)讓我親身感受到傳感器在機器人工作中的運用,可以說,機器人每做一個任務(wù)都離不開傳感器,從避障,找目標(biāo)物等等任務(wù)中完全體現(xiàn)出來。(3)熟悉了用電腦c語言的應(yīng)用及其部分傳感器的使用,此次實驗是培養(yǎng)我們綜合運用所學(xué)知識發(fā)現(xiàn)提出分析和解決實際問題鍛煉實踐能力的重要環(huán)節(jié)隨著科學(xué)技術(shù)發(fā)展的日新日異,現(xiàn)在機器人的應(yīng)用在我們生活中日益增加,使我了解了一些關(guān)于機器人的知

溫馨提示

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

評論

0/150

提交評論