#define sense P1 /*宏定义光电传感器端口*/
#define input1 P0 /*左电机的IN1,IN2定义在P0口*/
#define input2 P2 /*右电机的IN3,IN4及ENA,ENB定义在P2口*/
//宏定义电机的具体端口
sbit MOTO1_INT1=P0^0;
sbit MOTO1_INT2=P0^1;
sbit MOTO1_ENA=P2^0;
sbit MOTO2_INT3=P2^5;
sbit MOTO2_INT4=P2^4;
sbit MOTO2_ENB=P2^2;
//宏定义传感器的具体端口
sbit sense_L=P1^3;
sbit sense_R=P1^6;
//宏定义金属传感器端口
sbit METAL=P1^1;
//宏定义DELAY函数中的一些变量
int Dtime1=20000;
int Dtime2=2000;
int i=0;
unsigned char SIGNAL(void); //传感器信号分析函数
void DELAY(void); //延时函数
void main()
{
int a;
MOTO1_INT1=1; //使车开始时运动
MOTO1_INT2=0;
MOTO1_ENA=1;
MOTO2_INT3=1;
MOTO2_INT4=0;
MOTO2_ENB=1;
while(1)
{
if(METAL==1) //有金属时车停止
DELAY();
else
{
a=SIGNAL();
switch(a)
{
case 1:input2=0x25;break; //前进
case 2:input2=0x24;break; //左转
case 3:input2=0x21;break; default:break;
}
}
}
}
void DELAY() {
input2=0x20; for(i=0;i //使驱动芯片的两个使能端为0,//实现延时,用DTIME控制 使两个电机停转 input2=0x25; //使驱动芯片的两个使能端为1,使两个电机重新转 for(i=0;i unsigned char SIGNAL() { unsigned char Re; Re=sense&0x28; if(Re==40)return 1;//前进 else if(Re==8)return 2;//左转 else if(Re==32)return 3;//右转 else return 1;//有错时前进 } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuoyibo.cn 版权所有 湘ICP备2023022426号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务