智能尋跡機器人實驗指導書_第1頁
智能尋跡機器人實驗指導書_第2頁
智能尋跡機器人實驗指導書_第3頁
智能尋跡機器人實驗指導書_第4頁
智能尋跡機器人實驗指導書_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

簡介

單片機益智系列一一智能尋跡機器人是由益芯科技有限公司為科教方便

而研發(fā)設計。根據現代學校對嵌入式系統開發(fā)的需求。依據提高學生實際動手

操作能力和思考能力,以加強學生對現實生活中嵌入式系統的應用為參照。智

能尋跡機器人全新的設計模式,良好的電路設計,一體化的機電組合,智趣的

系統開發(fā),更是成為加強學生學習興趣的總動源。

智能尋跡機器人采用現在較為流行的8位單片機作為系統大腦。以8051

系列家族中的AT89s51/AT89s52為主芯片。40腳的DIP封裝使它擁有32個完

全K)(GPIO—通用輸入輸出)端口,通過對這些端口加以信號輸入電路,控制

電路,執(zhí)行電路共同完成尋跡機器人。P0.0,P0.1,P0.2,P0.3分別通過LG9110

電機驅動來驅動電機1和電機2。由電機的正轉與反轉來完成機器人的前進,

后退,左轉,右轉,遇障礙物繞行,避懸崖等基本動作。在機器人前進時如果

前方有障礙物,由紅外發(fā)射管發(fā)射的紅外信號被反射給紅外接收管,紅外接管

將此信號經過P3.7傳送入AT89S52中,主芯片通過內部的代碼進行機器人的

繞障礙物操作,同時主芯片將P3.7的信號狀態(tài)通過P2.5的LED指示燈顯示出

來。機器人行走時會通過P3.5與P3.6的紅外接收探頭來進行檢測。當走到懸

崖處時,P3.5或P3.6將收到一個電平信號,此電平信號將通過相應端口傳送

入主芯片中,主芯片通過內部代碼完成機器人的避懸崖操作。同時P3.5與P3.6

的信號狀態(tài)將通過P2.6/P2.7顯示出來。在機器人的左轉,右轉,后退的過程,

可以通過觀看以P2.0/P0.7為指示燈的運行狀態(tài)。P0.4為機器人的聲控檢測端

口,在運行為前進狀態(tài)時,可以能過聲控(如拍手聲)來控制它的運行與停止。

P0.6為機器人的聲音輸出端。在機器人遇到障礙物時。進行繞障礙物與避懸崖

時可以通過此端口控制蜂鳴器發(fā)出報警聲。當為白天或黑夜時可以通過P0.5

端口中的光敏電阻來進行判斷,以方便完成機器人夜間自動照明等功能。兩個

按鍵以查詢/中斷兩種不同的方式來展現按鍵操作。你可以按下S1鍵來進行機

器的停止。再按下S2鍵來進行機器人的運行。這個按鍵的信息分別被P3.2,

P3.4接收到。IR1為紅外遙控接收器,這就為機器人進行遠程遙控創(chuàng)造了可能。

這個紅外遙控接收頭接收到紅外信號時將信號經過P3.3送入到主芯片,主芯

片對其進行解密后以不同的方式對機器人進行控制。同時將用戶的按鍵信息通

過P2端口上LED數碼管顯示出來。P3.0、P3.1中COM端口的加入,讓你完

全可以用電腦對其進行控制。你可以通過對串口發(fā)送數據,數據會被顯示到

LED數碼管中,并讓機器人執(zhí)行相應的功能。電腦的串口軟件要求波特率為

9600o8位數據位,這時你就可以快樂的用電腦來對它進行你的完全控制了。

EXKJ-ZN02功能的組合多樣,使得學生可以充分發(fā)揮自主能力,制作出

不同的機器人。它為學校進行機器人競賽和畢業(yè)項目設計建立了實物平臺,是

