循迹小车代码Word格式.docx
- 文档编号:3453923
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:6
- 大小:13.84KB
循迹小车代码Word格式.docx
《循迹小车代码Word格式.docx》由会员分享,可在线阅读,更多相关《循迹小车代码Word格式.docx(6页珍藏版)》请在冰点文库上搜索。
程序设定
//为不同参数表示每次调用程序左转时间相同不可变,没有调节转弯时间的功能)
{
out1=1;
out2=0;
out3=0;
out4=1;
delay(a);
}
intyouzhuan(uinty)//控制小车做右转动作(参数y和a可以用来调节右转时间,本
//为不同参数表示每次调用程序右转时间相同不可变,没有调节转弯时间的功能)
out1=0;
out2=1;
out3=1;
out4=0;
inthoutui(uinth)//控制小车可以使小车倒退行驶(参数功能与转弯类似)
delay(20);
intdengdai(uintd)//使小车停止当前所有动作,停止时间可调。
delay(d);
voidqianjin(q)//使小车向前行驶,行驶时间可调
delay(q);
voidxunji()
P1=P1|0XF0;
delay(5);
if(in1==0){dengdai();
youzhuan(100);
while(in3==1);
elseif(in5==0){dengdai();
zuozhuan(100);
elseif(in2==0){dengdai();
youzhuan(30);
elseif(in4==0){dengdai();
zuozhuan(30);
elseif(in3==0){qianjin(20);
}
else{qianjin(20);
intdelay(uinta)//延时子函数
uintx,y;
for(x=a;
x>
0;
x--)
for(y=110;
y>
y--);
voidmain()
delay(2000);
while
(1)
xunji();
//D0-D7:
f,b,a,e,d,h,c,g共阴依次编码//
74LS04反相器驱动数码管
ucharcodetable[10]={0x5F,0x42,0x9E,0xD6,0xC3,0xD5,0xDD,0x46,0xDF,0xD7};
uchari=0;
//用于0-3数码管轮流显示
uintj=0;
//计时的次数
uinttime=0;
//计时
uintpwm=16;
//占空比
uintspeed;
//调制PWM波的当前的值
sbitR=P3^2;
//右边传感器
P3^2sbitL=P3^3;
//左边传感器
P3^3//电机驱动口定义
sbitENB=P1^0;
//前轮电机停止控制使能
sbitENA=P1^1;
//后轮控制调速控制端口
sbitIN1=P1^2;
//前轮
sbitIN2=P1^3;
//前轮
sbitIN3=P1^4;
//后轮
sbitIN4=P1^5;
//后轮
voidInit(){
TMOD=0x12;
//定时器0用方式2,定时器1用方式1
TH0=(256-200)/256;
//pwm
TL0=(256-200)/256;
TH1=0x0F8;
//定时2ms
TL1=0x30;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
voidtim0(void)interrupt1//产生
PWM
speed++;
if(speed<
=pwm)//pwm就相当于占100的比例
ENA=1;
elseif(speed<
100)
ENA=0;
else
speed=0;
voidtime1()interrupt3//定时2ms
i=(i+1)%4;
//0-3循环
j++;
if(i==0)//显示最低位数码管
P0=0x00;
//段选清零防止乱码
P0=table[time%10];
//送段码信号
if(i==1)
P0=table[time/10%10];
if(i==2)
P0=table[time/100%10];
if(i==3)
P0=table[time/1000%10];
P2=(0x10<
<
i);
//送位选信号
if(j==500)
time++;
//500次为1秒
j=0;
voidforward()//前进
IN2=1;
IN1=0;
voidback()//后退
IN2=0;
IN1=1;
voidleft()//左转
ENB=1;
//打开使能
IN3=1;
IN4=0;
voidright()//右转
IN3=0;
IN4=1;
voidstop()//停止
Init();
//定时器初始化
if(R==0&
&
L==1)//右传感器检测到黑线
right();
//右转
forward();
while(R==0&
L==1);
if(R==1&
L==0)//左传感器检测到黑线
left();
while(R==1&
L==0);
L==0)//都检测到黑线则停止
stop();
//定时器仍在工作,计数时间清空
else//都没有检测到黑线
ENB=0;
//关闭转向控制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小车 代码