|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
C51步进电机转动原理: R* E( C4 P" ^9 w9 p) R
' w- ^- a" c5 \) \6 t3 W
# G3 W0 [7 y" v/*-----------------------------------------------1 Q6 }" {& G% h' J2 ~
名称:步进电机8 F& a5 o* Z) Y, a% i
修改:无
K6 R3 S1 |) I4 F r 内容:本程序用于测试4相步进电机常规驱动 使用1相励磁
, G: r" k( L2 g; {! `; r3 s( i& H7 X
------------------------------------------------*/
/ ^) F4 S( y/ }( M6 |: i) I5 c4 T% |4 Z- b, [4 o% I8 R( G+ }
#include <reg52.h>
, X1 r8 h# { `- F3 C
0 l; u8 |: O5 u: A5 O& Y+ s) V* n' p5 I' G' w
% q4 Z# o& u: y0 ]4 d: X% m0 |sbit A1=P1^0; //定义步进电机连接端口
# n2 i0 ]( |" B/ J% Hsbit B1=P1^1; D. i6 Q0 L% [6 y
sbit C1=P1^2;( ~2 y U# D8 z3 R8 h" Z) W
sbit D1=P1^3;
2 o' G% V0 @, b/ j' a y* `6 W& b9 `2 j
" o" B) e7 v: L0 H0 z#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
8 X+ A. p% G1 |6 m! |8 h9 a! E#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电) B% X0 ?6 f- G
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
1 e0 L7 j# e) x+ w+ R) d' t( w#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
, M. I3 g8 `# q) `. K" `/ C- [#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电
2 n+ l8 h) G' @* t3 C& ?$ [# F8 s1 D& u; H$ d
unsigned char Speed;
0 C$ t& U: C, c0 L m2 \/*------------------------------------------------. Q( K( _: M8 |, i( A% {" x
uS延时函数,含有输入参数 unsigned char t,无返回值7 ?7 B: w! v4 k+ h
unsigned char 是定义无符号字符变量,其值的范围是
8 P1 c& v0 l1 n4 w9 O# j 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时7 I% J& \8 l0 Z& P9 k: n9 M: B% L
长度如下 T=tx2+5 uS # [- t" E, L# y# w0 V( i
------------------------------------------------*/
5 b5 @8 `+ [5 e, }void DelayUs2x(unsigned char t) N* k/ w4 I: ?# O) |* y
{
! m" G0 n+ y1 e while(--t);7 P8 f' y' M* \% C0 b$ T: @- e
}
' `9 `& T4 Z4 g! |2 U" s' Z A/*------------------------------------------------
: l5 `' U9 ]& z; s5 F! ?# o mS延时函数,含有输入参数 unsigned char t,无返回值: l6 M) q3 n6 C. N% K+ F7 ^2 B
unsigned char 是定义无符号字符变量,其值的范围是 b9 e, j( l# H2 A7 u# L
0~255 这里使用晶振12M,精确延时请使用汇编( J W7 x6 M2 i, ?* h
------------------------------------------------*/( o7 J4 _+ a) Z; C3 u
void DelayMs(unsigned char t)
- Q" }6 h# O' K2 k{/ C- B9 F1 P" l8 ?! D6 n4 ?
8 y# g2 L& H X0 R" G
while(t--)7 [8 p) g1 Y( j6 Y* h% K. F
{
) z5 P* y# I2 u3 d' [0 w: R c //大致延时1mS( H+ U* w: v2 {& ?( G$ l& Q+ u
DelayUs2x(245);4 k2 i# ]0 }6 ~' s! t3 V
DelayUs2x(245);& `' P( Q4 X/ h$ g
}8 k9 q: |; n' D/ f! W
}9 r: O u4 k' ?: R9 N
/*------------------------------------------------, [/ A2 ^4 D: z2 J
主函数" `5 Q3 J6 b$ G2 J- `
------------------------------------------------*/! ~# B' _: s# N5 Z) ?5 d3 [, i
main()
3 v& e. m5 M$ J' b/ D{
: n; q. s8 U* n8 Z$ s; x, l //unsigned int i=64*16; //转2周停止
) N& Y+ Q& ^! ~$ m" u5 x Speed=5; //调整速度
. Z l- `* A) C5 Y7 u- A while(1)
$ z- m0 G% G8 R$ G- }8 U7 R {
9 Z" r% S+ f8 {* i- e: } Coil_A1 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替: j- k: H8 \ D7 ^& W) g3 A+ P
DelayMs(Speed); //改变这个参数可以调整电机转速 ,& h8 e. H' W! e6 c) \7 K3 ]/ ^
//数字越小,转速越大,力矩越小- d& g4 }% ]' {- }& M4 Q0 U% X
Coil_B1; @* a* ]) A6 M) Q/ C
DelayMs(Speed);
5 D; \* a, u% _8 W7 x% N( B, d Coil_C14 [! \3 U9 t J+ g( S" h0 H
DelayMs(Speed);1 I! v8 S( X) q$ p4 _
Coil_D1
( ^' W' U+ w" u3 l5 D6 W' u; p$ } DelayMs(Speed);
1 H4 P, z" G* }1 |+ N! F+ b6 V6 b# g }) H: B- ~- Z; A7 Y5 _
}
! |+ r. @: U: K' `* p, F3 h7 v k- ]
- T! W. V! Z0 y8 t" u) L! B( t% }+ M* j2 z/ J
8 _% X+ B. U: P1 b |
|