单片机驱动步进电机的问题

2020-01-16 18:35发布

本帖最后由 liude2006 于 2016-9-21 23:25 编辑

我用52单片机的P1.0-P1.3口驱动ULN2003,然后驱动电机,电机可以正常转动;
但是换到P1.4-P1.7口,电机始终不转,请问有明白是什么原因的吗?电路完全一样,只是换了I/O口
9条回答
LCIOT
1楼 · 2020-01-17 10:54.采纳回答
 精彩回答 2  元偷偷看…… 0人看过
dxm123
2楼-- · 2020-01-16 18:49
是不是端口配置有问题
liude2006
3楼-- · 2020-01-17 00:44
dxm123 发表于 2016-9-21 23:50
是不是端口配置有问题

P1口是统一配置的
lcw_swust
4楼-- · 2020-01-17 03:28
 精彩回答 2  元偷偷看……
liude2006
5楼-- · 2020-01-17 04:51
lcw_swust 发表于 2016-9-22 09:01
程序有问题
或者单片机坏了

sbit zheyang_EN = P2^4;          //低电平有效

uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//四相八拍正转编码

//********************************************************
//步进电机正转/
//******************************************************
void motor_ffw()
{
        uchar i;
        uint j;
        for(j=0;j<8;j++)
        {
                if(++i > 7) i=0;
                P1 = FFW;//取数据
                delay_1ms(8);//调节转速
        }
}
void main()
{
        uint r,N=896;//N步进电机运转圈数
        P1 = 0;                //用P1.4-P1.7口
        zheyang_EN = 1;
        while(1)
        {
                if(zheyang_EN == 0)
                        for(r=0;r<=N;r++)
                                motor_ffw();//电机正转
        }
}
lcw_swust
6楼-- · 2020-01-17 06:27
本帖最后由 lcw_swust 于 2016-9-22 09:36 编辑
liude2006 发表于 2016-9-22 09:15
sbit zheyang_EN = P2^4;          //低电平有效

uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09 ...


由P1.0-P1.3切换到P1.4-P1.7,程序中在哪里能体现呢?
我只看到IO口的低四位有变化,高四位一直为0
jyrpxj
7楼-- · 2020-01-17 06:45
本帖最后由 jyrpxj 于 2016-9-22 09:49 编辑

sbit zheyang_EN = P2^4;          //低电平有效

uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//四相八拍正转编码

//********************************************************
//步进电机正转/
//******************************************************
void motor_ffw()
{
        uint j;
        for(j=0;j<8;j++)
        {
                P1 = (FFW[j]<<4);//取数据
                delay_1ms(8);//调节转速
        }
}
void main()
{
        uint r,N=896;//N步进电机运转圈数
        P1 = 0;                //用P1.4-P1.7口
        while(1)
        {
             for(r=0;r<=N;r++)
            {
                     motor_ffw();//电机
            }
            P1=0;
            while(1);                           
        }
}

这些代码是楼主自己写的, 感觉楼主不太适合搞这行..
shower.xu
8楼-- · 2020-01-17 07:57
liude2006 发表于 2016-9-22 09:15
sbit zheyang_EN = P2^4;          //低电平有效

uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09 ...

FFW数组里高低位互换,注意脚位顺序
sandeant
9楼-- · 2020-01-17 11:17
用示波器看看一下波形