按下K1(K2)时怎么每次都正转72°(反转72°)

[复制链接]
961|16
 楼主| wangpe 发表于 2022-12-10 15:38 | 显示全部楼层 |阅读模式
按下K1(K2)时怎么每次都正转72°(反转72°)
 楼主| wangpe 发表于 2022-12-10 15:44 | 显示全部楼层

/***************   writer:shopping.w   ******************/
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code FFW[]=          //正转
{
         0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09  
};

uchar code REV[]=        //反转
{
         0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01
};

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

void DelayMS(uint ms)  //延时
{
         uchar i;
         while(ms--)
         {
                  for(i=0;i<120;i++);
         }
}

void SETP_MOTOR_FFW(uchar n)   //正转
{
         uchar i,j;
         for(i=0;i<1*n;i++)
         {
                  for(j=0;j<8;j++)
                 {
                          if(K3 == 0)        break;
                         P1 = FFW[j];
                         DelayMS(25);
                 }
         }
}

void SETP_MOTOR_REV(uchar n)  //反转
{
         uchar i,j;
         for(i=0;i<1*n;i++)
         {
                  for(j=0;j<8;j++)
                 {
                          if(K3 == 0)        break;
                         P1 = REV[j];
                         DelayMS(25);
                 }
         }
}

void main()
{
         uchar N = 1;
         while(1)
         {
                  if(K1 == 0)
                 {  while(K1==0);
                          P0 = 0xfe; //正转LED指示
                         SETP_MOTOR_FFW(N);
                         if(K3 == 0) break;
                 }
                 else if(K2 == 0)
                 {        while(K2==0);
                          P0 = 0xfd;        //反转LED指示
                         SETP_MOTOR_REV(N);
                         if(K3 == 0) break;
                 }
                 else
                 {
                          P0 = 0xfb;          //停LED指示
                         P1 = 0x03;
                 }
         }
}
当按下K1(K2)时怎么每次都正转72°(反转72°)?
 楼主| wangpe 发表于 2022-12-10 15:47 | 显示全部楼层
怎么改让它只转9°
LLGTR 发表于 2022-12-25 09:37 | 显示全部楼层
因为你步进电机的步数比较大。
V853 发表于 2022-12-25 09:37 | 显示全部楼层
增加【SETP_MOTOR_xxx】函数里面的延时试一下。
朝生 发表于 2022-12-25 09:38 | 显示全部楼层
72°?正常一拍不会转这么大角度才对。
软核硬核 发表于 2022-12-25 09:39 | 显示全部楼层
你改成四拍试一下呗!
Henryko 发表于 2022-12-26 10:26 | 显示全部楼层
步进数太大了吧
juventus9554 发表于 2023-1-4 18:22 | 显示全部楼层
不懂,帮顶吧
 楼主| wangpe 发表于 2023-1-4 18:25 | 显示全部楼层
多谢,已解决,还是亲自问人来的快
huangchui 发表于 2023-1-4 18:28 | 显示全部楼层

怎么解决的?
 楼主| wangpe 发表于 2023-1-4 18:30 | 显示全部楼层
很简答,都不好意思说了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

938

主题

9837

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部