导航:首页 > 编程语言 > 二相步进电机程序

二相步进电机程序

发布时间:2023-09-09 04:13:46

❶ 求一个两相四线步进电机的c程序,电机用三极管和场管控制的

/*89C51控制步进电机c程序
使用89C51控制四相六线步进电机,
步进电机采用四相六线,步距角1.8度,半步工作0.9度八拍运行。
接口如下:
P15---启动输入
P14---停止输入
P13---接光电传感器
P20---输出控制步进电机的A相
P21---输出控制步进电机的B相
P22---输出控制步进电机的C相
P23---输出控制步进电机的D相

如下是我给步进电机八拍运行正向通电顺序:

P23(D相)、P22(C相)、P21(B相)、P20(A相)
第一步: 0 0 0 1
第二步: 0 0 1 1
第三步: 0 0 1 0
第四步: 0 1 1 0
第五步: 0 1 0 0
第六步: 1 1 0 0
第七步: 1 0 0 0
第八步: 1 0 0 1

使用光电传感器的输出作为脉冲,光电接收管的后面加一个三极管做放大。
光电传感器前有个齿盘,齿空的间隔距离是相等的,要求齿盘每一格,
光电传感器输出一个脉冲,步进电机一个角度0.9度。齿盘转动的速度不固定,
可能快也可能慢。步进电机没有转动之前,齿盘一直是转动的,
只有按下启动按钮步进电机才开始转动。

*/

//作成:吴天
//.
//完成时间.05.11
//上海.奉贤
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
it START = P1^5;
it STOP = P1^4;
it COM = P1^3;
//电机接在低4位,接在其他位可修改数组。
uchar code lab[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09;

void Mdelay(uchar x)
{uchar j,k;for(j=x;j

❷ 51单片机控制二相四线步进电机程序

#include<reg52.h> //头文件

sbit A1=P1^0; //定义A线圈正端口
sbit A2=P1^1; //定义A线圈负端口
sbit B1=P1^2; //定义B线圈正端口
sbit B2=P1^3; //定义B线圈负端口
sbit en1=P2^0;
sbit en2=P2^1;
int t=0;
#define F1 {A1=1;B1=0;A2=0;B2=0;} //A线圈通正向电压
#define F2 {A1=0;B1=1;A2=0;B2=0;} //B线圈通正向电压
#define F3 {A1=0;B1=0;A2=1;B2=0;} //A线圈通反向电压
#define F4 {A1=0;B1=0;A2=0;B2=1;} //B线圈通反向电压
#define OFF {A1=0;B1=0;A2=0;B2=0;} //全部断电

unsigned int b=2000; //中断初值变量

void Init_Timer0(void) //初始化定时器0
{
TMOD=0x01; //定时器0,使用模式1,16位定时器
TH0=(65536-b)/256; //给定初值
TL0=(65536-b)%256;
EA=1; //打开总中断
ET0=1; //打开定时器中断
TR0=1; //开定时器
}

void main() //主函数
{
en1=1;
en2=1;
Init_Timer0(); //初始化定时器0
while(1);

}

❸ 两相四线42步进电机 程序 只有step 和dir 的c51程序 跪求

/*89C51控制步进电机c程序
使用89C51控制四相六线步进电机,
步进电机采用四相六线,步距角1.8度,半步工作0.9度八拍运行。
接口如下:
P15---启动信号输入
P14---停止信号输入
P13---接光电传感器
P20---输出控制步进电机的A相
P21---输出控制步进电机的B相
P22---输出控制步进电机的C相
P23---输出控制步进电机的D相

如下是我给步进电机八拍运行正向通电顺序:

P23(D相)、P22(C相)、P21(B相)、P20(A相)
第一步: 0 0 0 1
第二步: 0 0 1 1
第三步: 0 0 1 0
第四步: 0 1 1 0
第五步: 0 1 0 0
第六步: 1 1 0 0
第七步: 1 0 0 0
第八步: 1 0 0 1

使用光电传感器的输出作为脉冲信号,光电接收管的后面加一个三极管做信号放大。
光电传感器前有个齿盘,齿空的间隔距离是相等的,要求齿盘每移动一格,
光电传感器输出一个脉冲,步进电机移动一个角度0.9度。齿盘转动的速度不固定,
可能快也可能慢。步进电机没有转动之前,齿盘一直是转动的,
只有按下启动按钮步进电机才开始转动。

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit START = P1^5;
sbit STOP = P1^4;
sbit COM = P1^3;
//电机接在低4位,接在其他位可修改数组。
uchar code lab[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};

void Mdelay(uchar x)
{uchar j,k;
for(j=x;j>0;j--)
{
for(k=124;k>0;k--)
{;}
}
}

//步进程序,调用一次程序,移动一步,
//参数:方向,1为正转,0为反转。
void motormove(uchar dir)
{
static step=0;
P2&=0xf0;
if(dir)
{
if(step<=7)
{ P2|=lab[step++];}
else
{step=0;P2|=lab[step];}
}
else
{
if(step==0)
{P2|=lab[step];step=7;}
if(step>0)
{P2|=lab[step--];}
}
}

void main()
{
bit RUN=0;
while(1)
{

if(RUN==0)
{

if(!START) //读启动
{Mdelay(1);
if(!START)
{RUN=1;}
}
}
else
{

if(!COM) //读传感器,低电平移动步进电机
{motormove(1);}

if(!STOP) //读停止
{
Mdelay(1);
if(!STOP)
{RUN=0;}
}
}

}
}

阅读全文

与二相步进电机程序相关的资料

热点内容
c盘文件删不了怎么办 浏览:248
win7无线网络禁用 浏览:455
如何把电脑文件夹图片放置在一起 浏览:702
如何对访谈法进行数据分析 浏览:388
国土三调文件用什么软件什么打开 浏览:651
数控铣床编程特点是什么 浏览:119
飞鸽传输一次能传多少文件 浏览:488
手机照片权限怎么设置密码 浏览:341
es文件浏览器怎么隐藏 浏览:649
删除的文件为什么恢复 浏览:314
血缘诅咒怎么升级 浏览:604
文件分享到微信怎么操作 浏览:393
tmx文件trados 浏览:704
大数据与会计选课怎么选 浏览:684
网络的不稳定因素有哪些 浏览:950
猎豹浏览器javascript 浏览:723
哪个打印软件保存数据时间长 浏览:873
ps合并后源文件 浏览:74
无线怎么设置没有网络 浏览:548
网站怎么换模板 浏览:511

友情链接