學校教師授課變得更輕松有趣。同時也能改變學生學習模式和激發(fā)學習興趣。

更是作為驗證學生學習效果的有力工具。良好的電路板設計,讓學生制作變得

方便容易,其大大提高了學生的制作成功率。提高了學生對電子電路的興趣,

更是教學過程中不可或缺的教具。

實驗一程序狀態(tài)指示燈演示

一、實驗簡介:

本程序重點演示了一個最簡程序的基本結構,它從順序、判斷、循環(huán)的形式表現程序的基

本結構,此程序通過閃燈不斷的閃動,及閃燈閃動的快慢來表示程序不不同工作狀態(tài)。它也是

常數字設備中進行狀態(tài)表示的方法之一(例:網卡)。

二、實驗原理圖:

IC1____________

C730pFrvcc—

z<U^o口袞口袞口驍口*口解口疑口鑿8

dPO.OZ^DO

U9量

ffi?XTAL1PO.1ZAD1

J。18

iXTAL2P0.2AD2翦

C830pF二r

P0.3ZAD3W

P0.4/AD4

D1D2D3D4D5D6D7D8

C610uFP0.5/AD5?

TJ

P0.6/AD6四

R1510KP0.7/AD7

IRSTL

?EA/VPP

iPSENP1.1/T2EX,23

,ALE尹R區(qū)P1.2€CI

,C1

10uF幫P1.4CEX1

\P3.0代xDP1.5/CEX2?=一7

書?P3.1/TxD

?P3.27Knro

?P3.37NT1

14書P3.4/T0P2.0/A8

21勿

?P3.5/T1P2.1/A9

?P3.6WRP2.2A10右

7?P3.7?DP23Ali,2r

P2.4公1225:

P2.5/A13.?6,

P2.6A1427

VSSP2.7/A15:c

AT89S51/AT89S52/AT89C51/AT89C52

三、實現代碼:

//=====================================================================//

//實驗名稱:程序狀態(tài)指示燈演示程序//

//開發(fā)日期:2009/01/19//

//修改日期://

//程序作者:guojun郵箱:GuoGuoExkj@126.com//

//開發(fā)商:益芯科技有限公司一一技術部//

//程序備注:此程序僅為表現本機功能而演示用,當用作實際工程時請慎用.//

//特別聲明:此程序可作研究之用,但引用,轉載,使用請注明出處.//

〃=========================================================二==========〃

include<AT89x51.h>//包含頭文件

#defineLEDPl〃宏定義顯示端口號

voidDelay(unsignedintDelayTime)//定義可變延時函數

while(DelayTime-);〃延時函數進入倒計時

)

voidmain()〃程序主函數碼

unsignedintCountData=0;〃定義一個整形變量,用于閃動次數++

while(l)〃主程序循環(huán)體開始

{

if(CountData<30)〃判斷閃動次數是否位于0-30之間

(

Delay(60000);〃用60000作為基數開始延時函數

i

/

elseif(CountData<60)〃判斷閃動次數是否位于30-60之間

(

Delay(30000);〃用30000作為基數開始延時函數

)

elseif(CountData<90)〃判斷閃動次數是否位于60-90之間

(

Delay(10000);〃用10000作為基數開始延時函數

i

J

elseif(CountData<120)〃判斷閃動次數是否位于90-120之間

I

I

CountData=0;〃僅進行一次操作即可退出.

)

CountData=CountData+1;〃閃動次數基數++

LED=~LED;〃將顯示端口進行取反操作

)

四、運行效果:

程序運行效果為:開機后程序以慢速閃動,一段時間后速度開始加快,再等待時間,閃燈

的速度達到最快,之后一段時間后,閃動將回到開始狀態(tài)。

實驗二流水燈演示

實驗簡介:

本程序全面的表現了子程序的用法,它從對幾個子程序的操作,顯示不同的流燈技術,流

水燈的不同需要不同的表現的形式,而這里主要介紹了移位操作和內部數據存儲及讀入操作。

延時函數采用可重入標志,可進行函數的遞歸調用。

二、實驗原理圖:

IC1

C730pF

vcc40一

T1e嬲璘口就盥□髭跪

L19,IPO.O^ADO-39uu

ffoiXTAL1P0.1)AD1-38一

