EDA365电子论坛网

标题: 单片机4相步进电机驱动程序和资料下载 [打印本页]

作者: yxlk    时间: 2019-1-11 06:30
标题: 单片机4相步进电机驱动程序和资料下载
单片机4相步进电机驱动程序和资料下载
8 M. n% I( u4 j/ D: D/ S0 c0 z- N# j: k
8 S( ?8 j" _+ p% n& E
关于单片机驱动步进电机的资料.
' Z* h) }# ^5 c
8 W3 J& R( ?% v电机的电路原理图:
. Z0 Q! J  q: f  K1 h0 M

1 Q. Y1 y- w. c5 u2 ]# `' x- r2 a( J5 A/ V3 @. M! I
单片机程序:

5 K2 T/ y3 A, ^- b4 @#include <reg52.h>
4 o4 v$ T# G1 A. R- x0 M' ^% q

7 Y. ~! T& W2 C! x! x- j5 f1 H
' q; [! s5 Y0 Z$ ?
7 m. g8 o# v1 j5 z
//unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10};//正转表格
& @4 Y' |5 k! R, z//unsigned char code B_Rotation[4]={0x10,0x08,0x040,0x02};//反转表格! Q0 F; `5 w1 q' _5 n8 P3 B! \# T7 `$ o
( J% W# Q+ H! F$ o" y. U) |

; d3 O  h% V0 }1 _8 avoid delay(unsigned int i)//延时$ Z/ v9 u) t( Y6 b
{
! Y# n6 W  [* M4 ^1 Q$ H while(i--);
% Z, h; [/ w$ `/ r5 }}( W* j- r; d( v6 z2 ]* c* Q
void main()$ C- a/ e; I. f/ z, q) s
{
0 j+ o" H/ h: M! ?
9 o) O# t8 Y$ f' g$ M5 e% |; G% Z% w
9 ]1 j" r4 d% [+ X: N7 X- z$ T% Y$ U
while(1)
6 m! t. q; _  y& z1 F {4 e; E8 J! b2 e0 P6 {
//
& F6 y* E6 N' z! R/ A//     P1=0x01;  //输出对应的相 可以自行换成反转表格
6 ~0 S7 H8 M5 d1 h0 {0 o6 n//     Delay(500);        //改变这个参数可以调整电机转速! E- [# F+ P1 g% F& u6 u. |/ X
//     P1=0x02;  //输出对应的相 可以自行换成反转表格
3 O7 K& K3 [: \" W% e//     Delay(500);        //改变这个参数可以调整电机转速
4 W, ~& k3 e- B) |! ^% p) P//     P1=0x04;  //输出对应的相 可以自行换成反转表格8 y9 p8 p" u' Q8 b" Y7 V) k  `
//     Delay(500);        //改变这个参数可以调整电机转速' b) f6 X% b8 x, _) H( a
//     P1=0x08;  //输出对应的相 可以自行换成反转表格
. N8 S1 I, B/ Q) i* M//     Delay(500);        //改变这个参数可以调整电机转速3 L! p2 Y# ^3 i. w) q" e7 K
                P1=0x00;
+ D7 v( Y! m& L2 ?7 F                delay(1000);
# S7 p9 v; c4 i" E                P1=0xff;" S) l! C" W; [' y5 B
                delay(1000);
+ d# g- J, A& P7 Q. G. o+ O. Q               
# M) j  h$ M8 J, @1 P/ n5 @0 ?, w8 B, l$ \
2 [, V  C0 v( B4 C- ]

' ]1 A! ]5 \/ X- N' t, e9 M
0 _0 f$ _. y8 Y
  }
# u8 a# C! s: a5 E/ z( `}
; v1 v5 i2 V* X# [5 e5 @. G7 ^) D  W. a. ?2 O8 x9 h6 L/ z
) Y. ]4 }, Y  }" ^  Z# N9 T
/*9 X# t6 o& \5 h+ h4 `0 W8 }5 A* }
1、本程序用于测试4相步进电机常规驱动
7 m, ^% D3 ^: t7 f; E! s 2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来
. `0 X- D% B& X9 z7 @ 3、速度不可以调节的过快,不然就没有力矩转动了
1 C* T/ v6 T+ f0 S 可以按照给的原理图接线7 V* J. D$ H( I. A
  接P1.1-P1.4
5 M) E! J$ {$ F+ M6 l; l*/, |2 F: `; b6 [+ D
7 j8 N% U) R$ {( v# J; i' K* ~) ^. V

$ z8 x7 R! _: U7 s6 l  @* {" g+ u2 l

4 O8 [' q* S% @) Z#include <reg52.h>( M( {/ M7 ?1 Z4 E% A7 L

- D9 h$ s" b% E  Z' _# e: ~
. `; g% M3 ^' H( ^' J# E
9 \8 M( M0 j! {* ]
4 R& T7 l; q% K
unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10};//正转表格# _1 Q( }1 C6 V8 h
unsigned char code B_Rotation[4]={0x10,0x08,0x040,0x02};//反转表格
3 v) Z, e! H+ ^6 C/ T
6 R  G9 \- p/ t+ L( {9 V

2 X9 {4 V% L3 R8 s9 h( Wvoid Delay(unsigned int i)//延时& r' G2 y- i* p
{( @8 b8 Q& o9 h& a4 H+ d
while(--i); m               
8 a) _0 y# M' ?8 F% i' }' `}( y2 T2 h) e9 s' P& Z
( h( P2 C, ]4 V9 ~. _: T% ?: f

: [% z' h! W; fmain()7 u# N' ^5 L' X4 [4 Z
{3 V( K2 J0 e: Z$ x( R$ ?

* ^+ r/ n1 j1 B5 x: g+ }) D  @ unsigned char i;
7 b/ j7 {& N7 W3 L0 w. u& ?2 w
2 i9 h! j0 a6 V5 s

, x) p( w0 U, F3 ?: G0 H/ p while(1)
& Q3 Q7 ?' d! |% Z2 v: G0 V9 {% g {
, e2 w% T4 z3 Q  for(i=0;i<4;i++)      //4相+ N) h5 s* M+ ?
     {' ^0 t- p; h8 h0 |) L/ F& X0 s
             P1=F_Rotation;  //输出对应的相 可以自行换成反转表格" |3 O$ \9 m) l/ W
             Delay(500);        //改变这个参数可以调整电机转速8 S/ ?% E: x5 ^2 K3 W9 y
         }
# {9 @- I0 H) U9 F  }: V1 \( @  g/ M# S0 a
}
1 M- r5 o% L7 A6 U1 [! X7 C% Y3 y, S+ \3 g6 ^: K1 \# D6 p
! p1 k5 C! z- q/ d# V& S; ~

. n* U1 q+ n* F0 g% w6 T, L, X% X
; |% s6 T; ^$ b* Z) }. _5 ?6 A% `. A- X8 A2 p' c+ K4 x& t
4 K6 M) Z2 D9 c# K

% [7 t. V6 a- Y' g
! b( k' _4 [# ^) i1 I) t( |  Q( J' ~

作者: sunygd    时间: 2019-1-11 15:10
不错,谢谢分享
作者: gg0760    时间: 2024-8-10 11:19
一看见delay就知这程序练手没多大意义了




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2