标题: 新人,求教写的这个演示L298N的程序是否合理~ [打印本页]

作者: 616001467    时间: 2014-2-10 21:56
标题: 新人,求教写的这个演示L298N的程序是否合理~
#include<reg51.h>    //头文件
sbit ENA=P0^0;    /*   */
sbit IN1=P0^1;    /* 定义针脚  */
sbit IN2=P0^2;    /*   */
sbit IN3=P0^3;    /*   */
sbit IN4=P0^4;    /*   */
sbit ENB=P0^5;    /*   */
  
void MotorMoshi(unsigned nNum)   //电机转向函数
{
                 
/*此段为选择电机转向*/
switch(nNum)
  {
  case 1:    //前进
   IN1=1;
   IN3=1;
   break;
  case 2:    //后退
   IN1=0;
   IN3=0;
   break;
  case 3:    //左前
   IN1=1;
   IN3=1;
   break;
  case 4:    //左后
   IN1=0;
   IN3=1;
   break;
  case 5:    //右前
   IN1=0;
   IN3=1;
   break;
  case 6:    //右后
   IN1=0;
   IN3=0;
   break;
  case 7:    //左旋转
   IN1=0;
   IN3=1;
   break;
  case 8:    //右旋转
   IN1=1;
   IN3=0;
   break;
  }
  /*取IN1和IN3的反值*/
  if(IN1==0)
   IN2=1;
  else
   IN2=0;
  if(IN3==0)
   IN4=1;
  else
   IN4=0;
  
  /*使能ENA,ENB为1或0*/
  if((nNum==1)||(nNum==2)||(nNum==3)||(nNum==4)||(nNum==7)||(nNum==8))      
               
   ENA=1;           
  else            
   ENA=0;                        
  if((nNum==1)||(nNum==2)||(nNum==5)||(nNum==6)||(nNum==7)||(nNum==8))            
   ENB=1;     
  else         
   ENB=0;
}
void delay(void)   //延时5S
{
    unsigned char a,b;
    for(b=19;b>0;b--)
        for(a=130;a>0;a--);
}
void main(void)
{
unsigned a;
a=0;
while(1)
{
  MotorMoshi(a);
  delay();
  a++;
  if(a==9)
  {
  break;
  }
}
}


作者: 616001467    时间: 2014-2-10 21:57
还有这段能简写吗
if((nNum==1)||(nNum==2)||(nNum==3)||(nNum==4)||(nNum==7)||(nNum==8))
刚开始以为可以写成if(nNum==(1||2||3||4||7||8))
结果变成了随机

作者: sz1001    时间: 2014-7-9 21:16
俺还没到楼主脚跟,只能仰望了~~
作者: 红外遥控    时间: 2014-7-10 14:44
俺还没到楼主脚跟,只能仰望了~~
作者: 小强强    时间: 2015-1-26 14:36
616001467 发表于 2014-2-10 21:57
还有这段能简写吗
if((nNum==1)||(nNum==2)||(nNum==3)||(nNum==4)||(nNum==7)||(nNum==8))
刚开始以为可 ...

直接写if(nNum)就行了
作者: 202305415    时间: 2015-3-15 07:08
学习学习
作者: liaolinhui    时间: 2015-3-15 11:25
ENA和ENB那直接插上就行了啊,不用单片机来控制




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1