|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
L298n驱动步进电机源程序 正转 反转 调速 两相四拍八拍都有
* W( y _" k& a* R9 O# o
4 F- E" Z+ ]3 _$ T" }( Y# P I3 \( q0 `! i0 U
0 ?/ t0 u) ^- e' ^& f////////////////////////汇诚科技////////////////////& x' L" W0 R( `
///////////////////步进电机调试程序/////////////$ `' H! p+ E3 y8 ^0 L
3 b: ]5 T% R* p# @/ O& \; g& }( E& `#include<reg52.h>
9 R+ C6 D( [% S9 K( |* x. P B
9 g9 F+ i+ a/ {, z. e: i/*****P1.0=A 1.1=B 1.2=B' ; P1.3=A'****/ ( m5 R' y! }8 N+ ~! x, V
//////////////////////////////////////////////////////////////////////////////////////////////
8 Q3 @0 B9 |! k: i3 z3 ?/*******************************正转数组**************************************************/
: J3 M) `1 R7 ?0 n" f [1 v code unsigned char runz[8]={0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04}; //两相四线八拍工作方式% @/ ~# M- r4 G& i% P" Z
/*******************************反转数组**************************************************/
( t% u* O6 T' p code unsigned char runf[8]={0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05}; //两相四线八拍工作方式7 l! Z6 T: r8 [7 U/ [
unsigned char keycan=0; //键值2 H. O$ a$ X) h) D
unsigned char s,i,j,k,z;0 \, ~& K, D5 s, V* l
$ i# ~3 @9 b6 L0 Z0 m) ]
int y=30;//定义转动速度,数值越大电机转速越慢反之则快
5 T4 Q: g, I7 {" O- a& ^, ]3 z6 _2 Z3 W$ j5 l+ ~' w% T
sbit P2_0=P2^0;//正转按键
) x' m) C8 G6 W( W6 R7 j Asbit P2_1=P2^1;//反转按键
% O: [& d$ n$ ~" r" _' ysbit P2_2=P2^2;//电机加速
9 y! @3 x X& B( N7 F2 Q+ Msbit P2_3=P2^3;//电机减速
* _% C0 G' h! n9 _
% F% e5 K$ R! n. Y& R$ J; nvoid delay(i)//延时函数
! ~9 ~! o' z9 y' D& O( o4 B {
) V0 s) Q0 y6 q! t5 C1 F: C% u for(j=0;j<i;j++)$ k+ g O) } v: Y
for(k=0;k<250;k++);
) U! `8 O. u2 C3 A3 [ }( c: g3 M- }" w2 [1 o
1 B" a3 ~: C# X/ J% E
$ g8 r9 s" }# c8 j; j
# p% M0 R: @5 z D! Tvoid zrun()// 正转运行- ]$ N9 r# L/ J, ]! h1 e; D" ]" `
{2 P6 t& v1 V/ z2 T0 @ i' P$ y
% ~ ?& |. S+ f& k# W/ E
for(z=0;z<8;z++)) V% b1 q3 Y- s- o8 _
{ . T. v+ P- c* i' Y
P1=runz[z];
0 D4 I' f8 O( P% U5 X" N" { delay(y);
3 f2 Z( e/ v0 H: T! r- _, U }+ _1 D; q! t% K5 P4 y. |
}$ v/ }( H8 v Z- D( r0 ?) z; ~* H
8 i* `6 P! M% ^7 Q3 ?+ ^
void frun()// 反转运行
4 M/ g8 Y0 Z( m7 C- _ {8 T' H- |1 w5 }4 ?) U5 f" v
for(z=0;z<8;z++)
& a9 a* h$ }3 k( k4 n {
: k2 Q' o2 P! W$ j% [% M P1=runf[z];
& S2 k) l! C: b6 W delay(y);
8 j) P D7 `; {# G5 J9 d. G }
. `7 t( K" M J) U}% e- _' M# G1 P+ `
) N# Y3 x5 x$ E7 o
main(): ~" h% w8 E8 Q
{6 h3 f' R t1 [! x& K
while(1)
6 Y7 R# H W, r7 ?: C( @ {
: k* ~2 w! G7 ?& U$ G# a if(P2_0==0) //如果电机正转按键按下
. \2 s: f$ G7 Z$ ]% h/ q {' `8 @5 q* Y$ X' R* R( ~8 ^/ J
keycan=1; //键值等于1
2 O" w( P) I5 o ]# K& K0 Y9 ] }
y1 V. T% U7 p( Q if(P2_1==0) //如果电机反转按键按下
1 C* ^1 U4 j: l$ M( d* Z* d {' g2 B E) [5 p/ Y: M: I& u
keycan=2; //键值等于2
j, S2 h# R/ F# X8 }5 Y" C }
3 ~3 a/ |6 H$ [4 k8 S switch (keycan): C6 [, m9 N# C4 e
{3 P" T9 z& v% l) N8 w
case 1: zrun(); //键值等于1 正转6 X7 }6 {4 y' a2 ^/ r
break;
# ^- @% r# @& t, a: m6 u n# X case 2: frun(); //键值等于2 反转$ I: l D" Z( M$ S5 p" c; k$ ]
break;5 i5 j' j% V+ O1 z' C
! z: ~ |2 a! k& x- G: ^6 G
}
2 e5 k+ c6 x" h/ Q( R F9 K1 j' V% A% C9 {( O% d0 Z! \3 x+ g
if(P2_2==0) // 电机加速. j! S4 A+ F2 y0 ~: R
{
( ^! i) ^+ ?: v; Y y+=5;
$ ^7 y3 d& P0 D" ~) h5 ], L }
# J6 N9 A4 c! V% l" [$ j if(P2_3==0), F" M& A. ?9 l
{ // 电机减速
* x$ ^* K. N, z
9 R$ }3 H- e& ~# p, I% d/ U! o* t( `* ~3 L$ m$ i# C- o
…………限于本文篇幅 余下代码请从论坛下载附件…………7 \- O% Z# F% t
# r- {5 T, m* M9 q0 d0 s& w$ V" M4 E. L; Q
|
|