8051芯片和步进电动机steppermoter

功能

通过按钮控制电机顺时针或逆时针旋转

电动机所设置的参数

在这里插入图片描述

效果图

在这里插入图片描述
k1 —> 正转3圈 ----> 对应上面的D1正 ----> 转完后自动跳到D3停
k2 —> 反转3圈 ----> 对应上面的D2反 ----> 转完后自动跳到D3停
图中的U2用来增大电压驱动电动机,COM是接地,STEP是指步距角为18度,即单拍时360度转20次,但转太多了,因此用单双拍即一圈转5次。

特点与原理

在这里插入图片描述

工作方式

在这里插入图片描述

工作流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
A、B同时带电时转到在A和B之间
六拍指6个状态

步距角

在这里插入图片描述

分析

在这里插入图片描述
用单双拍一圈转5次即可

代码

steppermoter.c

#include<reg51.h>
#include<string.h>		 //字符串
#include<stdio.h>		 //标准输入输出
#include<intrins.h>		 //延时
#include<stdlib.h>		 //标准库

#define INT8U unsigned char			//8位的
#define INT16U unsigned int			//16位的

//按钮管脚
sbit FFW_KEY=P3^0;
sbit REV_KEY=P3^1;
sbit STOP_KEY=P3^2;

//0000_0001 A->AB->B->BC->C->CD->D->AD		(正转)
INT8U code FFW_ARR[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09}; 
//0000_1001 AD->D->CD->C->BC->B->AB->A		(反转)
INT8U code REV_ARR[]={0x09,0x08,0x0C,0x04,0x06,0x02,0x03,0x01};

/**
*延时
*
*@param x 延时时间
*@return
*/
void delay_ms(INT16U x)
{
	INT8U t=120;
	while(x--)
		while(t--);
}

/**
*顺时针旋转	(正转)
*
*@param n 旋转圈数
*@return
*/
void STEP_FFW(INT8U n)
{
	INT8U i,j;
	
	for(i=0; i<5*n; i++)	//一圈转5次
	{
		for(j=0; j<8; j++) //8*9=72		  一次转72度
		{
			P1=FFW_ARR[j];	  //给U2的管脚P1,U2有8个管脚对应8个状态
			delay_ms(60);
			
			if(STOP_KEY==0)   //按暂停按钮时退出循环,没电压自然就不转了
				return;
		}
	}
}

/**
*逆时针旋转
*
*@param n 旋转圈数
*@return
*/
void STEP_REV(INT8U n)
{
	INT8U i,j;
	
	for(i=0; i<5*n; i++)
	{
		for(j=0; j<8; j++)
		{
			P1=REV_ARR[j];	   //写法和正转一样就改了个数组
			delay_ms(60);
			
			if(STOP_KEY==0) 
				return;
		}
	}
}

void main()
{
	INT8U n = 1;
	
	while(1)
	{
		if(FFW_KEY==0)			 //当按下正转按钮时
		{
			P0=0xFE; // 1111_1110	  因为从后面读,且右端接了高电压5v,因此这里D1为低电压即为0时,发光二极管变亮
			STEP_FFW(n);
		}
		else if(REV_KEY==0)
		{
			P0=0xFD; // 1111_1101
			STEP_REV(n);
		}
		else
		{
			P0=0xFB; // 1111_1011
		}
	}
}


在这里插入图片描述
喜欢的朋友可以关注我的个人公众号,后台回复java资料可免费领取资源。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值