智能小车仿真程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#define uchar unsigned char

#define uint unsigned int

// * * * * * * * * * * * * * * * * * * * * * 第一部分S t a r t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

sbit IN1=P1^0; // 以下是电机驱动芯片L 2 9 8 管脚位声明

sbit PWM1=P1^1;

sbit IN2=P1^2;

sbit IN3=P1^3;

sbit PWM2=P1^4;

sbit IN4=P1^5;

sbit RPR3=P1^6; // 此处是传感器R P R 2 2 0 管脚位声明

sbit RPR4=P1^7;

sbit RPR1=P2^0;

sbit RPR2=P2^1;

sbit bz1=P0^0;//避障1

sbit bz2=P0^1; //避障2

sbit A=P3^2; //默认为遥控避障工作模式,按下A键后小车变换为循迹避障模式

sbit B=P0^3;// 按下B键不放,小车前进sbit C=P0^4;// 按下C键不放,小车左转弯sbit D=P0^5;// 按下D键不放,小车右转弯sbit led=P0^7;

int n=1;

// * * * * * * * * * * * * * * * * * * * * * 第一部分 E n d * * * * * * * * * * * * * * * * * * * * * * * * * *

// * * * * * * * * * * * * * * * * * * * * * 第二部分子函数定义S t a r t * * * * * * * * * * * *

/*********************************延时函数************************************* **/

void timer(unsigned int t) //中断计时

{

unsigned int i;

for(i=0;i

{

TMOD=0X10;

TH0=0x3C;

TL0=0xB0;

TR1=1;

while(!TF1);

TR1=0;

}

}

int0()interrupt 0

{

n=n+1; //默认遥控功能

if(n%2==0)

{

led=0;

}

else led=1;

EA=1;

EX0=1;

IT0=1;

}

main()

{

EA=1;

EX0=1;

IT0=1;

while(1)

{

while(n%2==1)

{

if(A==1) break;

if(A==0&&B==1&&bz1==1)

{

IN1=0,IN2=1,IN3=0,IN4=1;

PWM1=1;

PWM2=1;

timer(100); //5S

PWM1=0;

PWM2=0;

timer(100); //5S

}

if(A==0&&C==1&&bz1==1)

{

IN1=0,IN2=1,IN3=0,IN4=1;

PWM1=0;

PWM2=1;

timer(50);

PWM1=0;

PWM2=1;

timer(50);

PWM1=0;

PWM2=0;

timer(10);

}

if(A==0&&D==1&&bz1==1)

{

IN1=0,IN2=1,IN3=0,IN4=1;

PWM1=1;

PWM2=0;

timer(50);

PWM1=1;

PWM2=0;

timer(50);

PWM1=0;

PWM2=0;

timer(10);

}

if(A==0&&bz1==0)

{

unsigned int k=0;

IN1=0,IN2=1,IN3=1,IN4=0;

for(k=0;k<=30;k++)

{

PWM1=1;

PWM2=1;

timer(25);

PWM1=0;

PWM2=0;

timer(25);

}

}

}

while(n%2==0)

{

if(A==1) break;

if(A==0&&bz1==1&&((RPR4==0&&RPR3= =0&&RPR1==0&&RPR2==0)

|(RPR1==0&&RPR2==1&&RPR3==1&&RP R4==0)))// 未检测到黑线,小车继续前进

{

IN1=0,IN2=1,IN3=0,IN4=1;

PWM1=1;

PWM2=1;

timer(100);

PWM1=0;

PWM2=0;

timer(400);

}

相关文档
最新文档