标题: 步进电机不稳定,单片机重启之后随机受控制 [打印本页]

作者: MATISI    时间: 2019-2-24 10:20
标题: 步进电机不稳定,单片机重启之后随机受控制
求大佬给看看感觉室程序问题把,步进电机我设了个p0按下才转,但是单片机重启之后很随机,大部分会一直转不停,多重启几次会能有一次正常受控制的程序在下面,求大佬给看看,拜托~~~

#include "reg52.h"                        
#include<intrins.h>               

typedef unsigned int u16;         
typedef unsigned char u8;

sbit MOTOA = P1^0;
sbit MOTOB = P1^1;
sbit MOTOC = P1^2;
sbit MOTOD = P1^3;
sbit pos=P0^0;         

#define SPEED 800
void delay(u16 i)
{
        while(i--);        
}

void main()
{        
        P1=0X00;
        P0=0XFF;
        while(1)
        {
        if(!pos)
        {        
                MOTOA = 1;
                MOTOB = 0;
                MOTOC = 1;
                MOTOD = 1;
                delay(SPEED);

                MOTOA = 1;
                MOTOB = 1;
                MOTOC = 1;
                MOTOD = 0;
                delay(SPEED);

                MOTOA = 0;
                MOTOB = 1;
                MOTOC = 1;
                MOTOD = 1;
                delay(SPEED);

                MOTOA = 1;
                MOTOB = 1;
                MOTOC = 0;
                MOTOD = 1;
                delay(SPEED);
                                                        
        }
}
                   }


作者: bemc    时间: 2019-2-24 11:16
!pos 要处理一下
作者: lfc315    时间: 2019-2-24 18:02
上电要先初始化
作者: Marlboro    时间: 2019-2-24 21:27
你的按键程序没写好吧,我试一下按键这样来写if(pos == 0){ delay(20); if(pos == 0) { “步进电机的内容”} while(pos==0); }
作者: Marlboro    时间: 2019-2-24 21:43
或者你可以换一种方式,就是按一下按键电机就转,再按一下电机就停,假设按键接的是p10,先定义pos为0,if(p10==0){delay(5)if(p10==0){(pos=~pos)while(!p10);}}  if(pos){ //步进电机的内容}
作者: 徐张克    时间: 2019-2-24 21:54
什么单片机?这种可能性大是单片机干扰了。1、你改用抗干扰强单片机试试。2、看看是否电源功率太小,同时单片机又和步进电机使用同个电源,导致电源不稳定干扰了单片机。
作者: HC6800-ES-V2.0    时间: 2019-2-25 08:58
我个认为,你的按键接在P00不好,你有上拉电阻吗?最好换成除P0外的其它口,可能就好了。
作者: 笨笨兔    时间: 2019-2-25 10:02
调试程序怎么这样不在行?
可以把电机改为灯泡试试,看你的硬件部分是否抗干扰。。。。。。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1