#include<reg52.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
#define L_M 1
#define R_M 2
uchar temp2,temp1,t,m1,m2,redline
sbit tr=P2^4//超声波
sbit ec=P2^5//
sbit en=P2^7//液晶的EN
sbit rs=P2^6//液晶RS选择端
//液晶数据口 P0口
sbit Rin_1=P2^0//寻迹管脚输入
sbit Rin_2=P2^1
sbit Lin_2=P2^2
sbit Lin_1=P2^3
sbit L_EN=P1^0//左侧电机使能弊派
sbit L_1=P1^1//左侧电机控制 1
sbit L_2=P1^2//左侧电机控制 2
sbit R_1=P1^3//右侧电机控制 1
sbit R_2=P1^4//右侧电机控晌滚制 2
sbit R_EN=P1^5//右侧电机使能
void delay(uint z) //延时程序1
{
uint x,y
for(x=zx>0x--)
for(y=110y>0y--)
}
void delay1s(uchar t) //1s延时租谨贺函数
{
uchar a,h,i,j,k
for(a=ta>0a--)
{
for(h=5h>0h--)
for(i=4i>0i--)
for(j=116j>0j--)
for(k=214k>0k--)
}
}
void v_cotrol(uchar number,uchar speed)
{
if(speed<100)
{
if(number==1)
m1=abs(speed)
if(number==2)
m2=abs(speed)
}
}
void turnleft()
{
L_1=1// left fan zhuan //
L_2=0
R_1=1// right fanzhuan
R_2=0
}
void turnright()
{
L_1=0// left zheng zhuan
L_2=1
R_1=0// right fanzhuan
R_2=1
}
void gostright()
{
L_1=0// left zheng zhuan
L_2=1
R_1=1// right zhengzhuan
R_2=0
}
void goback()
{
L_1=1// left zheng zhuan
L_2=0
R_1=0// right zhengzhuan
R_2=1
}
void stop()
{
L_1=1// stop
L_2=1
R_1=1// stop
R_2=1
}
void timer0_int()
{
TMOD=0X01
TH0=-100/256
TL0=-100%256
EA=1
ET0=1
TR0=1
}
state_int()
{
Rin_1=1
Rin_1=1
Lin_1=1
Lin_1=1
t=0
m1=50
m2=50
stop()
}
void main()
{
timer0_int()
state_int()
while(1)
{
//避障程序
if((Lin_1==1)&&(Lin_2==1)&&(Rin_1==1)&&(Rin_2==1))
gostright()
if((Lin_1==1)&&(Lin_2==1)&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))
turnleft()
if((Rin_1==1)&&(Rin_2==1)&&(((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0))))
turnright()
if((((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0)))&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))
goback()
if((Lin_1==1)&&(Lin_2==1)&&(Rin_1==1)&&(Rin_2==1))
gostright()
if((Lin_1==1)&&(Lin_2==1)&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))
turnleft()
if((Rin_1==1)&&(Rin_2==1)&&(((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0))))
turnright()
if((((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0)))&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))
goback()
}
while(1)
}
timer0() interrupt 1
{
TH0=-100/256
TL0=-100%256
if(t==0)
{
temp1=m1
temp2=m2
}
if(t==temp1)
L_EN=0
if(t==temp2)
R_EN=0
t++
if(t==50)
{
t=0
L_EN=1
R_EN=1
}
}
程序需要结合硬件,不同硬件程序也不一样,就算硬件一样,连线方法不同程序也不一样。程序所实现的功能也不同,所以碰颂纳就算有程序,移植樱激性也比较差。下笑没面是我的小车黑白循迹的程序,包含前行转弯等,希望能帮到你#include <reg52.h>
sbit z0 = P1^0
sbit z1 = P1^1
sbit y0 = P1^2
sbit y1 = P1^3
sbit x = P1^4
sbit m = P3^2
sbit zm0 = P2^0
sbit zm1 = P2^1
sbit ym0 = P2^2
sbit ym1 = P2^3
unsigned int line=0,j=0
void turnright()
{
ym0=1
ym1=1
zm0=1
zm1=0
}
void turnleft()
{
ym0=0
ym1=1
zm0=1
zm1=1
}
void zuozq()
{
ym0=0
ym1=1
zm0=0
zm1=1
}
void youzq()
{
ym0=1
ym1=0
zm0=1
zm1=0
}
void qianxing()
{
ym0=0
ym1=1
zm0=1
zm1=0
}
void stop()
{
ym0=1
ym1=1
zm0=1
zm1=1
}
void xunji()
{
if(z1==1&&y0==1) //检测到黑线为低电位
qianxing()
if(z1==0&&y0==0)
qianxing()
if(z1==0&&y0==1)
turnleft()
if( y0==0&&z1==1)
turnright()
//if(z0==0&&y1==1)
// turnleft()
//if( y0==0&&z0==1)
// turnright()
}
void yanshi(unsigned int i)
{
unsigned int j
while(--i)
for(j=0j<12000j++)
}
void wzhongduan()
{
IT0=1
EA=1
EX0=1
}
void youzhuan90()
{
youzq()
yanshi(3)
while(1)
{
youzq()
if(x==0)
break
}
}
void case2()
{
youzq()
yanshi(5)
while(1)
{
if(m==0)
{
stop()
yanshi(10)
//
break
}
}
zuozq()
yanshi(5)
while(1)
{
if(x==0)
{
qianxing()
yanshi(5)
break
}
}
}
void zhuanshen()
{
EA=0
while(1)
{
youzq()
yanshi(2)
if(m==0)
{
yanshi(2)
j++
}
if(j>=4)
if(x==0)
{
xunji()
yanshi(3)
break
}
}
EA=1
}
void main()
{
wzhongduan()
while(1)
{
switch(line)
{
case 2:EA=0case2()EA=1break
case 4:EA=0case2()EA=1break
case 7: EA=0youzhuan90()youzhuan90()youzhuan90()youzhuan90()EA=1break
case 10:EA=0case2()EA=1break
case 12:EA=0case2()EA=1break
case 15: EA=0youzhuan90()youzhuan90()youzhuan90()youzhuan90()EA=1break
default :xunji()
}
}
}
void w0 () interrupt 0
{
line++
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)