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

C51单片机-步进电机正反转 源程序

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
C51单片机-步进电机正反转 源程序3 g1 J/ p9 f3 u: u! [: r5 e- Y; e
4 L- n! o" J" J6 X7 E( W' }+ \

' C8 l# C5 k# {- y单片机源程序:" W( m! X  S/ e- @
/*-----------------------------------------------* g/ k( y* @4 q8 q" j7 b
  名称:步进电机& S$ W: g; A- @# n
  修改:无/ W* G9 W9 x7 B( P3 k9 ^
  内容:本程序用于测试4相步进电机常规驱动 含正反转 使用1相励磁& Q# B/ f+ e8 D* D3 f

7 H0 F% U4 T, G4 K/ h9 `  s
2 |' X0 ?- R1 q: R: L& f, t ------------------------------------------------*/
% w* |+ X+ }) m' \* C/ l
$ l6 @1 ^. P) i" R' @" ?#include <reg52.h>( A) p+ |! M, T2 q& ?. t1 I
# |2 p: x- {$ q2 t

* E* X# @% J# A% S9 f; g
! J0 ~8 J' t) O0 l* i& |' usbit A1=P1^0; //定义步进电机连接端口
' I  `4 G) F: y* D  D) Xsbit B1=P1^1;
# G% \$ R0 G( Z/ Hsbit C1=P1^2;7 K  r8 V3 \  q; I( n) e9 R
sbit D1=P1^3;
# w2 S1 O3 b% y$ C/ X% ~
" f7 G! @3 V. X$ [) [' l( v8 T4 o) l( A$ G$ w
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
% U1 F0 O8 u7 z#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
. H4 f. I8 f5 e7 Y0 b) \#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
/ O  B) a# _5 V; t#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电0 w$ U# B" q9 b( @
#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电
1 }% k6 \% k3 ~, @#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电
# i# ]. K! i5 I. O#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电
  Q; X/ w8 q. K  e#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//D相通电,其他相断电" j& V$ ^- V1 w, R
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电
+ y. y5 `" A5 u6 W& k; v# `$ @7 `) o- f& \! c1 s
unsigned char Speed;5 D. c4 W1 H6 }6 v
/*------------------------------------------------
6 i% j& E: c+ O! b& t: o uS延时函数,含有输入参数 unsigned char t,无返回值
( v8 {, m$ ?9 Z% b; V unsigned char 是定义无符号字符变量,其值的范围是
- }! y1 F4 |$ _ 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时& u/ i5 B0 z' \7 R) u* a7 P
长度如下 T=tx2+5 uS
3 m2 J& _5 X0 ~# b$ p- e, U------------------------------------------------*/2 {& Q: N( q6 A  A8 @
void DelayUs2x(unsigned char t)
3 A/ N0 L7 v6 ^$ I{   1 A6 \# t. Z) g, }
while(--t);
5 g# c+ H- |. C}- [) C9 z! ]& L# q4 z
/*------------------------------------------------
! {, r+ e1 m0 D* n" _0 L mS延时函数,含有输入参数 unsigned char t,无返回值3 |3 B" d% P+ e& r( E# d3 z/ {
unsigned char 是定义无符号字符变量,其值的范围是
9 k: U$ W1 g7 I/ K+ w 0~255 这里使用晶振12M,精确延时请使用汇编
9 u  s$ U) I+ \: j------------------------------------------------*/
( ]2 n8 `0 e5 g  \+ J. Q6 ]void DelayMs(unsigned char t)% a2 j6 `# D! r' F; n1 \  ?
{2 m& R3 y: `$ D8 L
$ a+ g0 C7 |, }* ]- U
while(t--)
9 F3 Q/ W2 d1 w- P8 ^( b8 ]% W {
. |8 y8 n6 [9 ~# t, r     //大致延时1mS
2 G+ C2 r$ P' O( Q3 t. k     DelayUs2x(245);' R4 l- U' ^$ B2 d7 C
         DelayUs2x(245);
, T( f6 A: f6 S/ C% m7 E }4 U9 v# {8 [) v7 w
}" c6 D0 r! |4 K% ^/ O2 B3 q
/*------------------------------------------------
, `& ]  S( V; g                    主函数
& D$ D  G! M! v! ~------------------------------------------------*/7 E, W# A; [3 `% |! h6 M
main()8 D" e4 Y  a# Q
{: ?" \( p6 a* `7 T9 y1 i% C3 i
unsigned int i=512;//旋转一周时间
/ s" E& k; o( x1 a' `; M Speed=8;! s3 _/ t2 e; P! S) |6 _0 f; \
Coil_OFF
+ I+ B' Y5 w( A. K8 k1 H while(i--)  //正向) s: t! K6 \! L  S% C
  {         
$ q" [* j# `4 X  p1 X3 u     Coil_A1                //遇到Coil_A1  用{A1=1;B1=0;C1=0;D1=0;}代替
. F% H! p7 f5 c  k4 z, ]5 U     DelayMs(Speed);         //改变这个参数可以调整电机转速 ,3 w( u- d# O+ L; h: \; [
                             //数字越小,转速越大,力矩越小! L' X; r3 Y' j+ l
     Coil_B1- D. U! A4 y& {
     DelayMs(Speed);
' A: t) U; s" A5 f     Coil_C1" Q! D7 ?; t8 P0 }, ~4 f7 U6 l
     DelayMs(Speed);
. Y6 g; o4 F0 y. u8 n# q     Coil_D1
5 S3 h3 u* z! n. {; k. y     DelayMs(Speed);
8 m. y9 V9 c( c3 e- F' b  }* w. h! n7 _- a' b  w' @5 i+ v9 \* f- x
  Coil_OFF
' S9 o4 d4 d' `- S7 a, t  i=512;7 B9 G* d$ o3 _' ~: U+ T$ T7 n0 r- k
  while(i--)//反向  r+ Q# \0 D& J" y' d0 z8 C& U5 c
  {1 J7 }, N" m* u# M
     Coil_D1                //遇到Coil_A1  用{A1=1;B1=0;C1=0;D1=0;}代替
. h4 n& k, z  {3 p; b     DelayMs(Speed);         //改变这个参数可以调整电机转速 ,
8 R  V4 W  |5 S9 C                                 //数字越小,转速越大,力矩越小
4 _1 k2 [# G+ D0 O. e- R1 L     Coil_C1
* g$ Y. d% d; r% P! r1 f9 m* O     DelayMs(Speed);
, S3 R4 t+ B' [- z9 Y     Coil_B1. O9 N( T& B: X% ?/ P" S  n  @
     DelayMs(Speed);
. v7 c. y: @+ C1 q7 d: |- P     Coil_A1
; C- }8 n  F  x% ~% ^. T6 O
" {- d) e: C9 e/ e…………限于本文篇幅 余下代码请从论坛下载附件…………
. Q( N! D- W1 w! @- \
游客,如果您要查看本帖隐藏内容请回复

# H6 B; G% I8 j; ]. Z* b' m. Y- N7 [( ^/ Y

: z# l2 C  a- L  x1 K+ s# D

该用户从未签到

2#
发表于 2018-11-29 10:18 | 只看该作者
好久不摸了 手生了 赶紧学学
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-22 06:53 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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