#include #define uchar unsigned char #define uint unsigned int //***************************位定义*********************// sbit left1=P0^0; //IN1 小车左轮向前后控制 sbit left2=P0^1; //IN2 小车左轮向前后控制 sbit right1=P0^2; //IN3 小车右轮向前后控制 sbit right2=P0^3; //IN4 小车右轮向前后控制 sbit EN1=P0^4; //左电机A使能端控制 sbit EN2=P0^5 ; //右电机B使能端控制 sbit leftout1=P2^4; //s1 左边传感器1位控制 sbit leftout2=P2^5; //s2 左边传感器2位控制 sbit midout=P2^1; //s3 中间传感器控制 sbit rightout1 =P2^2; //s4 右边传感器1位控制 sbit rightout2=P2^3; //s5 右边传感器2位控制 unsigned char highr,highl;//定义高电平时间 //********************初始化函数************************// void init() { EN1=1; EN2=1; left1=0; left2=1; right1=0; right2=1; leftout1=1; leftout2=1; rightout1=1; rightout2=1; } //*********************延时函数************************// /*void delay(unsigned char k) {unsigned char i,j,n; for(i=0;i //******************小车控制函数**********************// void contorl() { 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; highl=25; right1=0;//1反转 right2=1; //(倒车) left1=0;//2反转 left2=1; } } //***********************主函数********************// void main() { init();//初始化 while(1) contorl();//控制函数 } 因篇幅问题不能全部显示,请点此查看更多更全内容