欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
我有個小車 需要一個超聲波(有云臺) 壁障小車程序 麻煩各位哥哥姐姐咯
[打印本頁]
作者:
17395063853
時間:
2018-1-13 16:08
標題:
我有個小車 需要一個超聲波(有云臺) 壁障小車程序 麻煩各位哥哥姐姐咯
我的單片機用的是C51 小車電機占的IO口 為P2口 前左
電機
為P1-0(正傳)和P-1(反轉)前右電機P2-2(正轉)和P2-3(反轉) 后左電機P-4(正轉)和P2-5反轉 后右電機P2-6(正轉)和P2-7(反轉) 。 其中(電機 正反轉只需 其中一個為1 另一個為0);
其中 超聲波 輸出口為P1-0口 接收口為P3-2口
舵機輸出口為P1-1口;
先謝過 各位哥哥姐姐咯 ;需要一個能超聲波壁障的程序 其他程序都不用
作者:
技術求助
時間:
2018-1-13 23:44
我也是初學都 ,
作者:
17395063853
時間:
2018-1-14 17:23
/*****花了 幾天的時間寫出來了 對于我這初學者 還是蠻開心的*************/
#include<reg52.h>
#define car P2
#include <intrins.h> //nop頭文件
typedef unsigned int u16;
typedef unsigned char u8;
sbit car_0 = P2^0; //前左電機正轉
sbit car_1 = P2^1; //前左電機反轉
sbit car_2 = P2^2; //前右電機正轉
sbit car_3 = P2^3; //前右電機反轉
sbit car_4 = P2^4; //后左電機正轉
sbit car_5 = P2^5; //后左電機反轉
sbit car_6 = P2^6; /后右電機正轉
sbit car_7 = P2^7; // 后右電機反轉
sbit trig = P1^0; //超聲波輸出口
sbit echo = P3^2; //超聲波接收口
sbit dj = P1^1; //舵機控制口
u16 time,S,S1,S2,S3,S4,push_val_left,pwm_val_left,timer;
#define Left_moto_go {car_0=0,car_1=1,car_4=0,car_5=1;} //左邊兩個電機向前走#define Left_moto_back {car_0=1,car_1=0,car_4=1,car_5=0;} //左邊兩個電機向后走#define Left_moto_Stop {car_0=1,car_1=1,car_4=1,car_5=1;} //左邊兩個電機停止
#define Right_moto_go {car_2=0,car_3=1,car_6=0,car_7=1;} //右邊兩個電機向前走
#define Right_moto_back {car_2=1,car_3=0,car_6=1,car_7=0;} //右邊兩個電機向后走
#define Right_moto_Stop {car_2=1,car_3=1,car_6=1,car_7=1;} //右邊兩個電機停止
/************************************************************************/
//前進
void qianj(void) //前進
{
Left_moto_go ;
Right_moto_go ;
}
/************************************************************************/
void hout(void) //后退
{
Left_moto_back ;
Right_moto_back ; }
/************************************************************************/
//左轉
void zuoz(void)
{
Left_moto_back ;
Right_moto_go ;
// zxdzz ();
}
/************************************************************************/
//右轉
void youz(void)
{
Left_moto_go ;
Right_moto_back ;
// zxdyz ();
}
/************************************************************************/
//STOP
void tingz(void) //停止
{
Left_moto_Stop ;
Right_moto_Stop ;
// zxdgd ();
}
/************************************************************************/
//超聲波發射信號
void StartModule()
{
trig = 1
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
trig=0;
}
/***************************************************/
/**************************************************/
void Conut (void) //計算距離
{
while(!echo);
TR0=1;
while(echo);
TR0=0;
time=TH0*256+TL0
TH0=0;
TL0=0;
S=(time*1.7)/100
}
void COMM( void ) //方向判斷
{
push_val_left=5;
timer=0;
while(timer<=4000);
StartModule();
Conut();
S2=S;
push_val_left=23;
timer=0;
while(timer<=4000);
StartModule();
Conut();
S4=S;
push_val_left=13;
timer=0;
while(timer<=4000);
StartModule();
Conut();
S1=S;
if((S2<20)||(S4<20)
{
hout();
timer=0;
while(timer<=4000);
}
if(S2>S4)
{
youz();
timer=0;
while(timer<=4000);
}
else
{
zuoz();
timer=0;
while(timer<=4000);
}
}
void main (void)
{
push_val_left = 13;
car = 0xff;
TMOD = 0x11;
TH1 = 0x0FF;
TL1 = 0x0A4;
ET1 = 1;
TR1 = 1;
TH0 = 0;
TL0 = 0;
ET0 = 1;
EA = 1;
while(1)
{
if(timer>=1000)
{
timer = 0;
StartModule();
Conut();
if(S<45)
{
hout();
hout();
hout();
tingz();
COMM();
}
else
if(S>45)
qianj();
}
}
}
/***************************************************/
///定時器3
void pwmdins()interrupt 3
{
TH1 = 0x0FF;
TL1 = 0x0A4;
timer++;
pwm_val_left++;
if(pwm_val_left<=push_val_left)
dj = 1;
else
dj = 0;
if(pwm_val_left>=200)
pwm_val_left=0;
}
避障.zip
2018-1-14 17:21 上傳
點擊文件名下載附件
39.18 KB, 下載次數: 9
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1