基于超声波测距的智能小车设计 - 图文 联系客服

发布时间 : 星期六 文章基于超声波测距的智能小车设计 - 图文更新完毕开始阅读

附录C:硬件实物图

附录C 硬件实物图

31

附录D:部分源程序

D1:控制源程序 #include #include #include

//////////////////////////////////////////////// #define TURE 1 #define FALSE 0

//////////////////////////////////////////////// sbit IR=P3^2;//红外接口标志

//////////////////////////////////////////// unsigned char irtime;//红外用全局变量 bit irpro_ok,irok; unsigned char IRcord[4]; unsigned char irdata[33];

////////////////////////////////////////////// void Delay(unsigned char mS); void Ir_work(void); void Ircordpro(void);

////////////////////////////////////////////////////////////////// void tim0_isr (void) interrupt 1 using 1//定时器0中断服务函数 {

irtime++; }

////////////////////////////////////////////////////////////////////// void ex0_isr (void) interrupt 0 using 0//外部中断0服务函数 {

static unsigned char i; static bit startflag;

32

if(startflag) {

if(irtime<42&&irtime>=33)//引导码 TC9012的头码 i=0;

irdata[i]=irtime;//一次存储32位电平宽度

irtime=0; i++; if(i==33)

{ irok=1; i=0; }

} }

//////////////////////////////////////////////////////////////////// void TIM0init(void)//定时器0初始化 {

TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值 TH0=0x00; TL0=0x00; ET0=1;//开中断 TR0=1; }

/////////////////////////////////////////////////////////////////// void EX0init(void) {

IT0 = 1;

EX0 = 1; // EX0 中断

专注才能更专业——佳顺伟业 33

else

{irtime=0;startflag=1;}

佳顺伟业科技,专业、专注AGV无人搬运设备研发制造

EA = 1; }

/****************************************************************/ /******************************************************************/ void Ir_work(void)//红外键值散转程序 {

switch(IRcord[2])//判断第三个数码值

{

case 0:P0=0xD8;break;//小车前进 case 1:P0=0xB4;break;//小车后退 case 2:P0=0x98;break;//小车前左转 case 3:P0=0xD0;break;//小车前右转 case 4:P0=0x94;break;//小车后左转 case 5:P0=0xB0;break;//小车后右转 case 6:P0=0x00;break;//小车停在 //case 7:P0=0x80;break;//8 //case 8:P0=0xff;break;//9 }

irpro_ok=0;//处理完成标志

}

/*****************************************************************/ void Ircordpro(void)//红外码值处理函数 {

unsigned char i, j, k; unsigned char cord,value; k=1;

for(i=0;i<4;i++)//处理4个字节 {

for(j=1;j<=8;j++) //处理1个字节8位

34