|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
L298n驱动步进电机源程序 正转 反转 调速 两相四拍八拍都有* S% J! m- p d% ?, I" e6 h
, _+ s3 d j; \1 m( V* `
' P4 |% I8 k" L- V+ C S( e
4 W0 |& P8 w( ^2 ?/ n) E' u////////////////////////汇诚科技////////////////////* T8 t# ^4 g9 w' c8 c* g( L- U
///////////////////步进电机调试程序/////////////
9 P: D2 `6 c# ?/ l, S5 W5 B8 ^6 f+ d8 M/ A. [& o/ o
#include<reg52.h> 6 i: _( K. C1 h, ~* M
) L- G, y7 [. j: J/*****P1.0=A 1.1=B 1.2=B' ; P1.3=A'****/ 5 K% ?6 s2 C, E5 E1 T
//////////////////////////////////////////////////////////////////////////////////////////////
8 d2 f& a, x* K' t/*******************************正转数组**************************************************/
- T, i9 j+ t1 K0 t! J code unsigned char runz[8]={0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04}; //两相四线八拍工作方式# J, r% w' O3 T
/*******************************反转数组**************************************************/+ {( n% r7 O, u$ l4 c: {
code unsigned char runf[8]={0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05}; //两相四线八拍工作方式
4 `3 C% C" `- G$ U$ ?+ funsigned char keycan=0; //键值
1 ?) ]7 K5 s5 D) G3 S* yunsigned char s,i,j,k,z;
$ ]& F3 f% F; U y! t
+ |( j) Z7 ]" ], Cint y=30;//定义转动速度,数值越大电机转速越慢反之则快
. y2 A- @" E; d, P2 H
8 R# X) ?# `2 J w& k7 hsbit P2_0=P2^0;//正转按键* g& c" j/ ^- u8 r2 A1 O6 c
sbit P2_1=P2^1;//反转按键
. n5 B" O7 b* M& f5 zsbit P2_2=P2^2;//电机加速( ^/ H# K6 x* @ q. w3 Q0 U0 |+ Y
sbit P2_3=P2^3;//电机减速9 z u! t2 _# C8 B: _
/ T" ]3 F. q8 y5 i; g5 }/ z. pvoid delay(i)//延时函数 Z% l( S# R ^! F' M
{
0 U0 S5 I4 W7 N& i for(j=0;j<i;j++) T( o' N v4 w0 T; z
for(k=0;k<250;k++);
9 n0 t. B0 t- l" J }) A* }7 M9 B0 y8 j1 M
$ k( w9 o6 V$ }- k7 }1 |; Y$ d' I' l% y" ?& {: b! `2 {
T. b0 s5 E6 ^9 N7 h$ y; B9 }' d) y
void zrun()// 正转运行
- t6 o8 c6 B7 M* |7 q/ ?{
% G% p9 R6 ?' c1 L7 r8 ?7 q& S: @/ Y4 j2 C* f
for(z=0;z<8;z++)3 J e! T) q/ a7 V7 Z
{ 3 [& I7 I" t1 h! S) {% v! V
P1=runz[z];# |3 i% h/ b; U; }. A
delay(y);+ @, m6 w* K9 W; a
}; n& e% N- L3 p! A
}
% o. ]( k3 i2 D6 j+ C. E
+ v. E! s6 j% n1 u- }void frun()// 反转运行
! c* T1 L8 f j$ n$ t( r8 E {
# |8 {1 A- U4 _; D0 V3 Z5 o for(z=0;z<8;z++)
- y# S; |. r; @" ` {- {) _6 H: M3 S& P# X
P1=runf[z];1 ^0 Q6 d$ t+ c6 l# c" q: P
delay(y);, I) H* ?# ]! q
}
9 a( n+ }1 `4 w1 @+ V9 N# I}
8 ]# j. h( A9 X% T2 ^& Z; Y( |6 o
3 e: b9 F! ]# ~+ @main()& b. f% @7 ~! n. L" E9 [( g
{
% C+ W! d7 ~+ f1 I' X while(1)6 l% ~7 {6 a5 _4 {& v
{8 b0 M) U/ c" z
if(P2_0==0) //如果电机正转按键按下
6 o1 G$ o7 v2 H) _ {
) [" z4 |8 o, g M. A( m keycan=1; //键值等于1
+ B" d4 b" e# p# L. {9 P }: Q( X( s5 l. r" y+ T
if(P2_1==0) //如果电机反转按键按下2 R% K0 Z. m" ]7 B
{! Z6 f6 d; N: k, e1 k; @. `5 k' }' }
keycan=2; //键值等于2! h$ s' o; z& \) \; b6 k
}& M: d' ^' ?% _' T
switch (keycan)
1 k+ `0 k" C$ m8 a" w4 F# V3 n {
5 C* i' j. G3 r9 X case 1: zrun(); //键值等于1 正转
; t7 O' E' b6 Z: P: K* } J5 o: E break;
; v- \( s; n: _! _* B case 2: frun(); //键值等于2 反转
( J- l( {# u1 v: E" Q break;7 n/ i' v+ m. m) X
% b- d+ {# A! _+ f$ b8 B ^
}
& w! [; O$ k! }: I' M! g* i/ w) Y3 \$ L! b6 i
if(P2_2==0) // 电机加速# X0 i/ [6 R$ M D3 ^% C
{
! r5 {9 u: l+ T y+=5;
# | x' _( M4 N }
: l) f9 j! [0 k7 i1 }; S' i if(P2_3==0)" U ^3 }' B; D/ i3 R
{ // 电机减速
! T" X& s4 n1 g. u( P# N
; r4 m$ H; c7 d n) {4 x0 W
; T3 e8 G' K0 s6 U…………限于本文篇幅 余下代码请从论坛下载附件…………: q8 s* D4 k Q/ w: U& A
2 c7 U& h) J8 v, X0 P* T% v; W
8 b+ P9 {% a- \* @1 `$ A8 b$ d; B8 g |
|