您好,欢迎访问三七文档
#includereg51.h#defineucharunsignedchar#defineuintunsignedint//***************************位定义*********************//sbitleft1=P0^0;//IN1小车左轮向前后控制sbitleft2=P0^1;//IN2小车左轮向前后控制sbitright1=P0^2;//IN3小车右轮向前后控制sbitright2=P0^3;//IN4小车右轮向前后控制sbitEN1=P0^4;//左电机A使能端控制sbitEN2=P0^5;//右电机B使能端控制sbitleftout1=P2^4;//s1左边传感器1位控制sbitleftout2=P2^5;//s2左边传感器2位控制sbitmidout=P2^1;//s3中间传感器控制sbitrightout1=P2^2;//s4右边传感器1位控制sbitrightout2=P2^3;//s5右边传感器2位控制unsignedcharhighr,highl;//定义高电平时间//********************初始化函数************************//voidinit(){EN1=1;EN2=1;left1=0;left2=1;right1=0;right2=1;leftout1=1;leftout2=1;rightout1=1;rightout2=1;}//*********************延时函数************************///*voiddelay(unsignedchark){unsignedchari,j,n;for(i=0;ik;i++)for(j=0;j200;j++)for(n=0;n500;n++);}*///******************小车控制函数**********************//voidcontorl(){if((leftout1==1)&&(midout==1))//左端传感器1检测到黑线{highr=20;highl=20;right1=1;//右轮行走right2=0;//左转弯left1=1;//左轮停止left2=1;}if((leftout2==1)&&(midout==1))//左端传感器2检测到黑线{highr=25;highl=25;right1=1;//右轮行走right2=0;//(左转弯)left1=1;//左轮停止left2=1;}if((rightout2==1)&&(midout==1))//右端传感器1检测到黑线{highr=20;highl=20;right1=1;//右轮停止right2=1;//右转弯left1=1;//左轮行走left2=0;}if((rightout1==1)&&(midout==1))//右端传感器2检测到黑线{highr=25;highl=25;right1=1;//右轮停止right2=1;//右转弯left1=1;//左轮行走left2=0;}if((leftout1||leftout2||rightout1||rightout2)==0&&(midout==1))//检测不到黑线则正常行走{highr=25;highl=25;right1=1;//正常向前行走,加速前进right2=0;left1=1;left2=0;}if(leftout1&&leftout2&&rightout1&&rightout2&&midout)//如果都为黑线则小车停止{right1=1;//1停止/*同为高电平,则小车停止*/right2=1;left1=1;//2停止left2=1;}if((midout||leftout1||leftout2||rightout1||rightout2)==0)//倒车程序,都为白色则倒车{highr=25;/*right1=1;right2=0;//正常向前行走,加速前进left1=1;left2=0;*/highl=25;right1=0;//1反转right2=1;//(倒车)left1=0;//2反转left2=1;}}//***********************主函数********************//voidmain(){init();//初始化while(1)contorl();//控制函数}
本文标题:智能小车程序
链接地址:https://www.777doc.com/doc-4084847 .html