_浮_生_若梦 _浮_生_若梦
如果我变成回忆
关注数: 138 粉丝数: 182 发帖数: 6,963 关注贴吧数: 38
大神们帮忙看一下这小车程序怎么回事。右转不管用,找不出错误; #include<reg52.h> #define uchar unsigned char //*********************第一部分 定义Start************************************** sbit led1=P2^0; uchar num; sbit IN1=P1^0;//右电机 sbit IN2=P1^2; sbit IN3=P1^3;//左电机 sbit IN4=P1^5; sbit right_BZ=P1^6;//右避障传感器 sbit left_BZ=P1^7;//左避障传感器 sbit right_XJ=P3^0;//右循迹传感器 sbit left_XJ=P3^1;//左循迹传感器 int count1=0;//用于定时计数的两个全局变量位声明 int count2=0; //*********************第一部分 End***************************************** //*********************第二部分 子函数定义 Start**************************** //*******************延时********************** void delayms(uchar xms) { uchar i,j; for(i=xms;i>0;i--) for(j=113;j>0;j--); } void delayus(uchar xus) { uchar i,j; for(i=xus;i>0;i--) for(j=10;j>0;j--); } //*******************延时 END******************* //***************************************右电机**************************** void forward_you()//右电机 前进 { IN1=0; IN2=1; } void tingzhi_you()//右电机 停止 { IN1=1; IN2=1; } void fanzhuan_you()//右电机 反转 { IN1=1; IN2=0; } //*****************************************左电机**************************** void forward_zuo()//左电机 前进 { IN3=0; IN4=1; } void tingzhi_zuo()//左电机 停止 { IN3=1; IN4=1; } void fanzhuan_zuo()//左电机 反转 { IN3=1; IN4=0; } //*********************第二部分 子函数定义 End********************* //**********第三部分 电机驱动函数定义 Start************************ void advance()//小车直线前进函数 { forward_you(); forward_zuo(); delayms(2); tingzhi_you(); tingzhi_zuo(); delayms(3); tingzhi_you(); delayms(1); } void tingzhi() { tingzhi_you(); tingzhi_zuo(); } void left_turn()//小车左转 { forward_you();//右电机 前进 forward_zuo();//左电机 前进 delayms(2); tingzhi_zuo();//左电机 停止 delayms(2); tingzhi_you();//右电机 停止 delayms(3); } void right_turn()//小车右转 { forward_zuo();//左电机 前进 forward_you();//右电机 前进 delayms(2); tingzhi_you();//右电机 停止 delayms(2); tingzhi_zuo();//左电机 停止 delayms(3); } void backaway()//后退 { tingzhi_you();//右电机 停止 tingzhi_zuo();//左电机 停止 delayus(1); fanzhuan_you();//右电机 反转 fanzhuan_zuo();//左电机 反转 delayms(1); } //**********第四部分 道路检测函数定义 Start********************** int explorer() { int order; if(right_BZ==1&&left_BZ==1) { if(right_XJ==0&&left_XJ==1) order=2; //***右转*** else if(right_XJ==1&&left_XJ==0) order=3; //***左转*** else order=1; //***前进*** } else if(right_BZ==1&&left_BZ==0) { order=2; //***右转*** } else if(right_BZ==0&&left_BZ==1) { order=3; //***左转*** } else { order=4; //***停止*** } return(order); } //**********第四部分 END***************************************** //**********第五部分 主函数 Start******************************** void main() { int way; TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; way=explorer(); switch(way) { case 1://小车前进 { advance(); } case 2://小车右转 { right_turn(); } case 3://小车左转 { left_turn(); } case 4://小车停止 { tingzhi(); } } } //**********第五部分 主函数 End******************************** //**********第六部分 中断服务程序 Start************************ void timer() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; num++; if(num==20); { num=0; led1=~led1; } } //**********第六部分 中断服务程序 End**********************
首页 1 2 3 下一页