欢迎来到小居数码网-一家分享数码知识,生活小常识的网站,希望可以帮助到您。

当前位置:生活小常识 > 数码知识 >
优质

单片机控制步进电机的工作原理(单片机控制步进电机程序详解)

数码知识

孙博优秀作者

原创内容 来源:小居数码网 时间:2024-08-07 17:56:01 阅读() 收藏:37 分享:72

导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有588个文字,大小约为3KB,预计阅读时间2分钟。

单片机控制步进电机程序(含电路原理图和程序)

单片机控制步进电机程序详解

1、设计电路:

主要元件:与门AND_5(5路),ULN2003A(放大电压用来驱动电机),AT89C52,步进电机MOTOR-STEPPER

步进电机连接电路图

2、编写程序:

#include#define uint unsigned int#define uchar unsigned#include #define uint unsigned int #define uchar unsigned char int state = 0; char int state = 0; //定义电机的状态 state = 1 正转 state = -1电机反转 state = 0 电机停止 uint time = 50; //定义延时时间int step[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//每一步的通电顺序 //几个控制开关量sbit drive = P3^5; sbit stop = P3^6; sbit re_drive = P3^7; sbit add = P3^1; sbit reduce = P3^0;//延时程序 x*10ms void Delay_xms(uint x){ uint i,j; for(i=0;i<x;i++) for(j=0;j<112;j++);//10ms } //反转 void Move_reverse(uint time){ uint i; for(i= 0;i < 8;i++){ P2 = step[i]; Delay_xms(time); } } //正转 void Move(uint time){ int i; for(i= 7;i >= 0;i--){ P2 = step[i]; Delay_xms(time); } }//定义外部中断INT0的中断函数 开关量变化时做出反应 void ChangeState() interrupt 0{if(!drive){ state = 1;drive = 1; } if(!stop){ state = 0;stop = 1; } if(!re_drive){ state = -1; re_drive = 1; }if(!add){ time -= 10;add = 1; if(time <= 10)time = 10;   }   if(!reduce) {time += 10;reduce = 1;if(time >= 100)time = 100; }}void main(){EA = 1; //EA (IE.7), CPU中断允许(总允许)位。 EX0 = 1; //EX0(IE.0),外部中断0允许位 IE0(TCON.1),外部中断0中断请求标志位。IT0 = 1; //定义下降沿触发  while(1)  {switch(state)    {      case 1: Move(time);                 break;       case 0: Delay_xms(10);                   break;       case -1: Move_reverse(time);                  break; } } }// 由于编辑器排版问题,没办法做到代码对齐

3、运行结果:

运行结果

上面就是小居数码小编今天给大家介绍的关于(单片机控制步进电机程序详解)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。

94%的朋友还想知道的:

(392)个朋友认为回复得到帮助。

部分文章信息来源于以及网友投稿,转载请说明出处。

本文标题:单片机控制步进电机的工作原理(单片机控制步进电机程序详解):http://sjzlt.cn/shuma/153432.html

猜你喜欢