版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
嵌入式期末考試
嵌入式作品期末設(shè)計
嵌入式作品簡介
作品名稱:多功能智能探測車
制作團隊:
王明睿(硬件電路搭建、整體設(shè)計)
王杰英(面向單片機編程、功能實現(xiàn))
鄭芳芳(資料整理、外圍設(shè)計)
制作時間:20天
指導(dǎo)老師:孫玉軒
創(chuàng)意來源:我們本身身為通信專業(yè)的學(xué)生,并且對電子電路,和對于硬件編程非常感興
趣,所以制作了該課題,主要進行硬件編程,硬件搭建,無線信號的綜合處理。并且有實
際運用價值。
作品意義:搭建硬件并對硬件進行二次開發(fā)編程,達到綜合運用的價值。作品運用環(huán)境
及主要功能:本作品主要應(yīng)用于救援、安防、勘探、偵查、追蹤、等人類不可到達的領(lǐng)
域。本小車可快速組建小區(qū)安防網(wǎng)絡(luò)。對小區(qū)安全進行綜合監(jiān)控。本小車可以對生命物
體、對綜合煙霧氣體探測,并回傳電腦,可以用于救援救災(zāi),本小車可以自動檢測障礙物
體,使小車行進更流暢。本小車可以跟蹤物體進行監(jiān)控,實現(xiàn)了無人自動追蹤。本小車可
以實現(xiàn)超聲波測距并回傳電腦,精度精確到毫米。本小車留有多個I/O口,可以快速擴展
其他模塊,實現(xiàn)更多功能。
下一部需完善:增加小車云臺,使攝像頭上下各45度角旋轉(zhuǎn),增加觀測的范圍。增加數(shù)
據(jù)傳輸?shù)乃俣群蜏?zhǔn)確性,使傳回的信息更豐富、迅速。可以增加3G模塊,使小車在任何
基站覆蓋范圍內(nèi)都能進行遠(yuǎn)程綜合控制利數(shù)據(jù)傳輸。
嵌
入
式
作
品
說
明
書
作品名稱:多功能智能探測車
院系專業(yè):信息工程學(xué)院移動通信專業(yè)
作者:王明睿、王杰英、鄭芳芳
目錄
-、概述---------------------------------P3~P4
二:制作流程-----------------------------P5~P6
三、硬件電路結(jié)構(gòu)--------------------P7~P15
四、硬件編程程序---------------------------P16~P37
五、小車控制方法、視頻存儲方法-------------P38
六、未來發(fā)展----------------------------P39
一、概述:
隨著移動通信業(yè)務(wù)的增加,無線通信已獲得非常廣泛的應(yīng)用。無線網(wǎng)絡(luò)除了提供語音服務(wù)
之外,還提供多媒體、高速數(shù)據(jù)和視頻圖像業(yè)務(wù)。
無線通信環(huán)境(無線信道、移動終端等)以及移動多媒體應(yīng)用業(yè)務(wù)的特點對視頻圖像的視
頻圖像編碼與傳輸技術(shù)—成為當(dāng)今信息科學(xué)與技術(shù)的前沿課題。
該課題圍繞硬件結(jié)構(gòu)搭建,與硬件編程實現(xiàn)為中心,對無線信號進行綜合處理。硬件編程
是重點,同時也是難點。整個作品的軟件使用面向單片機的C語言編寫有以下原因:
1、可以直接對硬件編程,良好的硬件管理,可移植性能良好。
2、用C編寫程序比匯編更符合人們的思考習(xí)慣,開發(fā)者可以擺脫與硬件無必要的接觸,
更專心的考慮功能和算法而不是考慮一些細(xì)節(jié)問題,這樣就減少了開發(fā)和調(diào)試的時間。
3、C語言具有良好的程序結(jié)構(gòu),適用于模塊化程序設(shè)計。
4、系統(tǒng)程序結(jié)構(gòu)清晰,易于調(diào)試和維護。不同的功能模塊,分別指定相應(yīng)的入口參數(shù)和
出口參數(shù),對于一些要重復(fù)調(diào)用的程序一般把其編成函數(shù),這樣可以減少程序代碼的長
度,又便于整個程序的管理。
本小車一共有3種工作方式:
方式一:對小車進行無線遙控,無線視頻傳輸,小車傳感器感應(yīng),并回傳傳感器信息到上
位機
方式二:利用超聲波模塊對物體進行跟蹤,實現(xiàn)無人操作跟蹤物體進行拍攝。
方式三:智能躲避障礙物,無需人為控制,小車自己躲避障礙物,并回傳視頻。
二、制作流程
1、作品構(gòu)思:
如何使用計算機設(shè)計制作出精彩的作品,這是最核心的問題之一,觀察很多計算機作品,
大多利用已有的計算機平臺進行軟件開發(fā),于是我們決定自己搭建自己的硬件電路結(jié)構(gòu),
對硬件進行編程操作,并建立與上位機的綜合通訊。
2、硬件電路搭建:
我們確立課題,以及準(zhǔn)備實現(xiàn)的功能,我們開始搭建硬件電路,硬件電路的卷個模塊的參
數(shù)資料都要非常了解,熟悉運用每個模塊。了解模塊的硬件結(jié)構(gòu),和實現(xiàn)原理,最后把每
個硬件都搭載在我們的核心平臺上(雙STC89C52)o
3、軟件編程:
我們搭載完硬件結(jié)構(gòu),又對硬件進行綜合的運用,第一步,調(diào)試電機控制。第二步,實現(xiàn)
有線對小車電機遙控。第三步、實現(xiàn)無線對小車的電機遙控。第四步,實現(xiàn)無線的視頻傳
輸。第五步,實現(xiàn)人體紅外模塊的獨立功能。第六步、實現(xiàn)人體紅外模塊與小車無線遙控
綜合功能(對小車遙控,和小車回傳)。第七步、分步實現(xiàn)、綜合煙霧信息回傳、酒精氣
體回傳、左右是否有障礙物回傳。第八步、實現(xiàn)超聲波跟蹤功能。(可對物體進行跟蹤、
追蹤拍攝)。第九步、實現(xiàn)超聲波測距,并回傳。
5、最終調(diào)試與銜接。
把每一個獨立的模塊,結(jié)合成一個獨立的窗口顯示。最后達
到綜合探測的目的。把相對獨立的功能結(jié)合。最后使多功能變成綜合功能。
三、硬件電路結(jié)構(gòu)
1、USB轉(zhuǎn)RS232結(jié)構(gòu)電路
2、測速
傳感器
電路
3、核心單片機通訊接口電路,傳感器接口電路,蜂鳴器電路。
4^藍牙串口電路,LCD顯水電路
5、U1\U2核心單片機接口及電路。
6、復(fù)位電路、時鐘電路。
7、直流電動機驅(qū)動電路及工作原理。
8、擴展接口電路
9、直流電機工作原理。
10、傳感器參數(shù)及其資料
O
四、面向硬件編程程序
1、小車無線控制與傳感器數(shù)據(jù)回傳。
(1)U1程序
^include<at89x51.h>
^defineleftP3_2
ftdefinerightP3_3
#definegoP34
#definebackP35
ttdefineleftdata0x11
#definerightdata0x22
#definegodata0x33
ttdefinebackdata0x44
ttdefinemanPl_0〃/定義串口〃
#defineyanPl_l
#definejiuPl_2//
#defineucharunsignedchar
#defineuintunsignedint
unsignedchara,b,flag,flagl=l;
charcodeMESSAGE口="有人:";〃查表顯示〃
charcodeQITI□二〃煙霧:〃;
charcodeALL□=〃酒精:";
voidsend(void);
voiddelay1ms(unsignedintx)〃延時子程序//
(
unsignedinti,j;
for(j=x;j>0;j—)
for(i=75;i>0;i—);
//
}
//初始化工作方式〃
voidInitCom(void)
I
SCON=0x50;〃REN=1允許串行接受狀態(tài),串口工作模式2TM0D|=0x21;〃定時器工作
方式2PC0N|=0x00;〃波特率提高一倍
THl=Oxfd;
TLl=0xfd;//9600波特率
TRI=1;〃開定時器計數(shù)SMO=O;
SM1=1;〃串行工作方式1REN=1;〃允許接收數(shù)據(jù)EA=1;〃開中斷總開關(guān)ES=1;〃允許串
TRO=1;
TFO=O;
ETO=1;
)
voidintTOOinterrupt1{
TH0=-2720/256;TL0=-2720%256;sendO;
}
voidsend(void){unsignedcharw,m,r;if(man==1)
{SBUF=MESSAGE[w];while(TI==0);TI=0;
w++;
b=a=0;
yan=l;
jiu=0;
I
if(yan==0)
{SBUF=QITIH;while(TI==0);TI=0;
m++;
b=a=0;
)
if(jiu-l)
{SBUF=ALL[rhwhile(TI==O);TI=O;
r++;
b=a=O;
}中斷〃發(fā)送傳感器數(shù)據(jù)子程序〃〃〃
)
main()
I
TH0=-2720/256;
TL0=-2720%256;
ETO=1;
InitComO;
while(1)
!
if(flag==l)
(
flag=O;
flagl=l;
if(b!=a)
(
left=l;
right=1;
go=l;
back=l;
)
switch(b)
(
caseleftdata:left=O;break;caserightdata:right=O;break;case
godata:go=0;break;
casebackdata:back=0;break;}
a=b;
flagl=0;
delay1ms(300);
}
else
(
left=l;
right=l;
go=l;
back=l;
I
//if(flagl==0)
//(sendO;
//)
}
}
voidserial()interrupt4〃中斷法{
ETO=0;
flag=l;
flagl=l;
b=SBUF;
RI=0;〃中斷標(biāo)志
ETO=1;
i
(2)U2程序。
〃下載到U2,然后用遙控器控制其方向
^include<at89x51.h>
#defineucharunsignedchar#defineuintunsignedint
voidmotorrz(void);〃右邊電動機正轉(zhuǎn)voidmotor1z(void);〃左邊電動機正轉(zhuǎn)
voidmotor_r_f(void);〃右邊電動機反轉(zhuǎn)void(void);〃左邊電動機反轉(zhuǎn)
voidback(uchar,uchar);〃小車后退voidgo(uchar,uchar);〃小車前進void
stop(void);〃小車停止
voidleft(void);〃小車左轉(zhuǎn)
voidright(void);〃小車右轉(zhuǎn)
sbitPWM1=P2c5;
sbitPWM2=P2-4;
sbitPWM3=P2^1;
sbitPWM4=P2*2;
sbitENI=P2P;
sbitEN2=P23;
sbitleft_k=PO2;
sbitback_k=P05;
sbitgok=PO4;
sbitright_k=P03;
sbitsound=P27;
uchardatat_0;
uchardatamotor_r;
uchardatamotor_l;
uchardataValue;
uchardatamid;
〃**延時子程序**〃/
voidini(void)
////TO初始化〃/
TM0D=0x01;〃T0工作在方式1
THO-Oxff;〃裝入TO初值
TL0=0xf6;
TRO=1;〃開TO中斷
ETO=1;//TO允許中斷
EA=1;
//////////////////////
t_0=0;
/////////////////////
P2=0;
sound=l;
}
voidgo(ucharleft_motor,ucharright_motor)〃直行{
Vaiue=right_motor;
motorrz();
Value=left_motor;
motor_l_z();
}
voidback(ucharleft_motor,ucharrightjnotor)〃后退(
Value=right_motor;
motor_r_f();
Value=leftmotor;
motor_l_f();
I
voidleft(void)〃左轉(zhuǎn)
!
Value=0x45;
motorsz();
Value=0x45;
motor_l_f();
voidright(void)〃右轉(zhuǎn)
Value=0x45;
motorrf();
Value=0x45;
motor_l_z();
I
voidmotor_r_z(void)〃右邊電動機正轉(zhuǎn){
ACC=0x64+Value;
motor_r=ACC;
EN1=1;
}
voidmotor」_z(void)〃左邊電動機正轉(zhuǎn){
ACC=0x64-Value;
motor_l=ACC;
EN2=1;
i
voidmotor_r_f(void)〃右邊電動機反轉(zhuǎn){
ACC=0x64-Value;
motorr=ACC;
EN1=1;
}
void(void)〃左邊電動機反轉(zhuǎn){
ACC=0x64+Value;
motor」二ACC;
EN2=1;
I
voidstop(void)
{
EN2=0;
EN1=O;
i
voidtimeO(void)interrupt1using2
!
TRO=O;
TH0=0xff;
TL0=0xf6;
++t_0;
ACC=t0;
CY=O;
ACC-=motor_r;
if(CY=l)
(
PWM1=1;
PWM2=0;
gotoPWM_2;
PWM1=O;
PWM2=1;
PWM2:
ACC=t_O;
CY=O;
ACC-=motor1;
if(CY==l)
I
PWM3=1;
PWM4=0;
gotoHIGHT;
!
PWM3=0;
PWM4=1;
HIGHT:
ACC=t_0;
if(ACC!=0xc9)
gotoEXIT;
ACC=0;
t0=ACC
EXIT:
TRO=1;
voidmain(void){
ini();
〃〃判斷左傳感器狀態(tài)〃〃while(1)
(
aa:
while(left_k)〃當(dāng)左按鍵按下時,left_k等于1.
gotobb;
Pl二Oxff;
P1=PO;
left。;〃向左轉(zhuǎn)
while(!left_k);〃如果left_k一直為一,小車便一直左轉(zhuǎn)stopO;
〃〃判斷右鍵是否按下,注釋請參考上一段〃〃
bb:
while(right_k)
gotodd;
Pl=0xff;
P1=PO;
rightO;
while(!right_k);
stopO;
〃〃判斷向前鍵是否按下〃〃
dd:
while(gok)
gotoee;
Pl二Oxff;
P1=PO;
go(0x64,0x64);
while(!go_k);
stop();
〃〃判斷后退鍵是否按下〃〃
ee:
while(back_k)
gotoaa;
Pl=Oxff;
P1-P0;
back(0x64,0x64);
while(!back_k);
stop();
i
}
2、超聲波跟蹤
(1)UI程序
〃請將此程序下載到U1,并且把兩機通訊開關(guān)的第1位拔至I」ON的狀態(tài)〃另外一條程序下
載到U2
#include<AT89x51.H>〃器件配置文件
ttinclude<intrins.h>
#defineRXP2_0
ttdefineTXP2_l
#defineLCMRWP26〃定義LCD引腳
#defineLCM_RSP2_5
#defineLCM_EP2_7
#defineLCM_DataPO
#defineKey_DataP3_l//定義Keyboard引腳
#defineKey_CLKP3_2
#defineBusy0x80〃用于檢測LCM狀態(tài)字中的Busy標(biāo)識
voidLCMInit(void);〃LCD初始化函數(shù)
voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedchar
DData);//LCD顯示一個字符函數(shù)
voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode
*DData);//LCD顯示一個字符串函數(shù)
voidDelay5Ms(void);〃延時5毫秒函數(shù)
voidDelay400Ms(void);〃延時400毫秒函數(shù)
voidDecode(unsignedcharScanCode);
voidWriteDataLCM(unsignedcharWDLCM);〃LCD1602寫數(shù)據(jù)函數(shù)
voidWriteCommandLCM(unsignedcharWCLCM,BuysC);〃LCD寫命令函數(shù)
//unsignedcharReadDataLCM(void);
unsignedcharReadStatusLCM(void);
unsignedcharcodeRange[]二〃二二RangeFinder=〃;〃LCD1602顯示格式
unsignedcharcodeASCII[13]="0123456789.71〃;
unsignedcharcodetable口二〃Distance:000.0cm〃;
unsignedcharcodetablel口二〃?。?!Outofrange”;
//staticunsignedcharDisNum=0;〃顯示用指針
unsignedinttime=0;
unsignedlongS=0;
bitflag=0;
unsignedchardisbuff[4]={0,0,0,0,};
〃寫數(shù)據(jù)
voidWriteDataLCM(unsignedcharWDLCM)
I
ReadStatusLCMO;〃檢測忙
LCM_Data=WDLCM;
LCM_RS=1;
LCM_RW=0;
LCM_E=0;〃若晶振速度太高可以在這后加小的延時
LCM_E=0;〃延時
LCM_E=1;
}
〃寫指令
voidWriteCommandLCM(unsignedcharWCLCM,BuysC)〃BuysC為0時忽略忙檢測{
if(BuysC)ReadStatusLCMO;〃根據(jù)需要檢測忙
LCM_Data=WCLCM;
LCM_RS二0;
LCMRW=0;
LCM_E=0;
LCM_E=0;
LCM_E=1;
}
〃讀狀態(tài)
unsignedcharReadStatusLCM(void)
!
LCM_Data=OxFF;
LCM_RS=0;
LCM_RW=1;
LCM_E=0;
LCM_E=0;
LCM_E=1;
while(LCMData&Busy);〃檢測忙信號
return(LCMData);
i
voidLCMInit(void)〃LCM初始化
!
LCMData=0;
WriteCommandLCM(0x38,0);〃三次顯示模式設(shè)置,不檢測忙信號
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,1);〃顯示模式設(shè)置,開始要求每次檢測忙信號
WriteCommandLCM(0x08,1);〃關(guān)閉顯示
WriteCommandLCM(0x01,1);〃顯示清屏
WriteCommandLCM(0x06,1);//顯示光標(biāo)移動設(shè)置
WriteCommandLCM(0x0c,1);//顯示開及光標(biāo)設(shè)置
)
〃按指定位置顯示一個字符
voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData)
Y&=0x1;
X&=OxF;〃限制X不能大于15,Y不能大于1
if(Y)X|=0x40;〃當(dāng)要顯示第二行時地址碼+0x40;
X|=0x80;〃算出指令碼
WriteCommandLCM(X,1);〃發(fā)命令字
WriteDataLCM(DData);〃發(fā)數(shù)據(jù)
!
〃按指定位置顯示一串字符
voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode
*DData)
I
unsignedcharListLength;
ListLength=0;
Y&=0x1;
X&二OxF;〃限制X不能大于15,Y不能大于1
while(DData[ListLength]>0x19)〃若到達字串尾則退出
(
if(X<=OxF)〃X坐標(biāo)應(yīng)小于OxF
{
Disp1ayOneChar(X,Y,DData[ListLength]);〃顯示單個字符ListLength++;
X++;
i
}
}
//5ms延時
voidDelay5Ms(void)
(
unsignedintTempCyc=5552;
while(TempCyc—);
i
//400ms延時
voidDelay400Ms(void)
(
unsignedcharTempCycA=5;
unsignedintTempCycB;
while(TempCycA—)
TempCycB=7269;
while(TempCycB—);
};
}
voidConut(void)
!
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*l.7)/10;//算出來是MM
if(S<=300)
P3_2=0;
else
P3_2=l;
if((S>=7000)|flag=l)〃超出測量范圍
!
P3_2=l;
flag=0;
DisplayListChar(0,1,tablel);
else
disbuff[0]=S%10;
disbuff[l]=S/10%10;
disbuff[2]=S/100%10;
disbuff[3]=S/1000;
DisplayListChar(0,1,table);
DisplayOneChar(9,1,ASCII[disbuff[3]]);
DisplayOneChar(10,1,ASCII[disbuff[2]]);
DisplayOneChar(11,1,ASCII[disbuff[1]]);
DisplayOneChar(12,1,ASCIlElO]);
DisplayOneChar(13,1,ASCII[disbuff[O]]);
}
)
voidzdO()interrupt1〃T0中斷用來計數(shù)器溢出,超過測距范圍(
flag=l;〃中斷溢出標(biāo)志
RX=O;
}
/********************************************************/voidStartModule0
〃啟動模塊{
TX=1;〃啟動一次模塊_nop_();
nop_();
nop_();
nop_();
_nop_();
_nop_();
nop_();
_nop_();
_nop_();
nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
nop_();
_nop_();
nop_();
_nop_();
_nop_();
TX=O;
)
TimerCount(void)
TRO=1;〃開啟計數(shù)
while(RX);〃當(dāng)RX為1計數(shù)并等待
TRO=O;〃關(guān)閉計數(shù)
Conut();〃計算
)
/*********************************************************/voidmain(void)
(
unsignedintvalA;
Delay400Ms();〃啟動等待,等LCM講入工作狀態(tài)
LCMInitO;〃LCM初始化
Delay5Ms();〃延時片刻
DisplayListChar(0,0,Range);DisplayListChar(0,1,table);//ReadDataLCMO;//
測試用句無意義TMODRxOl;〃設(shè)TO為方式1,GATE=1;EA=1;
THO-O;
TLO=O;
ETO=1;//允許TO中斷〃開啟總中斷while⑴
i
RX=1;
StartModuleO;
for(valA=7510;valA>0;valA--){
if(RX==l)
!
Timer_Count();
}
I
i
I
2、U2程序
#include<at89x51.h>
#defineucharunsignedchar
#defineuintunsignedint
voidmotor_r_z(void);〃右邊電動機正轉(zhuǎn)voidmotor」_z(void);〃左邊電動機正轉(zhuǎn)
voidmotor_r_f(void);〃右邊電動機反轉(zhuǎn)voidmotor」_f(void);〃左邊電動機反轉(zhuǎn)
voidback(uchar,uchar);〃小車后退voidgo(uchar,uchar);〃小車前進void
stop(void);〃小車停止
voidleft(void);〃小車左轉(zhuǎn)
voidright(void);〃小車右轉(zhuǎn)
sbitPWM1=P2-5;
sbitPWM2=P2N;
sbitPWM3=P2」;
sbitPWM4=P2-2;
sbitENI=P2P;
sbitEN2=P2c3;
sbitSignal=P02;sbitstartk=P32;sbitstopk=P33;
sbitsound=P27;
uchardatat_0;
uchardatamotorr;uchardatamotor1;uchardataValue;uchardatamid;
〃**延時子程序**〃/voiddelay1ms(uintn){
uinti,j;
for(j=n;j>0;j")for(i=20;i>0;i—);}
voidini(void)
(
////TO初始化〃/
TM0D=0x01;〃T0工作在方式1TH0=0xff;〃裝入TO初值TL0=0xf6;
TRO=1;〃開TO中斷ET0=l;//T0允許中斷EA=1;
//////////////////////t_0=0;
/////////////////////P2=0;
sound=0;
}
voidSound(void)
(
〃/蜂鳴器響〃/
sound=0;
delay_lms(30);
sound=0;
}
voidstart(void)
(
uchara;
aa:
while(startk);
for(a=0;a<50;a++)
delaylms(l);
while(start_k)
gotoaa;
I
Sound();
go(0x30,0x30);
}
voidgo(ucharleft_motor,ucharright_motor)〃直行{
Value=right_motor;
motor_r_z();
Value=leftmotor;
motor_l_z();
I
voidback(ucharleft_motor,ucharrightjnotor)〃后退{
Value=right_motor;
motor_r_f();
Value=leftmotor;
motorIf();
voidmotor_r_z(void)〃右邊電動機正轉(zhuǎn)
motor_r=0x64+Value;
EN1=1;
I
voidmotor_l_z(void)〃左邊電動機正轉(zhuǎn)
{
motor_l=0x64-Value;
EN2=1;
i
voidmotor_r_f(void)〃右邊電動機反轉(zhuǎn)
!
motor_r=0x64-Value;
EN1=1;
I
voidmotor_l_f(void)〃左邊電動機反轉(zhuǎn){
motorl=0x64+Value;
EN2=1;
}
voidstop(void)
(
EN2=0;
EN1=O;
voidtimeO(void)interrupt1using2{
TRO=O;
THORxff;
TL0=0xf6;
++t_0;
ACC=t_0;
CY=0;
ACC-=motor_r;
if(CY=l)
I
PWM1=1;
PWM2=0;
gotoPWM_2;
I
PWM1=O;
PWM2=1;
PWM_2:
ACC=t_0;
CY=0;
ACC-=motor1;
if(CY==l)
I
PWM3=1;
PWM4=0;
gotoHIGHT;
i
PWM3=0;
PWM4=1;
HIGHT:
ACC=t0;
if(ACC!=0xc9)
gotoEXIT;
ACC=0;
t_0=ACC;
EXIT:
TR0=l;
)
voidmain(void)
(
uchara;
ini();
start();
〃〃判斷U1P3.2是否輸出低電平〃〃〃如果是低電平,小車后退〃〃〃〃〃如果是高
電平,小車前進〃〃while(1)
!
aa:
while(Signal)
gotocc;
Pl_0=0;
P2_7=0;
while(!Signal)
back(0x35,0x35);go(0x35,0x35);
Plpl;
P2_7=l;
〃/判斷是否按下停止按鈕〃〃〃cc:while(stop_k)
gotoaa;
for(a=0;a<20;a++){
delay_lms(l);
while(stop_k)
gotocc;
}
StopO;
start();
}
}
3、紅外躲避障礙自動行走U2程序
#include<at89x51.h>
#defineucharunsignedchar#defineuintunsignedint
voidmotor_r_z(void);〃右邊電動機正轉(zhuǎn)voidmotor_l_z(void);〃左邊電動機正轉(zhuǎn)
voidmotor_r_f(void);〃右邊電動機反轉(zhuǎn)void(void);〃左邊電動機反轉(zhuǎn)
voidback(void);〃小車后退voidgo(uchar,uchar);〃小車前進voidstop(void);//
小車停止
voidleft(void);〃小車左轉(zhuǎn)
voidright(void);〃小車右轉(zhuǎn)
sbitPBI1=P2^5;
sbitPWM2二P2-4;
sbitPWM3=P2T;
sbitPWM4=P2-2;
sbitEN1=P2^O;
sbitEN2=P2^3;
sbitleft_k=P0*2;
sbitright_k=P05;
sbitstart_k=P33;
sbitstop_k=P32;
sbitsound=P27;
uchardatat_0;
uchardatamotor_r;
uchardatamotor_l;
uchardataValue;
uchardatamid;
//**延時子程序**〃/
voiddelay_lms(uintn)
uinti,j;
for(j=n;j>0;j-)
for(i=20;i>0;i-);
)
voidini(void)
(
////TO初始化〃/
TM0D=0x01;//TO工作在方式1
TH0=0xff;〃裝入TO初值
TL0=0xf6;
TRO=1;〃開TO中斷
ETO=1;//TO允許中斷
EA=1;
t_0=0;
P2=0;
sound=l;
}
voidSound(void)
(
〃/蜂鳴器響〃/
sound=0;
delay
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 武漢輕工大學(xué)《語言信息處理》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五版?zhèn)€人與企業(yè)間的商務(wù)汽車租賃及行程安排合同3篇
- 二零二五版旅游產(chǎn)業(yè)反擔(dān)保合同與旅游資產(chǎn)抵押協(xié)議3篇
- 二零二五年建筑玻璃采購合同標(biāo)準(zhǔn)2篇
- 二零二五年度離婚后按揭房產(chǎn)權(quán)屬分割及子女撫養(yǎng)費用協(xié)議3篇
- 個人借款擔(dān)保合同書2024年版版B版
- 二零二五年知識產(chǎn)權(quán)保護保密協(xié)議翻譯服務(wù)協(xié)議3篇
- 二零二五版企業(yè)內(nèi)部無息短期資金互助借款合同3篇
- 天津財經(jīng)大學(xué)《兒童美術(shù)創(chuàng)作與指導(dǎo)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024版股權(quán)合作的協(xié)議書范本
- GB/T 12914-2008紙和紙板抗張強度的測定
- GB/T 1185-2006光學(xué)零件表面疵病
- ps6000自動化系統(tǒng)用戶操作及問題處理培訓(xùn)
- 家庭教養(yǎng)方式問卷(含評分標(biāo)準(zhǔn))
- 城市軌道交通安全管理課件(完整版)
- 線纜包覆擠塑模設(shè)計和原理
- TSG ZF001-2006 安全閥安全技術(shù)監(jiān)察規(guī)程
- 部編版二年級語文下冊《蜘蛛開店》
- 鍋爐升降平臺管理
- 200m3╱h凈化水處理站設(shè)計方案
- 個體化健康教育記錄表格模板1
評論
0/150
提交評論