搜索
bottom↓
回复: 8

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

[复制链接]

出0入0汤圆

发表于 2016-9-21 23:16:33 | 显示全部楼层 |阅读模式
本帖最后由 liude2006 于 2016-9-21 23:25 编辑

我用52单片机的P1.0-P1.3口驱动ULN2003,然后驱动电机,电机可以正常转动;
但是换到P1.4-P1.7口,电机始终不转,请问有明白是什么原因的吗?电路完全一样,只是换了I/O口

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2016-9-21 23:50:13 | 显示全部楼层
是不是端口配置有问题

出0入0汤圆

 楼主| 发表于 2016-9-22 08:38:54 | 显示全部楼层
dxm123 发表于 2016-9-21 23:50
是不是端口配置有问题

P1口是统一配置的

出0入0汤圆

发表于 2016-9-22 09:01:43 | 显示全部楼层
程序有问题
或者单片机坏了

出0入0汤圆

 楼主| 发表于 2016-9-22 09:15:27 | 显示全部楼层
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();//电机正转
        }
}

出0入0汤圆

发表于 2016-9-22 09:35:04 | 显示全部楼层
本帖最后由 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

出0入213汤圆

发表于 2016-9-22 09:46:51 | 显示全部楼层
本帖最后由 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);                           
        }
}

这些代码是楼主自己写的, 感觉楼主不太适合搞这行..

出0入0汤圆

发表于 2016-9-22 10:04:10 | 显示全部楼层
liude2006 发表于 2016-9-22 09:15
sbit zheyang_EN = P2^4;          //低电平有效

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

FFW数组里高低位互换,注意脚位顺序

出0入0汤圆

发表于 2016-9-24 18:48:48 | 显示全部楼层
用示波器看看一下波形
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 09:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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