用51单片机控制 TB6560驱动板驱动步进电机,不能正反转

2019-07-15 17:22发布

  驱动器:TB6560AHQ    步进电机:2相四线  只能一个方向转 不能正反转 求教懂大神指导下
#include<reg52.h>
sbit CLK=P1^0;        //脉冲
sbit ENA=P1^1;        //使能
sbit DIR=P1^2;        //转向
sbit CW=P3^0;         //正传运行按键
sbit STOP=P3^1;       //停止运行按键
sbit CCW=P3^2;        //反转运行按键
sbit ADJ1=P3^3;       //调速运行按键
sbit ADJ2=P3^4;
sbit Led1=P0^0;
sbit Led2=P0^1;
bit Run_Status;
unsigned char Run_Dir;
#define F_DIR 0;        //正转
#define B_DIR 1;        //反转
unsigned int CYCLE;
void Delay_ms(unsigned char ms)
{
        unsigned char i;
        for(;ms>0;ms--)
        {
            for(i=0;i<125;i++);
        }
}     

void main()
{
Run_Status=0;
CLK=0;
ENA=0;
        while(1)
        {
                if(!STOP)
                {
                        Delay_ms(1000);
                        if(!STOP)
                        {
                                Run_Status=0;
                                 CLK=0;
                                 ENA=0;
                                 TR0=0;
             Led1=1;
             Led2=1;
                        }
                }
                if(!CW&&!Run_Status)
                {
                        Delay_ms(1000);
                        if(!CW&&!Run_Status)
                        {
                                Run_Status=1;
                                DIR=0;
                                ENA=1;
                                CYCLE=2500;
                                TMOD|=0X01;
                                TH0=(65536-CYCLE)/256;
                                TL0=(65536-CYCLE)%256;
                                IE=0X82;
                                TR0=1;
                                Run_Dir=F_DIR;
            Led1=0;
                        }
                }
                if(!CCW&&!Run_Status)
                {
                        Delay_ms(1000);
                        if(!CCW&&!Run_Status)
                        {
                                Run_Status=1;
                                DIR=0;
                                ENA=1;
                                CYCLE=2500;
                                TMOD|=0X01;
                                TH0=(65536-CYCLE)/256;
                                TL0=(65536-CYCLE)%256;
                                IE=0X82;
                                TR0=1;
                                Run_Dir=B_DIR;
            Led2=0;
                        }
                }
                if(!ADJ1)
                {
                        Delay_ms(1000);       
                        if(!ADJ1)
                        {
                                if(CYCLE<20000)CYCLE+=2000;
                                else CYCLE=1000;
                                Run_Status=1;
                                TR0=1;
                        }
                }
   }
}
                void timer0_ISR(void) interrupt 1 using 1
                {
                        TH0=(65536-CYCLE)/256;
                        TL0=(65536-CYCLE)%256;
                        CLK=~CLK;
                }



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
1303465404
1楼-- · 2019-07-15 19:59
xianyoudian 发表于 2015-5-2 10:41
先把反转程序去了,正转是否正常

您好 反转程序去了 正传也正常!接线应该也没问题
1303465404
2楼-- · 2019-07-15 23:35
xianyoudian 发表于 2015-5-2 10:41
先把反转程序去了,正转是否正常

您看下 程序应该没什么错误吧?
弯月洪牙
3楼-- · 2019-07-16 00:15
不能正反转,我现在也遇到 了这个问题,请问你解决好了吗,我发现CW引脚没有用,无法控制转向
hetiandemeng017
4楼-- · 2019-07-16 06:06
 精彩回答 2  元偷偷看……
hetiandemeng017
5楼-- · 2019-07-16 10:54
弯月洪牙 发表于 2015-7-28 14:49
不能正反转,我现在也遇到 了这个问题,请问你解决好了吗,我发现CW引脚没有用,无法控制转向

基本确定你用的是89C52一类的芯片,用个500欧姆的电阻上拉到5V即可,因为此芯片没有强输出,能力太渣
le364
6楼-- · 2019-07-16 11:46
DIR=P1^2;  程序中正反转都是 DIR=0;  没变呀

一周热门 更多>