|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
C51步进电机转动原理. }: [8 D7 E9 f5 S- C
1 o7 G( X# s8 @, I9 ~- f
! D0 s3 A# Q# o6 G; M% o/*-----------------------------------------------
: | B5 K) i5 J% b 名称:步进电机* \& f/ }/ I/ t9 S# i/ C0 ^
修改:无
3 O8 t: W4 p% y3 W* g" |" j 内容:本程序用于测试4相步进电机常规驱动 使用1相励磁
) k% ?; y# G$ n) e% P% Q# T4 y- S: {/ e& C. q2 v. h' S7 i
------------------------------------------------*/8 y8 N+ |' N* d( ]2 A- V+ |1 ^
; A' C, r4 O+ E4 U, N
#include <reg52.h>, p3 {) s- U* S D
6 P [/ ]' k, T7 g% T
# S6 Y; m6 T+ \$ \2 }* ]5 ^ e* {2 |' S6 @- @$ S% k* ~$ v' I# B7 Z
sbit A1=P1^0; //定义步进电机连接端口0 A+ m0 D6 F% d6 y6 H
sbit B1=P1^1;& x, b; d0 z$ X( N6 O1 s
sbit C1=P1^2;
6 ?6 s" D" \5 C W6 Ysbit D1=P1^3;, |) @9 o# ~' X- v( d" c
9 \7 q( l# L7 P, p1 Z' ~4 l+ ~' D9 x
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
r8 j' j9 |/ ^; V) w#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电( e1 X C2 L! T
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电& [" J7 V$ G. ]8 v! u0 ?
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
0 d, K' c/ W3 c. b/ ?/ z* |5 |) J#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电
1 ^) `* g7 s8 ^$ H: Y5 R3 n8 @0 w( g8 d6 |
unsigned char Speed;/ V: d+ ~* p/ r y5 A) f2 R
/*------------------------------------------------
& D9 o3 g" |7 z8 ^/ I uS延时函数,含有输入参数 unsigned char t,无返回值
: s6 T: d( E* w, z# [7 F/ c unsigned char 是定义无符号字符变量,其值的范围是
G7 Z: T' M1 n% Y' t- E 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
* A" z- k6 W- k! H; J3 P% |7 c* f 长度如下 T=tx2+5 uS
8 q' L" Z% |8 H6 N------------------------------------------------*/! q" i' c0 F5 o' K
void DelayUs2x(unsigned char t)' _! e4 A/ e8 W' k8 f
{
) E: z& l" i9 e) P9 `1 J" A N while(--t);
% X X' U6 g( P% C5 y2 w# B}
" W) {) P% p5 r7 D/*------------------------------------------------& S5 F7 y* M+ h! k1 C
mS延时函数,含有输入参数 unsigned char t,无返回值4 ^; G, K9 W7 k1 C) n) ?
unsigned char 是定义无符号字符变量,其值的范围是5 x/ a/ N9 V" o, |! ^! q
0~255 这里使用晶振12M,精确延时请使用汇编
' g) N0 X5 U- U/ k, @1 }/ h5 C------------------------------------------------*/
+ d, W2 P& V. ]1 ?7 m& K |; b# Zvoid DelayMs(unsigned char t)
( e7 R0 Q" E, k{, t9 W, s2 ]7 Q8 E. k" y
6 _- e$ x- M: k p6 V# z& C while(t--)
2 ^) C! f8 y/ j- ?6 W' Z {) u S8 x- Q3 d o; u' Z
//大致延时1mS5 C* `& S; i* j
DelayUs2x(245);
2 w; i* J8 y K: a4 ~ DelayUs2x(245);' G- Y0 m8 j; }, b; R
}* g T9 [; n5 x, [' a
}# C$ A% l" L4 _
/*------------------------------------------------: M' B3 b$ K1 U* e e. j
主函数
5 K2 V$ K0 {* v2 K8 g4 M( R------------------------------------------------*/* g3 l7 Z- @+ b; J% {( X! P3 W
main()5 [' P% N2 i a. u+ H' f) {; w* `
{
4 W' w/ L8 p9 n: T //unsigned int i=64*16; //转2周停止, d7 G e' d5 V- I
Speed=5; //调整速度+ D6 p* K2 E3 T& B/ Z1 S
while(1) 2 A# K- g! @3 y5 T0 a
{ , y0 U+ | ^$ v) X" n
Coil_A1 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替/ y! r7 i+ f4 M+ _; h. Z% L3 q! B
DelayMs(Speed); //改变这个参数可以调整电机转速 ,
6 b( V7 C3 y/ X5 l5 T1 f //数字越小,转速越大,力矩越小
) ^9 U* g3 M0 n0 e% n Coil_B18 l% J. ^$ y, t) K/ y) F
DelayMs(Speed);4 K+ \ I) L/ `
Coil_C1
) v6 n4 N5 |. M. Y5 c4 z$ j2 f DelayMs(Speed);% F% o9 |& F: T7 x0 W! u
Coil_D1
7 T5 H& d0 z3 r5 U5 @0 X& f" f5 N- w+ d4 l DelayMs(Speed);
- \+ |) J$ a2 P" T1 J. h* T }3 Y% `( I7 `8 M) v3 C# \
}2 O8 D5 r, Y/ M f. ]6 ?$ u& @
( `: ]$ X/ w0 B# [
; f7 c6 ^( p" v3 B
% O) M1 A. a: t1 r6 u/ ]
|
|