单片机控制步进电机程序流程图:单片机控制步进电机
单片机控制步进电机程序流程图:单片机控制步进电机觉得文章不错,收藏的同时,麻烦点个赞~~~~~来自:https://zhuanlan.zhihu.com/p/334059522、编写程序:#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
单片机控制步进电机程序(含电路原理图和程序)
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、运行结果:
运行结果
来自:https://zhuanlan.zhihu.com/p/33405952
觉得文章不错,收藏的同时,麻烦点个赞~~~~~
关注微信公众号『混说Linux』
你也可以继续阅读 点击 以下文章,下面是我推荐给大家的几篇文章:
1.《竟然把通信协议讲的如此通俗?》
2.《Linux为什么使用内核模块?》
3.《Linux为什么区分内核空间和用户空间?》
4.《常见硬件通信(SPI、I2C、CAN、USB、UART)协议介绍》