|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
L298n驱动步进电机源程序 正转 反转 调速 两相四拍八拍都有" g9 y4 b* Q% _2 h2 \# y/ Q7 q
9 ]& {! c8 p$ \* Q/ K3 m
0 [$ J) R2 o$ B0 |* s. D; H* V m) P7 `+ ]8 H7 {% g: B
////////////////////////汇诚科技////////////////////- N. S. J$ B3 X/ x0 V0 `$ n! L
///////////////////步进电机调试程序/////////////% d) g8 V8 Y$ a
, S4 p/ K$ O7 |1 j* _9 P7 B#include<reg52.h>
7 U: p- [2 W) t; e% c9 z A) E1 o9 R8 e* s# Z
/*****P1.0=A 1.1=B 1.2=B' ; P1.3=A'****/
( W& z, Z/ K9 U//////////////////////////////////////////////////////////////////////////////////////////////7 A( h' p) E& S
/*******************************正转数组**************************************************/
) G" y# N) \: h9 d code unsigned char runz[8]={0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04}; //两相四线八拍工作方式; @$ g% o1 j+ p9 z# [& t
/*******************************反转数组**************************************************/
7 q* ]+ Y$ X7 v0 q( n# z2 _" v code unsigned char runf[8]={0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05}; //两相四线八拍工作方式
( I/ N6 \9 n8 O; @: }7 sunsigned char keycan=0; //键值
1 v2 R# J8 r+ W* iunsigned char s,i,j,k,z;) \- b; S4 l" z: L" r+ Z! [! z
9 {# y) O4 w' h) ]. H; g7 b
int y=30;//定义转动速度,数值越大电机转速越慢反之则快8 d, k! w# ~' a: R
% f$ W: K. V2 ]1 k/ h
sbit P2_0=P2^0;//正转按键 [) Y! J: H6 T/ d% O, P1 K; F
sbit P2_1=P2^1;//反转按键
( I1 J: L. v* z y7 g4 ^2 x( Vsbit P2_2=P2^2;//电机加速' {$ v$ A: `+ e* @- ~* X
sbit P2_3=P2^3;//电机减速$ J1 U0 {$ G4 v( z1 b# _
. m; \- p, P$ Q$ ]* z7 a6 E
void delay(i)//延时函数
. P" c- U5 t [( l0 B4 N {
" H- M3 ]( L* Z for(j=0;j<i;j++)1 p- W. _) q# i5 h8 U& d
for(k=0;k<250;k++);5 r9 E0 V- j0 a; }7 q4 l
}
( A4 [/ K- t! J4 F8 |. `0 S2 D) ~
" r8 L5 p! W1 t# A* N
& @+ e K$ ]. t$ K) J _
* i% T7 o7 H7 X/ o3 Z% Jvoid zrun()// 正转运行9 e- q% B# L# N) e6 Z+ Q* }
{
9 U' m7 X) N+ Q0 w6 m9 R$ Y
Y$ v; m3 e# c" u# d for(z=0;z<8;z++)7 `+ i$ B% n' y8 i6 E: s
{ * a3 q7 ~% X' I+ [+ C" d
P1=runz[z];
K6 V" g: E: Z; ~ delay(y);
2 t1 K( I* m' p6 w3 I }
5 s: V7 p& ~$ j$ }# N* t2 o; W}& S! K) x) }: p2 B, s
' J- a3 c+ G# k& J; d. Q, W# ^void frun()// 反转运行1 X1 n* H8 @2 x1 o
{% _+ ?+ z- J/ A# \6 W
for(z=0;z<8;z++)/ B* o3 a- P; O; n! x. ]
{
# `: k0 L, l6 |. R4 I P1=runf[z];& F8 j h# F$ o, x
delay(y);1 i# @( c/ k- l/ w0 h% c$ m
}+ U; ^5 ]! z% \( B; Q4 M
}5 C1 q& |; F* b. F3 y
% @* j. U$ ^ p6 {: }% ]. \$ b6 a
main()# V0 y3 ~# ]" ?) T9 B" [- `3 q
{
- O& J% G) }' h& \6 y( D while(1); E+ S8 l- l. v. _
{
9 O! s1 S S0 l$ A, Z$ i/ z; c if(P2_0==0) //如果电机正转按键按下
J9 o, b# J' I8 L) e {
- ?6 M9 T( b! }' C' Q5 g% P w; g keycan=1; //键值等于1
3 _0 r" C3 Y7 ] }
+ O7 y" s; E- Y, |& B2 F3 R if(P2_1==0) //如果电机反转按键按下( P) h* ]0 F- e1 U0 c
{/ D- \( W5 B F1 t3 h# }9 ^* d2 C( ?
keycan=2; //键值等于29 l- O& x+ {; O; {* m. @( i3 m' \
}
; k) m7 D- w+ t2 i0 y8 U switch (keycan)6 s: X0 E; ^( s0 _7 m! A% I
{' [5 p1 h7 I" n' h; d
case 1: zrun(); //键值等于1 正转
: b9 T) u+ ]! |9 m break;
8 W% k- @) I( Y" N2 @ case 2: frun(); //键值等于2 反转' ^( M( O* \" N5 R8 K
break;
% `( W6 X) P3 G5 M+ M' G5 o" ^
: V4 L7 b3 S( c }1 S% o. E6 k" \! B/ _
: ~* @! }) V0 m" p. D- `! W if(P2_2==0) // 电机加速9 h$ u- T3 B0 l( n# X
{$ ^' T% l& }1 ?
y+=5;* o2 E# @( C4 {9 i, s% X0 e; _
}
; w8 S: C& m5 a; R4 E* K if(P2_3==0)
7 B* C" Y+ V c/ _) I { // 电机减速! h, X3 z8 O1 Y" }9 `* b
# ?/ y/ y0 A% W/ ^/ T. P
6 F! N: \" q. n# \…………限于本文篇幅 余下代码请从论坛下载附件…………
0 X; X/ ]( s3 p& ^8 r7 z% t7 U& w" q# k$ Z" Y' q* a
/ ^7 K' C; O% M0 ?6 ]* R/ p
|
|