曲线单一极值点(峰点)的C51步进电机控制

利用四个档位实现极值点的凹陷程度的控制。即按键Sa,Sb,Sc,Sd,每一个都是一个位置控制。 而实现的手段很简单,就是I/O口控制步进电机的相位。

曲面法师眭智建

喜欢

391
浏览
0
喜欢

> 更多图片

项目状态:填坑进行中
开放度:公开
所属分类:手工
发布时间:2024-05-18
最近更新:2024-05-18

标签

描述

利用四个档位实现极值点的凹陷程度的控制。即按键Sa,Sb,Sc,Sd,每一个都是一个位置控制。
而实现的手段很简单,就是I/O口控制步进电机的相位。


详细说明

C51代码:

include "reg51.h"

sbit A1=P1^0;
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;
sbit GND=P1^4;

sbit Bu1=P2^1;
sbit Bu2=P2^2;
unsigned int count=0;
unsigned int derta=0;

define A_ON {A1=1;B1=0;C1=0;D1=0;}

define B_ON {A1=0;B1=1;C1=0;D1=0;}

define C_ON {A1=0;B1=0;C1=1;D1=0;}

define D_ON {A1=0;B1=0;C1=0;D1=1;}

void Delay(unsigned int k)
{

unsigned int i=0;
unsigned int y=0;
for(i=1;i<=k;i++)
{
    for(y=1;y<=248;y++);
    for(y=1;y<=248;y++);
}

}

void ClockWise(unsigned int N)
{

unsigned int j;
for(j=0;j<=N;j++)
{
     A_ON;
     Delay(100);
     B_ON;
     Delay(100);
     C_ON;
     Delay(100);
     D_ON;
     Delay(100);
}

}
void AntiClockWise(unsigned int M)
{

unsigned int x;
for(x=0;x<=M;x++)
{
     D_ON;
     Delay(100);
     C_ON;
     Delay(100);
     B_ON;
     Delay(100);
     A_ON;
     Delay(100);
}

}

void T0_Init()
{

TMOD=0x00;
TH1=65535;
TL0=10000;
ET0=0;
TR0=0;
EA=1;

}
void T0_InterruptionService() interrupt 1
{

TH1=65535;
TL0=10000;
count++;

}
void Button_Control()
{

if(Bu1==1&&Bu2==0)
{
    Delay(5);
    if(Bu1==1&&Bu2==0)
    {
        if(Bu1==0)
        derta=count;
        count=0;//clear the count
        ClockWise(derta);
    }
 if(Bu2==1&&Bu1==0)
 {
     Delay(5);
     if(Bu2==1&&Bu1==0)
    {
        if(Bu2==0)
        derta=count;
        count=0;//clear the count
        AntiClockWise(derta);
    }
 }

}
}

void main()
{

while(1)
{
GND=0;
T0_Init();
Bu1=0;
Bu2=0;
Button_Control();
}

}

链接表