找回密码
 注册
关于网站域名变更的通知
查看: 450|回复: 2
打印 上一主题 下一主题

C51步进电机转动原理

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-11-29 07:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
C51步进电机转动原理7 x4 H" a! x; k; s3 \" r
% o2 \( m1 B9 o1 c% ~
" g  y: X8 O+ t0 h+ @; _
/*-----------------------------------------------
' o8 t4 H+ N2 j# y  名称:步进电机
8 }1 i; G+ _5 S0 |  修改:无# A8 [% U8 ]8 A
  内容:本程序用于测试4相步进电机常规驱动 使用1相励磁2 J) O, R- i" O2 C+ M/ B

$ O9 [1 Z6 y. o) y' [5 ^ ------------------------------------------------*/3 {3 M8 `$ G- w& b0 \) d6 l) P

4 ^; T: r7 D7 N! W- J#include <reg52.h>; h7 D5 x7 D; e

* ~9 o: E8 ?" P& w
' _% C" G# h, X
7 ?# g+ ]3 y3 S. {- n  {( `+ Ksbit A1=P1^0; //定义步进电机连接端口
- Q$ R# `' d4 V  U) Jsbit B1=P1^1;
9 J! D" \' ~, I/ R' ysbit C1=P1^2;
: R2 F: q$ Q# Q1 psbit D1=P1^3;
8 U' R/ w: a: f2 F/ {& \/ y" ?( }* o2 h! {
( U3 w, O: y! z' i& ]$ w8 C2 b
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
: J5 a) e# E3 V* M: m  Y$ g- h6 n" I#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电; V: }% R8 ], ^  ]4 B
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电; y; h, A6 A, {& {1 h- M
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
% x- g# D) F' ?$ Q0 o& K#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电% @3 e) I: g$ E* p2 |4 x

6 x  U4 h: c; U  U2 j( j( T* @; Bunsigned char Speed;6 c$ M5 o9 b. |7 T
/*------------------------------------------------
# i: t9 S8 }, F1 a6 ?0 l$ p uS延时函数,含有输入参数 unsigned char t,无返回值
6 Z) B* M1 B7 m( j4 _- V* n unsigned char 是定义无符号字符变量,其值的范围是
( o! Q4 S+ U9 |0 V 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
- F" K6 h9 }' k$ V, m 长度如下 T=tx2+5 uS
" }- }5 v( w" w- n, d: t------------------------------------------------*/
% P1 `8 P- R: Y" p- l% D. svoid DelayUs2x(unsigned char t); t8 b, r1 H9 ?, I5 a
{   ( T5 y) j* B. g8 q/ u
while(--t);- J) F8 _& D: N  c3 l
}% n: ?+ j, h/ x2 b
/*------------------------------------------------, j# e7 g+ ]* Q6 X1 e+ k* a$ N/ R
mS延时函数,含有输入参数 unsigned char t,无返回值# v& k- |  `- z9 X
unsigned char 是定义无符号字符变量,其值的范围是
) R( L) x3 o4 O/ }: z, X7 D. l 0~255 这里使用晶振12M,精确延时请使用汇编
  _& ?8 c% a9 N6 p  H, v3 C------------------------------------------------*/2 m) j( y# b( y' L. u6 w; b8 c2 n
void DelayMs(unsigned char t)! ~9 E0 Z. z" l' @8 v9 V$ x' t
{; ]% t: C9 R3 \. y3 V2 z* i/ \" |

9 [3 T+ G! Y- D* X% I9 K9 i while(t--)
( q& b! n# F% R) z5 G  { {
" Q0 W9 {$ X, ~' @7 U: H     //大致延时1mS7 `& I4 p; p$ \
     DelayUs2x(245);+ A8 _, Y; j& j3 N+ f
         DelayUs2x(245);
+ T# [5 U+ E+ I# K }; F" ^/ O0 s3 N1 G# T0 s
}7 C( R, X( Z! s9 k' v+ _
/*------------------------------------------------
5 ]- Y" n5 G; w4 D                    主函数7 ]/ U! v" E9 m( Y0 U9 \# ?8 P
------------------------------------------------*/  l2 i: |% n: f" D! X
main()
8 ~& `$ L: Z* L2 ?7 B- l% f  U) A. C+ T{
- H& c* \" }. e# |4 s, e1 ] //unsigned int i=64*16; //转2周停止0 d. w/ l" S4 M$ W' C/ L! c
Speed=5; //调整速度
3 Z/ l/ `" A! n while(1)  
! S% g7 Y( y1 E, u9 G8 L* L7 }  {         + F, [9 _+ p# C
     Coil_A1                 //遇到Coil_A1  用{A1=1;B1=0;C1=0;D1=0;}代替
$ r4 o. E' a. v& u( Q     DelayMs(Speed);         //改变这个参数可以调整电机转速 ,
* q$ [5 f) z( S/ v                                 //数字越小,转速越大,力矩越小
; m2 e- J* W8 E/ T0 w     Coil_B1
/ j, k! X9 U& T! v& v$ \$ e     DelayMs(Speed);
# N2 C# S" M3 w     Coil_C1
/ Z5 ^# i  p0 q     DelayMs(Speed);
/ m0 C  Y0 A* q     Coil_D1& F; Q4 n+ ~! _6 C/ n
     DelayMs(Speed);# t. z* @4 u  L* ~+ Z1 t7 u1 E
  }0 p( w- u! k! p6 b
}
2 h; R: l' [) `8 I+ {( _; P8 ^. t0 {% O& ?; w
游客,如果您要查看本帖隐藏内容请回复
' f/ n# N6 y) c2 E* Z2 g  P
) H' {' t" ^. D, ~: D

该用户从未签到

2#
发表于 2018-11-29 10:22 | 只看该作者
路过进来看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-20 21:50 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表