标题: 为什么我这个烧进单片机车子只是正转 [打印本页]

作者: 虫虫大作战    时间: 2016-11-26 15:28
标题: 为什么我这个烧进单片机车子只是正转
头文件
******************************************************************/
#include<AT89X52.H>          

/******************************************************************
**                       接线定义
******************************************************************/
#define Left_moto_go      {P1_0=1,P1_2=1;P1_3=0;}    //左电机正转
#define Left_moto_back    {P1_0=1,P1_2=0;P1_3=1;}          //左电机反转
#define Left_moto_Stop    {P1_0=0;}                  //左电机停转                     
#define Right_moto_go     {P1_1=1,P1_4=1;P1_5=0;}         //右电机正转
#define Right_moto_back   {P1_1=1,P1_4=0;P1_5=1;}         //右电机反转
#define Right_moto_Stop   {P1_1=0;}                         //右电机停转   

/******************************************************************
**                       延时函数
******************************************************************/       
void delay(unsigned int k)
{   
     unsigned int x,y;
         for(x=0;x<k;x++)
           for(y=0;y<2000;y++);
}

/******************************************************************
**                       小车前进
******************************************************************/
void  front_run(void)
{
         Left_moto_go;   
         Right_moto_go;  
}

/******************************************************************
**                       小车倒退
******************************************************************/
void  back_run(void)
{
         Left_moto_back;   
         Right_moto_back;  
}

/******************************************************************
**                       小车左转
******************************************************************/
void  left_run(void)
{
         Left_moto_Stop;   
         Right_moto_go;  
}

/******************************************************************
**                       小车右转
******************************************************************/
void  right_run(void)
{
         Right_moto_Stop;   
         Left_moto_go;  
}

/******************************************************************
**                       小车停走
******************************************************************/
void  stop(void)
{
         Left_moto_Stop
         Right_moto_Stop;   
}

/******************************************************************
**                       主函数
******************************************************************/
   void main(void)
{
   delay(100);     
        while(1)
        {
                front_run();   
        delay(200);
                back_run();       
        delay(200);
            left_run();
         delay(200);  
            right_run();
            delay(200);
            stop();
            delay(400);
        }
}
/******************************************************************
**                        结束

作者: lgjdqm    时间: 2016-11-27 16:38
应该考虑延时的问题
作者: 我不配11    时间: 2016-11-27 17:25
宏定义部分有问题
作者: minilong95    时间: 2016-11-27 17:27
试试加大延迟
作者: daifei1234    时间: 2016-11-27 21:48
因为它不会反转呀
作者: 咆哮的阿杰    时间: 2016-11-27 22:11
你这个电机是不需要驱动电路的吗????为什么直接对I/O口赋值就能对电机进行操作?
作者: a0931727149    时间: 2016-11-28 17:37
咆哮的阿杰 发表于 2016-11-27 22:11
你这个电机是不需要驱动电路的吗????为什么直接对I/O口赋值就能对电机进行操作?

在正到反轉間下個停車ㄧ點時間。試試看

在宏定義中en先除能。等到命令下完在致能。




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