找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1755|回复: 6
收起左侧

为什么我这个烧进单片机车子只是正转

[复制链接]
ID:150344 发表于 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);
        }
}
/******************************************************************
**                        结束
回复

使用道具 举报

ID:74868 发表于 2016-11-27 16:38 | 显示全部楼层
应该考虑延时的问题
回复

使用道具 举报

ID:150568 发表于 2016-11-27 17:25 | 显示全部楼层
宏定义部分有问题
回复

使用道具 举报

ID:150573 发表于 2016-11-27 17:27 | 显示全部楼层
试试加大延迟
回复

使用道具 举报

ID:150637 发表于 2016-11-27 21:48 | 显示全部楼层
因为它不会反转呀
回复

使用道具 举报

ID:149853 发表于 2016-11-27 22:11 | 显示全部楼层
你这个电机是不需要驱动电路的吗????为什么直接对I/O口赋值就能对电机进行操作?
回复

使用道具 举报

ID:140371 发表于 2016-11-28 17:37 来自手机 | 显示全部楼层
咆哮的阿杰 发表于 2016-11-27 22:11
你这个电机是不需要驱动电路的吗????为什么直接对I/O口赋值就能对电机进行操作?

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表