二XTAL2P0.2AD2-37

C830pFP0.3/AD3-

r36一

P0.4/AD4-

D1D2D3D4D5D6D7D8

35豆

C610IFP0.5AD5-宰、宰、宰、孝、孝、立、孝、孝、

P0.6AD6-

R1510KP0.7?AD7-33

9

RST32一

EA/VPPP1.0/T2-1

-

PSENP1.1/T2EX-2

ALEPROGP1.2£CI-3

±C1P1.3/CEX0W

-

10iFP1.4CEX1-/6'

P3.0JRXDP1.5/CEX2--'

P3.1/TxDP1.6QEX3T

8

P3.21NT0P1.7/DEX4--

P3.34NT1

P3.4/T0P2O/A8-

P3.5/T1P2.1ZA9-

P3.6WkP2.2ZM0-

P3.7市bP23Ali-

P24Al2-

P2.5)A13-

P2.6ZA14-

P2.7公15-

AT89S51/AT89S52/AT89C5VATB9C52

三、實現代碼:

〃===================================================================="/

//開發(fā)日期:2009/01/20//

//修改日期://

//程序作者:guojun郵箱:GuoGuoExkj@126.com//

//開發(fā)商:益芯科技有限公司一一技術部//

//程序備注:此程序僅為表現本機功能而演示用,當用作實際工程時請慎用.//

//特別聲明:此程序可作研究之用,但引用,轉載,使用請注明出處.//

//=====================================:============================//

#include<AT89x5l.h>//包含頭文件

#defineLedP1〃定義顯示端口號

unsignedintcodeBToM[]={0x7E,0x3C,0x18,0x00};〃定義由兩邊到中間顯示數據

unsignedintcodeMToB[]={0xE7,0xC3,0x81,0x00};//定義由中間到兩邊顯示數據

voidDelayOreentrant〃定義可重入的延時函數

{unsignedintDelayTime=10000;〃定義延時時間基數

while(DelayTime—);//程序開始延時開始

)

voidLeftToRight()//定義從左邊到右邊顯示函數

{unsignedcharTempCount=0;//定義顯示次數變量

Led=0xFE;//定義初步顯示數據

for(TempCount=0;TempCount<8;TempCount++)〃通過循環(huán)進行數據顯示

Delay();〃延時,用在每次移動數據開始處

Led=Led?l;〃由右邊向左邊移動數據

)

return;〃空返回語句,表明此子程序的結束

)

voidRightToLeft()〃定義從右邊到左邊顯示函數

{unsignedcharTempCount=0;〃定義顯示次數變量

Led=0x7F;〃定義初步顯示數據

for(TempCount=0;TempCount<8;TempCount++)〃通過循環(huán)進行數據顯示

(

Delay();〃延時,用在每次移動數據開始處

Led=Led?l;〃由左邊向右移動數據

}

return;〃空返語句,表明此子程序的結束.

)

voidBothToMid()〃定義由兩邊到中間顯示子程序

{unsignedcharTempCount=0;〃定義臨時次數變量

Led=0xFF;

for(TempCount=0;TempCount<5;TempCount++)〃通過循環(huán)依次進行次數運行

(

Delay();〃延時,在每次運行前.

Led=BToM[TempCount];〃讀入當次顯示數據.

)

return;〃空返回,表明此子程序的結束.

)

voidMidToBoth()〃定義由中間到兩邊子程序

{unsignedcharTempCount=0;〃定義臨時次數變量

Led=0xFF;

for(TempCount=0;TempCount<5;TempCount++)〃通過循環(huán)進行數據顯示

(

Delay();//延時,在每次數據顯示前.

Led=MToB[TempCount];〃讀入當次顯示數據.

)

return;〃空返回,表明此次子程序的結束.

)

