搜索
您的当前位置:首页正文

智能小车程序

2023-09-26 来源:易榕旅网


#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;ifor(n=0;n<500;n++); }*/

//******************小车控制函数**********************// 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();//控制函数 }

因篇幅问题不能全部显示,请点此查看更多更全内容

Top