|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
L298n驱动步进电机源程序 正转 反转 调速 两相四拍八拍都有
" n% o$ @3 V0 Q+ t
) R+ Y# ]( t0 V/ Y
( O; \+ }( ` q( [
0 b" ^8 j) H1 ~& W////////////////////////汇诚科技////////////////////
5 U0 R% z8 w; C% M* q///////////////////步进电机调试程序/////////////
0 O2 j: D5 r+ W# v, E; t C- I7 _: e) l6 ~4 ^
#include<reg52.h> 9 B8 S3 \5 c' \3 j/ e7 W% a6 e
# J( u; V, y7 A1 ?% K* \/*****P1.0=A 1.1=B 1.2=B' ; P1.3=A'****/
+ g6 q7 ]( O8 G" X: d//////////////////////////////////////////////////////////////////////////////////////////////. k; o1 C, x4 r. B; N. q( p# P9 J% K
/*******************************正转数组**************************************************/
8 D$ C, B* J& I: C, Z! a code unsigned char runz[8]={0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04}; //两相四线八拍工作方式
, t" B' m8 l3 @; ^# _% J/*******************************反转数组**************************************************/
0 S7 d3 v" T; ^2 O) } code unsigned char runf[8]={0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05}; //两相四线八拍工作方式2 Q$ L- T! \( a; w! }- J" r6 m
unsigned char keycan=0; //键值
' d8 ?1 d v0 D; r. runsigned char s,i,j,k,z;
2 e; P& b3 \8 X* `5 @6 V/ w# ]6 ^$ Z- b Q
int y=30;//定义转动速度,数值越大电机转速越慢反之则快! M- [, l" L+ A7 x
/ B5 h+ S( m- ? Z0 [/ _+ b- c
sbit P2_0=P2^0;//正转按键
, H4 k" `3 k, N6 Y4 esbit P2_1=P2^1;//反转按键* C Y4 `, v' y/ u
sbit P2_2=P2^2;//电机加速
/ V$ M4 ?5 @: Gsbit P2_3=P2^3;//电机减速/ f- `' @* u: r; X: L0 F
) m( `$ s. A+ O7 a" h7 `
void delay(i)//延时函数
4 ]8 k5 a- _8 ?( A" g# W$ q0 y8 H {* ^9 E; L0 e' E7 S( x
for(j=0;j<i;j++), W8 X. V0 p& P) x* W- N9 ~2 m6 G4 F @! j
for(k=0;k<250;k++);
7 y% ^, `# u! W/ q6 v. V& N } g V* `3 P/ M& f# L* h& j
2 j* Z/ y# A( {7 ~: }
4 Z7 k$ a# A* g& K: `+ l4 {
) x: o* O7 ]! k- s
void zrun()// 正转运行
1 R) }0 Z3 I; w- D: h1 X0 ^5 P{- X* t# G- L; Y. M$ |
9 J7 l- J! |; C7 ?* Z for(z=0;z<8;z++)
0 k8 q0 T! ^+ F! e6 E { ' h* ?9 g* G9 A5 P& {+ X* c/ t
P1=runz[z];/ `) h3 m* A- S' ~
delay(y);( V1 V( T; E5 v9 |) w0 G
}- N: R: b1 U$ S* L: {
}
; ?, z' P+ }& c! Z$ l! M5 x1 R6 f0 \# ]- N: Z( l& @
void frun()// 反转运行
' K( N" N! p; {$ S5 u3 ~ {
& v, K$ k. G/ H for(z=0;z<8;z++)
) }; _. i, x0 X8 y {4 \% |8 N$ N/ N% k% m
P1=runf[z];
, i) D' K( l' K+ i delay(y);
* r* x( J" y1 q1 Z8 o# d1 w }2 H) }! L5 g$ K
}: y3 D% C8 V# W: y( L/ j# d9 k4 W
" x& G0 [. a; w& y' gmain()) h) i1 P' e1 m9 X$ {7 V
{; e3 N7 z* ]0 M3 E( T2 @' u
while(1): r6 L/ u( D1 w) X
{: d) n& T0 X1 h8 X: I& C6 r
if(P2_0==0) //如果电机正转按键按下
. F0 g; m1 w: P6 K! [- v {. u1 K2 g# m2 _) o
keycan=1; //键值等于1
6 m7 t, i( b: h6 K }
0 Q. ^# Q5 w; j if(P2_1==0) //如果电机反转按键按下) l o+ T+ r/ |# M: C1 ]1 g
{$ z6 f3 i" t1 f+ W( }
keycan=2; //键值等于27 `% ]3 m- J! L6 i% g4 V
}
, Q9 c- ~$ l; O9 W switch (keycan)
( o2 Y, y& Q' ~' d {! e z; N {
% R4 K% c2 a7 U) J' R1 ] case 1: zrun(); //键值等于1 正转
% `( l1 O- \, T, J break;; _ C9 l4 ]- v
case 2: frun(); //键值等于2 反转
" V7 A8 f' [: Z3 F break;- l% T" Z' U3 u: d9 E2 s
# z5 K. z3 t1 g7 M6 l7 t: p
}6 W3 O& x/ E% N/ A. S4 Y
/ G: t! q6 L. ^
if(P2_2==0) // 电机加速 g* N- @) ^3 {3 e
{5 o6 g8 Z5 M* Q' J- B
y+=5;
( H2 k/ D0 o I) _ F. { }
- o, \; W. c1 p$ a9 ^ if(P2_3==0)" b$ s" b4 I, ]( `" t# C) v# ]( k
{ // 电机减速
! j9 o, Z6 f' \ H D+ a
# X% D8 z% S5 b1 `5 r' X$ @8 B, W2 {& v* C/ g7 J) j" z {8 Q
…………限于本文篇幅 余下代码请从论坛下载附件…………6 X; }2 @2 x q$ Z% f8 Q
9 j K& L/ f/ g3 x( l: v6 S8 v+ t1 b
& `/ \5 p9 G9 W4 I8 M9 p1 N$ ?) o
|
|