C語言實(shí)訓(xùn)報(bào)告--精選文檔_第1頁
C語言實(shí)訓(xùn)報(bào)告--精選文檔_第2頁
免費(fèi)預(yù)覽已結(jié)束,剩余10頁可下載查看

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

7、序,使其適用于右方紅外。3、探測(cè)和避開障礙物 有關(guān)IR檢測(cè)器的趣事是它們的輸出與觸須的輸出非常相像。沒有檢測(cè)到物體時(shí),輸出為高電平;檢測(cè)到物體時(shí),輸出為低電平。本任務(wù)是更改程序RoamingWithWhiskers.c,使它適用于IR檢測(cè)器。 進(jìn)行IR探測(cè)時(shí)要使用AT89S52的4個(gè)引腳: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這個(gè)字符串等。程序在編譯預(yù)處理時(shí),會(huì)自動(dòng)將后面程序中出現(xiàn)的所有LeftIR等都用P1_3代替。這種方法是用一個(gè)簡(jiǎn)單的名字代替一個(gè)長(zhǎng)的字符串,或者用一個(gè)有意義的名字代替一些無規(guī)則、無意義的字符串,方便程序閱讀、理解和修改。4、改變觸須程序使其適用于 IR 檢測(cè)和躲避 設(shè)計(jì)一個(gè)函數(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ā)射時(shí)間比胡須長(zhǎng)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、這個(gè)函數(shù)的形參是一個(gè)無符號(hào)的字符型變量,用到了修飾符unsigned。對(duì)于字符型變量而言,在第 2 講介紹過,如果沒有指定修飾符unsigned,它也可以作為一個(gè)有符號(hào)的8位整型變量,取值范圍為-128127。如果是無符號(hào)型,則取值范圍為 0255。無論是有符號(hào)還是無符號(hào),其數(shù)值作為編碼時(shí)代表的字符都是一樣的。 修改ifelse語句存儲(chǔ)IR檢測(cè)信息的變量。if(irDetectLeft=0)&&(irDetectRight=0) /兩邊同時(shí)接收到紅外線Left_Turn();Left_Turn();else if(irDetectLeft=0) /只有左邊接收到紅外線Right

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

13、數(shù)的定義5.運(yùn)動(dòng)控制程序四、代碼編寫#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) /兩邊同時(shí)

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論