当前位置:首页 > 基于超声波测距的智能小车设计 - 图文
附录C:硬件实物图
附录C 硬件实物图
31
附录D:部分源程序
D1:控制源程序 #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
共分享92篇相关文档