找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3799|回复: 9
打印 上一主题 下一主题
收起左侧

昨天这个步进电机程序还好好的,今天就不行了,电机一点反应都没有

[复制链接]
跳转到指定楼层
楼主
ID:134288 发表于 2016-9-20 11:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
# include"reg52.h"
# define uchar unsigned char
# define GPIO_motor P1


sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;
sbit K4=P3^3;

uchar code FZ[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
uchar code ZZ[]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};

uchar Direction,Speed;

void Delay(unsigned int t)
{                           
        unsigned int k;
        while(t--)
        {
                for(k=0; k<80; k++)
                { }
        }
}

void Motor()
{
  uchar i;
        for(i=0;i<8;i++)
        {
          if(Direction==1)
                          GPIO_motor=FZ[i]&&0x1f;
               
          if(Direction==2)
                          GPIO_motor=ZZ[i]&&0x1f;
                Delay(Speed);//μ÷½ú×aËù
        }

}

void main()
{
  uchar i;
        Speed=30;
        while(1)
        {
          if(K1==0)  
                {
                  Delay(5);
                        if(K1==0)
                        {
                          Direction=1;
                       
                        }
                        while(K1==0);
                               
                }               
                        if(K2==0)
                {
                  Delay(5);
                        if(K2==0)
                        {
                          Direction=2;
                       
                        }
                        while(K2==0);
                }               
                        if(K2==0)
                {
                  Delay(5);
                        if(K2==0)
                        {
                          Direction=2;
                       
                        }
                        while(K2==0);
                               
                        if(K3==0)
                {
                  Delay(5);
                        if(K3==0)
                        {
                          Speed=1;
                       
                        }
                        while(K3==0);
                }
       
        }

     if(K4==0)
                {
                  Delay(5);
                        if(K4==0)
                        {
                          Speed=5;
                       
                        }
                        while(K4==0);
                }
         Motor();
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2016-9-20 18:39 | 只看该作者
步进电机,可以看成的一个个的直流线圈,驱动时,各线圈的导通时间是有限制的,否则会产生大电流,引起驱动部分损坏!
回复

使用道具 举报

板凳
ID:57657 发表于 2016-9-20 19:25 | 只看该作者
换个另一个型号的单片机试试,有可能是io口烧穿了,或者电路有短路或开路,或者是驱动板被烧,或者是步进电机出现问题,也有可能是看门狗惹的祸。
用示波器或逻辑分析仪检测驱动步进电机的信号是否正常就行。
回复

使用道具 举报

地板
ID:139965 发表于 2016-9-20 21:19 | 只看该作者
用示波器或逻辑分析仪检测驱动步进电机的信号是否正常就行。
回复

使用道具 举报

5#
ID:134288 发表于 2016-9-20 22:18 | 只看该作者
taoyufan000 发表于 2016-9-20 21:19
用示波器或逻辑分析仪检测驱动步进电机的信号是否正常就行。

没有这么好的设备 。。。。。。。
回复

使用道具 举报

6#
ID:134288 发表于 2016-9-20 22:20 | 只看该作者
yzwzfyz 发表于 2016-9-20 18:39
步进电机,可以看成的一个个的直流线圈,驱动时,各线圈的导通时间是有限制的,否则会产生大电流,引起驱动 ...

长知识了  但我换了一个程序就可以了  肯定是我的程序问题
回复

使用道具 举报

7#
ID:134288 发表于 2016-9-20 22:22 | 只看该作者
npn 发表于 2016-9-20 19:25
换个另一个型号的单片机试试,有可能是io口烧穿了,或者电路有短路或开路,或者是驱动板被烧,或者是步进电 ...

看门狗??但肯定是程序问题,换一个程序电机正常运转
回复

使用道具 举报

8#
ID:21069 发表于 2019-2-2 00:58 | 只看该作者
一个程序电机正常运转?那你弄懂那一个代码再调这个啊,光嘴把式能解决问题吗?

评分

参与人数 4黑币 +91 收起 理由
嘉立创AAA + 6 赞一个!
Sawardeakar + 15
刀刀见红 + 35 很给力!
shuisheng + 35 绝世好帖!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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