微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机控制步进电机正反转

单片机控制步进电机正反转

时间:11-18 来源:互联网 点击:
步进电机模块:

原理图:

两相六线步进电机,步进角7.5度,额定工作电压12V,完全可以使用5V做实验。

以下是引用 gguoqing 在2006-6-11 15:10:02的发言:

使用伟纳定做的20CM杜邦头实验连接线,可以很方便的将ME300与步进电机模块连接起来。

http://www.willar.com/shop_view.asp?id=47

在ME300B上使用时,可从J7上引出5V电源到步进电机模块J1上。

将J1(ICE)上的P1.0-P1.3用杜邦头实验连接线连接到步进电机模块J2上。

产品详情:

http://www.willar.com/shop_view.asp?id=48。

以下是本站管理员gguoqing专门编写的演示程序。

C语言范例:

/*******************************************************************

/*

/* ME300系列单片机开发系统演示程序-步进电机键控正反转实验

/*

/* 邮箱: gguoqing@willar.com

/* 网站:http://www.willar.com;

/* 作者: gguoqing

/* 时间: 2006/05/30

/*

/*COPYRIGHT(C)伟纳电子www.willar.comALL RIGHTS RESERVED

/*此程序仅用于学习与参考,引用请注明版权和作者信息!

/*

/******************************************************************/

#include //51芯片管脚定义头文件

#include //内部包含延时函数 _nop_();

#define uchar unsigned char

#define uintunsigned int

uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};

uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};

sbitK1 = P1^4; //正转

sbitK2 = P1^5; //反转

sbitK3 = P1^6;

sbitK4 = P1^7; //停止

sbitBEEP = P3^7; //蜂鸣器

/********************************************************/

/*

/* 延时t毫秒

/* 11.0592MHz时钟,延时约1ms

/*

/********************************************************/

void delay(uint t)

{

uint k;

while(t--)

{

for(k=0; k<125; k++)

{ }

}

}

/**********************************************************/

void delayB(uchar x)//x*0.14MS

{

uchar i;

while(x--)

{

for (i=0; i<13; i++)

{ }

}

}

/**********************************************************/

void beep()

{

uchar i;

for (i=0;i<100;i++)

{

delayB(4);

BEEP=!BEEP; //BEEP取反

}

BEEP=1;//关闭蜂鸣器

}

/********************************************************/

/*

/*步进电机正转

/*

/********************************************************/

voidmotor_ffw()

{

uchar i;

uintj;

for (j=0; j<12; j++)//转1*n圈

{

if(K4==0)

{break;}//退出此循环程序

for (i=0; i<8; i++) //一个周期转30度

{

P1 = FFW[ i ];//取数据

delay(15); //调节转速

}

}

}

/********************************************************/

/*

/*步进电机反转

/*

/********************************************************/

voidmotor_rev()

{

uchar i;

uintj;

for (j=0; j<12; j++) //转1×n圈

{

if(K4==0)

{break;} //退出此循环程序

for (i=0; i<8; i++)//一个周期转30度

{

P1 = REV[ i ];//取数据

delay(15); //调节转速

}

}

}

/********************************************************

*

*主程序

*

*********************************************************/

main()

{

uchar r,N=5; //N 步进电机运转圈数

while(1)

{

if(K1==0)

{

beep();

for(r=0;r

{

motor_ffw(); //电机正转

if(K4==0)

{beep();break;}//退出此循环程序

}

}

else if(K2==0)

{

beep();

for(r=0;r

{

motor_rev(); //电机反转

if(K4==0)

{beep();break;}//退出此循环程序

}

}

else

P1 = 0xf0;

}

}

汇编语言范例

;/*****************************************************************

;/*

;/* ME300系列单片机开发系统演示程序 - 步进电机键控正反转实验

;/*

;/*

;/* 邮箱:gguoqing@willar.com

;/* 网站:http://www.willar.com;

;/* 作者: gguoqing

;/* 时间: 2006/05/30

;/*

;/*Copyright(C)伟纳电子www.willar.comAll Rights Reserved

;/*此程序仅用于学习与参考,引用请注明版权和作者信息!

;/*

;/******************************************************************

; 步进电机步进角为 7.5度,一圈 360 度。

; 双四拍工作方式:

; AB-BC-CD-DA (即一个脉冲,转 7.5 度)

; 单双八拍工作方式:

; A-AB-B-BC-C-CD-D-DA (即一个脉冲,转 3.75 度)

; 一个取数工作周期,步进电机转30度

; 步进电机转一圈需要12个取数工作周期

;-------------------------------------------------------

; A组线圈对应 P1.0(桔色)

; B组线圈对应 P1.1(棕色)

; C组线圈对应 P1.2(黄色)

; D组线圈对应 P1.3(黑色)

;-------------------------------------------------------

K1BITP1.4 ;步进电机正转

K2BITP1.5 ;步进电机

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top