|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
L298n驱动步进电机源程序 正转 反转 调速 两相四拍八拍都有
3 w- T P! Q* u# v7 |4 a( _) |, R1 l( }1 w
8 H+ t9 g8 k; x/ N
. ~3 s* U8 L7 @& B////////////////////////汇诚科技////////////////////7 n! `) l( u6 y7 W5 |0 D8 \* U6 h
///////////////////步进电机调试程序/////////////: T v/ M/ ^4 g" Q& |. v
) p% g( h7 m2 X9 O" _( f
#include<reg52.h>
& Q& P* Q0 ~1 Y3 n
3 N/ _# S+ C' U+ }" b. A S0 J5 u/*****P1.0=A 1.1=B 1.2=B' ; P1.3=A'****/ 0 e: a, ^1 z$ f( L/ e) v! q$ q# t
//////////////////////////////////////////////////////////////////////////////////////////////
" |+ ]: h, I# x; O/*******************************正转数组**************************************************/1 o3 C6 u' r; x: ?2 X
code unsigned char runz[8]={0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04}; //两相四线八拍工作方式$ t7 _: f9 E6 R2 V: N
/*******************************反转数组**************************************************/
/ F. W4 j, c* G code unsigned char runf[8]={0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05}; //两相四线八拍工作方式, B9 o' D6 F+ G% Z: i7 w2 D
unsigned char keycan=0; //键值4 O9 d( Q+ l. F7 G; h
unsigned char s,i,j,k,z;0 y) L; z0 v3 T o' D
* i+ A$ c. p6 |9 K6 e5 |- y3 Y; eint y=30;//定义转动速度,数值越大电机转速越慢反之则快
6 ?1 M& f- R* o3 u: Y7 @) i. f- y; K4 m
sbit P2_0=P2^0;//正转按键
/ Z/ d, m1 `$ K% S" L/ `& h# ~sbit P2_1=P2^1;//反转按键$ x( R* @6 l1 m* F0 u
sbit P2_2=P2^2;//电机加速# ^% c; ?8 d$ K! y7 @+ b) a
sbit P2_3=P2^3;//电机减速
7 c; E' E7 m) m' @3 O4 |) Z1 q& R
0 i# T" Y& P- V% Q' w* `void delay(i)//延时函数
: `& m0 E" J3 g* t { Q5 n) Q+ }# h0 A
for(j=0;j<i;j++)8 }+ ?5 t' ?+ p+ A% ]+ x2 c5 r- J
for(k=0;k<250;k++);0 D, i* g% [! Y' K( F. E( D% h
}5 I1 o0 V' X1 J6 U* E
2 i4 k5 C" A4 _. _: i+ c) n1 D/ |! E
5 e$ s- {2 O+ C
void zrun()// 正转运行
4 i( Z9 T! }0 s4 @) p0 i2 C8 ~* x{
2 }4 \" i. W8 s# D b2 m# C6 d" C: u5 _6 g
for(z=0;z<8;z++)
# v1 O, j ~ T6 |2 h3 k {
0 }1 z+ L( o+ o2 k# w4 V, x5 y P1=runz[z];# x" h7 g1 K; n( b- q# |
delay(y);
6 L5 E$ u/ s6 V9 k! }& d' l, y6 p6 P9 Z% z }, v% F Z2 h! ~# J
}3 T8 I0 G# @* }6 D9 r/ `/ P/ Z
* ?2 r2 ^# Y6 G; G' A. x. d( k0 svoid frun()// 反转运行1 v$ M/ T; b2 N* J
{
7 ]. I6 s( l( |2 r for(z=0;z<8;z++)
( b6 w; u0 ?" ~/ v/ E4 L {9 m3 Z4 J: W2 U; Y0 M, K
P1=runf[z];' R5 U" n( a8 y& g9 M' Z6 ~
delay(y);
" ?0 K3 Q1 ^: d; Q- }9 u }1 j3 X, P: W% y4 ^
}# {3 P3 [+ D% ? w! d, @5 b% r
4 O6 s4 m1 H- P) _ }main()6 g+ S- K2 X% y3 `
{7 I0 x8 C7 H( M& d- I; V2 c5 D
while(1)
# t. n' k; F- l$ n5 g {
4 t B" l4 g7 K# n, F3 x' l# m if(P2_0==0) //如果电机正转按键按下
5 k- _$ w# A5 ^* q! L! d {" H( y0 \1 _5 G7 O8 W
keycan=1; //键值等于10 l# F1 N1 c" c- X `( u$ ?
}
* K Z( h) o) _1 g2 ^/ w' y0 [3 l if(P2_1==0) //如果电机反转按键按下) c* ~9 M7 r1 c5 C; ?
{
4 Y9 {( J& s4 O$ b keycan=2; //键值等于2# J- u3 z* s0 J, @4 g7 J8 |$ }
}
" Q P. N- f* G; Z switch (keycan)$ r) C6 j+ Y5 A5 ^. s7 X& A
{! F- ]* R6 w& H- X
case 1: zrun(); //键值等于1 正转
5 Z) r4 s/ B% @" r break;
. u- `/ X, F) D4 F$ c* `$ W6 ^1 ? case 2: frun(); //键值等于2 反转
; d n7 o$ c9 c! V1 y7 Z break;) y2 |1 {) S$ u* J3 x3 W
8 v6 O2 P) z& X4 n5 W }
3 s2 N: k: A* K5 v7 l, f) ~2 ]* w* ]' }3 e. X5 U
if(P2_2==0) // 电机加速9 _7 N3 ]/ z/ n R
{
7 Z# C& S* e* }0 S% V9 q3 d y+=5;) E9 k0 L0 B4 Z3 m
}% R; r7 `8 q* t& E3 k( ]
if(P2_3==0)" q* R$ z4 S* h- c- @) C) ^
{ // 电机减速
3 q+ W3 ~7 _8 ?5 i( @3 Z+ e' V8 D$ \; J2 z+ O/ w: N; U/ v. K6 O/ D( e& Q
% M' H! i+ ?' R! q. Q) `$ V9 \% W…………限于本文篇幅 余下代码请从论坛下载附件…………/ |- B: r6 W' q7 }6 k
+ a# ]6 r) W- Q) Q1 N; G0 s
+ ~' a+ k+ N4 K" i" D* J |
|