ULN2003控制步进电机(STC12例程)

一、步进电机资料

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述

二、驱动电路原理图及资料

请添加图片描述
芯片资料:ULN2003百度百科

三、代码例程(例程仅供参考)

#include <stc12C5a60s2.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

uint  i,j; 			//定义全局变量,执行电机for循环转动时间需要用到

sbit A1 = P1^0;       //定义给步进电机四相连接的IO口
sbit B1 = P1^1;
sbit C1 = P1^2;
sbit D1 = P1^3;

#define Coil_A {A1=1;B1=0;C1=0;D1=0;}     //A相通电,其它相断电
#define Coil_B {A1=0;B1=1;C1=0;D1=0;}     //B相通电,其它相断电
#define Coil_C {A1=0;B1=0;C1=1;D1=0;}     //C相通电,其它相断电
#define Coil_D {A1=0;B1=0;C1=0;D1=1;}     //D相通电,其它相断电
#define  Stop  {A1=0;B1=0;C1=0;D1=0;}     //全部断电,停止

uchar Speed=2;  		//整体调速,数字越小速度越快,而力矩也越小 

void Delay1ms()		//@11.0592MHz
{
	unsigned char i, j;

	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
}

void Delay_ms(uint timer)
{
	uint i;
	for(i=0; i<timer; i++)
		Delay1ms();
}

void corotation(void)  //正转 子程序 A——D
{
	 Coil_A                
	 Delay_ms(Speed);  
	 Coil_B
	 Delay_ms(Speed);
	 Coil_C
	 Delay_ms(Speed);
	 Coil_D
	 Delay_ms(Speed);
}

void reversal(void)    //反转 子程序 D——A
{
	 Coil_D                 
	 Delay_ms(Speed);  
	 Coil_C
	 Delay_ms(Speed);
	 Coil_B
	 Delay_ms(Speed);
	 Coil_A
	 Delay_ms(Speed);
}

void main()        //主程序
{
   Delay_ms(30);    //启动前先缓冲一个30ms
  
	while(1)     //不断循环
  { 
	 for(i=0;i<500;i++)    //正转1圈(大概位置,步进电机需要编码盘才能测得比较准一点)
	 corotation();         //调用正转子函数

	  Stop                 //停止
	  Delay_ms(1000);         //延时1s
			  
	 for(j=0;j<500;j++)    //反转1圈(大概位置)
	 reversal();           //调用反转子函数
		  
	  Stop                 //停止
	  Delay_ms(1000);         //延时1s
  }
  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小明n.n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值