标题: 为什么单片机按键控制电机不动,一直响,求解 [打印本页]

作者: qwettyuio    时间: 2021-5-18 11:19
标题: 为什么单片机按键控制电机不动,一直响,求解
#include <reg51.h>           //头文件
#define uchar unsigned char
#define uint unsigned int
unsigned char keyval;   //存储按键值
code BeatCode[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};   //正转
code defeatcode[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //反转
void delay(uint z); //延时函数
int i;           //变量
sbit S1=P3^0;   //按键
unsigned long beats=0;
void StartMotor(unsigned long angle);
unsigned char tmp;
static unsigned char index=0;

void StartMotor(unsigned long angle)
{
        EA=0;
        beats=(angle*4076)/360;
        EA=1;
}
void moveup()
{
        tmp = P1;
        tmp = tmp & 0xF0;
        tmp = tmp | BeatCode[index];                        
        P1 = tmp;
        index++;
        index = index & 0x07;
        beats--;
}
void main()
{
        TMOD=0x01;
        EA=1;
        ET0=1;
        TR0=1;
        TH0=0xF8;
        TL0=0xCD;
        keyval=0;
        StartMotor(10);   //转动十度
        while(1)
        {
                switch(keyval)
                {
                        case 1:moveup();break;
                }
        }
}
void Time0() interrupt  1
{
        TH0=0xF8;
        TL0=0xCD;
        if((P3&0x0f)!=0x0f)
        {
                delay(5);
                if(S1==0)
                        keyval=1;
        }
}
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}


作者: devcang    时间: 2021-5-18 12:49
驱动电压、电流,是否足够,不可以直接单片机的IO驱动的
作者: glinfei    时间: 2021-5-18 15:00
moveup() 里面没有延时啊,步进电机的每步要加个延时,否则转不起来,顶多抖动发声。
作者: dahai1029167960    时间: 2021-5-18 15:05
先用指示灯看下控制是否出现错误,在查看驱动电流是否足够
作者: 漠城    时间: 2021-5-18 18:16
普通直流电机,51开发板可以驱动的,建议看看代码有没有错。
作者: qwettyuio    时间: 2021-5-18 18:20
漠城 发表于 2021-5-18 18:16
普通直流电机,51开发板可以驱动的,建议看看代码有没有错。

编译代码没有出错
作者: qwettyuio    时间: 2021-5-18 18:20
devcang 发表于 2021-5-18 12:49
驱动电压、电流,是否足够,不可以直接单片机的IO驱动的

使用un2003驱动
作者: qwettyuio    时间: 2021-5-18 18:21
glinfei 发表于 2021-5-18 15:00
moveup() 里面没有延时啊,步进电机的每步要加个延时,否则转不起来,顶多抖动发声。

加延时就出错
作者: qwettyuio    时间: 2021-5-18 18:22
glinfei 发表于 2021-5-18 15:00
moveup() 里面没有延时啊,步进电机的每步要加个延时,否则转不起来,顶多抖动发声。

没有任何反应
作者: birdzhyli    时间: 2021-5-18 21:40
什么电机都不说一下,怎么判断?估计是5线4相小电机,换相之间延时要大于100us,这个值要自己试试,从大往小调
作者: birdzhyli    时间: 2021-5-18 21:43
qwettyuio 发表于 2021-5-18 18:21
加延时就出错

加延时出错就查出错的原因




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