voidmain()〃主程序入口處.

(

while(l)〃無窮循環(huán)開始.

{LeftToRight();〃從左到右進行顯示

RightToLeft();//從右到左進行顯示

BothToMid();〃由兩邊到中間進行顯示

MidToBothQ;〃由中間到兩邊進行顯示

四、運行效果:

程序運行效果為:開機后,指示燈向從左向右依次點亮,從右向左依次點亮,由兩邊向中

間依次點亮,由中間向兩邊依次點亮。

實驗三數碼管演示

一、實驗簡介:

本程序通過對端口的置數操作,展示了數碼管的應用技術,數碼管是將發(fā)光二極管通過一

定的形式封裝在一個數字的外殼中,可以通過不同的點亮方式來顯不同的數字符號。

二、實驗原理圖:

IC1

C730pFvcc

T1T

N

6L>9P0.0/AD039

938

?0XTAL1P0.1AD1

1837

二XTAL2P0.2AD2

C830pFr36

P0.3/AD3,35

P0.4hD4

34

C610IFP0.5AD5

-IZZI-T1P0.6/AD633

R1510KP0.7AD732-

RST1

EA/VPPP1.0/T22

PSENP1.1/T2EXj3

ALEPROGP1.2€CI4

T

P1.4QEX16

P3.0^xD7

P3.1/TxD8

P3.27NT0一

P3.3INT1

P3.4/T0P2.0/A821BP

P3.5/T1P2.1ZA922

P3.6WRP2.2/A1023

P3.7^DP2.3/A1124

P2.4汝1225

P2.5倒1326A

P2.6A14

2027A

VSSP2.7公15

28一

AT89S51/AT89S52/AT89C51/ATB9C52

三、實現代碼:

〃=============================================================//

//開發(fā)日期:2009/01/26//

//修改日期://

//程序作者:guojun郵箱:GuoGuoExkj@126.com//

//開發(fā)商:益芯科技有限公司一一技術部//

//程序備注:此程序僅為表現本機功能而演示用,當用作實際工程時請慎用.〃

//特別聲明:此程序可作研究之用,但引用,轉載,使用請注明出處.//

〃—===—====================================二〃

include<AT89x51.h>〃包含頭文件

typedefunsignedintuint;〃重命名整數類型關鍵字

typedefunsignedcharuchar;〃重命名字符類型關鍵字

ucharcodeLedShowData[]={0x9F,0x25,OxOD,0x99,0x49,〃定義固定存儲顯示字符

0x4l,0x1F,OxO1,0x19,0x03};〃123,4,5,6,7,8,9,0

voidDelayO〃定義延時函數

(

uintTempTime=20000;//定義延時時間變量

while(TempTime—);〃通過循環(huán)進行延時

)

voidmain()〃主程序開始main()

{ucharCountData=0;〃定義計數變量

while(l)〃主程序無限循環(huán)開始

P2=LedShowData[CountDataJ;〃P2端口讀入顯示數據

CountData++;〃計數變量++(加加)

if(CountData>=10)〃判斷是否超出計數范圍

CountData=0;〃重新置零

}

Delay();〃延時函數被調用

)

)

四、運行效果:

程序運行效果為:程序下載后,數碼管將從1-9依次顯示,最后將顯示數字0.

實驗四數碼管及跑馬燈演示

一、實驗簡介:

本程序主要是將數碼管及跑馬燈放在一起顯示,它主要說明了,如何將在單系中運行多個

看似并行運行的子系統.本程序在此將跑馬燈子程序放入到一個頭文件中,對于一個大的工程這

樣將有益于程序文件的管理。

二、實驗原理圖:

IC1

C730pF40

T1

r39一

z口驍口筮口/口騙口魏

LePO.O/ADO38一

e

。u.?XTAL1P0.1/AD1

37運

H.18

二IXTAL2P0.2ZAD2

C830pFP0.3ZAD3翁

P0.4ZAD4

r道D1D2D3D4D5D6D7D8

C610IFP0.5/AD5

-C=l-P0.6/AD6

32一

R1510KT1P0.7ZAD7

?RST

,EA/VPP

iPSENP1.1/T2EX

,ALE尹ROGP1.2€CI

±C1

-10iF受P1.4/CEX1

|P3.0^xD

<?P3.1/TxD-4

P3.27NT0

_SMT

P3.34NT1

<121

?P3.4/T0P2.0/A8

等?P3.5/T1

一?P3.6迎P2.2/A10

?P3.7^DP2.3/A11

P2.4ZA12.巨

P25公13

P2.6A14

VSSP2.7h15

AT89S51/AT89S52/AT89C51/AT89C52

三、實現代碼:

〃===============================================================/

//開發(fā)日期:2009/01/26//

//修改日期:〃

//程序作者:guojun郵箱:GuoGuoExkj@126.com//

//開發(fā)商:益芯科技有限公司——技術部〃

//程序備注:此程序僅為表現本機功能而演示用,當用作實際工程時請慎用。//

//特別聲明:此程序可作研究之用,但引用、轉載、使用請注明出處。//

〃::〃

include<AT89x51.h>〃包含端口定義頭文件

unsignedcharcodeLedShowData[]={0x9F,0x25,0x0D,0x99,0x49,〃定義數碼管顯示字符

0x41,0x1F,0x01,Ox19,0x03};//1,2,3,4,5,678,9,0

#defineLedPl〃定義顯示端口

unsignedcharCountData=0;〃定義數碼管計數器

unsignedintcodeBToM[]={0x7E,0x3C,0x18,0x00};〃定義由兩邊到中間顯示數據

unsignedintcodeMToB[]={0xE7,0xC3,0x81,0x00};//定義由中間到兩邊顯示數據

voidDelay()reentrant〃定義可重入延時函數

{unsignedintDelayTime=10000;〃定義延時時間變量

while(DelayTime—);〃通過循環(huán)進行延時

P2=LedShowData[CountData];〃置數碼管顯示數據到P2端口

CountData++;//數碼管地址計數器++(力口1)

if(CountData>=10)〃判斷計數器累計數值

CountData=0;//計數器清零

#include〈跑馬燈.h>//包含顯示方式頭文件

voidmain()//主程序入口

(

while(l)〃無窮循環(huán)開始.

{LeftToRight();〃從左到右進行顯示

RightToLeft();//從右到左進行顯示

BothToMid();〃由兩邊到中間進行顯示

MidToBoth();〃由中間到兩邊進行顯示

/〃〃〃〃/〃〃〃/〃〃〃/〃〃〃〃〃〃〃/〃〃〃〃/跑馬燈上〃/〃〃/〃〃〃〃〃〃/〃〃〃〃〃〃〃〃〃/〃〃〃〃〃〃/

voidLeftToRight()//定義從左邊到右邊顯示函數

{unsignedcharTempCount=0;〃定義顯示次數變量

Led=0xFE;〃定義初步顯示數據

for(TempCount=0;TempCount<8;TempCount4-+)〃通過循環(huán)進行數據顯示

(

Delay();//延時,用在每次移動數據開始處

Led=Led?l;〃由右邊向左邊移動數據

}

return;〃空返回語句,表明此子程序的結束.

)

voidRightToLeft()〃定義從右邊到左邊顯示函數

{unsignedcharTempCount=0;〃定義顯示次數變量

Led=0x7F;〃定義初步顯示數據

for(TempCount=0;TempCount<8;TempCount++)〃通過循環(huán)進行數據顯示

(

Delay();〃延時,用在每次移動數據開始處

Led=Led?l;〃由左邊向右移動數據

)

return;〃空返語句,表明此子程序的結束.

)

voidBothToMid()〃定義由兩邊到中間顯示子程序

{unsignedcharTempCount=0;//定義臨時次數變量

Led=0xFF;

for(TempCount=0;TempCount<5;TempCount++)〃通過循環(huán)依次進行次數運行

{

Delay();〃延時,在每次運行前.

Led=BToM[TempCount];〃讀入當次顯示數據.

)

return;〃空返回,表明此子程序的結束.

)

voidMidToBoth()〃定義由中間到兩邊子程序

{unsignedcharTempCount=0;//定義臨時次數變量

Led=OxFF;

for(TempCount=0;TempCount<5;TempCount4-+)〃通過循環(huán)進行數據顯示

(

Delay();〃延時,在每次數據顯示前.

Led=MToB[TempCount];//讀入當次顯示數據.

)

return;〃空返回,表明此次子程序的結束.

}

四、運行效果:

本程序運行效果:本程序運行后,可以看到跑馬燈按,從左到右,從右到左,從兩邊到中

間,從中間到兩邊將依次運行。并且在運行過程中,可以看到數碼管依次從1-9-0的順序顯示

數字符號。

實驗五按鍵中斷查詢演示

一、實驗簡介:

本程序通過兩個按鍵對數碼管進行操作,分別向用戶演示了查詢與中斷的操作方式,中斷中

應用了對按鍵進行查詢的方法來判斷按鍵的鍵值,查詢按鍵方法中則采用了鍵盤延遲的方法來消

除按鍵重復輸入。

二、實驗原理圖:

IC1

40

C730pFVCC

Z

6

SP0.0AD0

0

.XTAL1P0.1/AD1

二XTAL2P0.2AD2

C830pFP0.3AD3

T1P0.4/AD4

C610uFP0.5AD5

—P0.6AD6

R1510KP0.7AD7

RST

311EA/VPP

PSENP1.1/T2EX

ALEPROGP1.2€CI

P1.4QEX1\S3

P3.0/RxD

1「P3.1/TxD

P3.27HT0

U解P3.37NT1

P3.4/T0P2.0/A8—BP

P3.5/T1P2.1A9R82

P3.6WRP2.2A104-

】S1P3.7M)P2.3A11

P2.4A128

-

P2.5A13_9

P2.6A14也

20

VSSP2.7A15

AT89S51/AT89S52/AT89C51/AT89C52

三、實現代碼:

//://

//開發(fā)日期:2009/01/27編寫按鍵中斷與查詢的最初代碼〃

//修改日期:〃

//程序作者:guojun郵箱:GuoGuoExkj@126.com//

//開發(fā)商:益芯科技有限公司一一技術部〃

//程序備注:此程序僅為表現本機功能而演示用,當用作實際工程時請慎用.//

//特別聲明:此程序可作研究之用,但引用,轉載,使用請注明出處.〃

〃=============================================================//

#include<at89x5l.h>〃包含S51地址頭文件

typedefunsignedcharuchar;〃重定義無符號字符型

typedefunsignedintuint;〃重定義無符號整型

sbitSl=P3A2;〃定義S1變量

sbitS2=P3A4;〃定義S2變量

ucharDataCount=0;〃定義全局計數器

ucharcodeLedShowData[]={0x9F,0x25,OxOD,0x99,0x49,〃定義固定存儲顯示字符

0x41,OxIF,0x01,0x19,0x03};〃1,2,3,4,5,6,7,8,9,0

voidKeyDelayO〃定義鍵盤防抖子程序

{uintKeyTime=20000;〃定義防抖時間變量

while(KeyTime—);〃防抖延時開始

return;

)

voidSl_Break()inteiTupt0〃定義Sl(INTO)外部中斷0

while(0==Sl);〃判斷SI按鍵鍵值

DataCount—;

溫馨提示

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

評論

0/150

提交評論