欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
超聲波避障小車程序
[打印本頁]
作者:
liuda
時間:
2015-1-21 22:08
標題:
超聲波避障小車程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit motor0=P1^0;//電機定義P1^0到P1^3正轉,P1^4到P1^5反轉;
sbit motor1=P1^1;
sbit motor2=P1^2;
sbit motor3=P1^3;
sbit motor4=P1^4;
sbit motor5=P1^5;
sbit motor6=P1^6;
sbit motor7=P1^7;
sbit pwm=P2^7; //舵機PWM信號輸出
sbit trig=P3^1;//超聲波輸入口
sbit echo=P3^2;//超聲波輸出口
uchar flag,i,count,jd;
uchar b,low,k,high,d,e,f,h;//PWM調速高低電平定義
uint time,s;
/////////
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
///////
void delay1(uchar k)//延時
{
uchar i,j;
for(i=k;i>0;i--)
for(j=110;j>0;j--);
}
////////
void delay20us()
{
uint a;
for(a=0;a<100;a++);
}
/////////////
void init()
{
TMOD=0x11;
TH0=0;
TL0=0;
TH1=(65536-100)/256;//11.0592MHZ晶振,0.5ms
TL1=(65536-100)%256;
TR1=1; //定時起開始
EA=1;
//ET0=1;
//ET1=1;
}
void estern() interrupt 0
{
flag=1;
}
void calculate()//超聲波轉換
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
s=time/58;
//display();
}
////////
void qudong()//前后電機PWM調速處理
{
uchar i;
if(low!=0)
{
for(i=0;i<low;i++)
{
if(b==0)
{
motor0=0;
motor1=0;
motor2=0;
motor3=0;
delay1(5);
}
}
}
for(i=0;i<high;i++)
{
if(b==0)
{
motor0=1;
motor1=1;
motor2=1;
motor3=1;
delay1(5);
}
}
}
void ultrasonic()//超聲波處理
{
trig=1;
delay20us();
trig=0;
while(!echo);
TR0=1;
while(echo);
TR0=0;
calculate();
delay(20);
//display();
}
void bb()//距離判斷
{
uchar x=5;
if((s<10)&&(jd==12))
{ motor0=0;
motor1=0;
motor2=0;
motor3=0;
motor4=0;
motor5=0;
motor6=0;
motor7=0;
ET1=0;
ultrasonic();
while(x--)
{
d=s;
delay(2);
}
ET1=1;
jd=5;
delay(500);
ET0=0;
}
else
{
ET0=1;
}
if(jd==5)
{ ET1=0;
ultrasonic();
while(x--)
{
e=s;
delay(2);
}
ET1=1;
jd=19;
delay(500);
ET0=0;
}
else
ET0=1;
if(jd==19)
{ ET1=0;
ultrasonic();
while(x--)
{
f=s;
delay(2);
}
ET1=1;
jd=12;
delay(500);
ET0=0;
}
else
ET0=1;
}
void main()
{
uchar m=4;
s=20;
init();
echo=0;
jd=12;
count=0;
low=20;high=5;//設置速度
while(1)
{
if(e<f)
{
while(m--)
{
b=1;
motor6=0;
motor7=0;
motor0=0;
motor1=0;
motor4=1;
motor5=1;
motor2=1;
motor3=1;
delay(1);
}
e=0;
f=0;
}
else
{
b=0;
motor4=0;
motor5=0;
motor6=0;
motor7=0;
}
if(e>f)
{
while(m--)
{
b=1;
motor0=1;
motor1=1;
motor6=1;
motor7=1;
motor2=0;
motor3=0;
motor4=0;
motor5=0;
delay(1);
}
e=0;
f=0;
}
else
{
b=0;
motor4=0;
motor5=0;
motor6=0;
motor7=0;
}
bb();
//turn();
//kk();
qudong();
ultrasonic();
h=s;
}
}
//////////
void Time1_Int() interrupt 3 //舵機中斷程序
{
TH1=(65536-100)/256;//11.0592MHZ晶振,0.5ms
TL1=(65536-100)%256;
if(count<jd)//判斷0.5ms次數是否小于角度標識
pwm=1;//確實小于PWM輸出高電平
else
pwm=0; //大于則輸出低電平
count=(count+1);//0.5ms次數加1
count=count%40;// 次數使終保持40周期為20ms
}
復制代碼
作者:
狂人日記
時間:
2017-6-6 16:10
這是什么鬼
作者:
lza001
時間:
2018-1-16 11:16
看下能用否
作者:
依米花開
時間:
2018-8-25 21:02
為什么控制電機正轉要用四個,反轉只要兩個,還有6,7是干嘛用的呀,是使能端嗎
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1