⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stepmotor.c

📁 dallas ID号芯片DS2401的读取
💻 C
字号:

#include "StepMotor.h"
//*********************************步进电机的运行曲线表******
code INT8U StepMotorCurve[256]=
{	
	0,		2,		3,		5,		6,		8,		9,		11,		13,		14,
	16,		17,		19,		20,		22,		24,		25,		27,		28,		30,
	31,		33,		34,		36,		38,		39,		41,		42,		44,		45,
	47,		48,		50,		51,		53,		55,		56,		58,		59,		61,
	62,		64,		65,		67,		68,		70,		71,		73,		74,		76,
	77,		79,		80,		82,		83,		85,		86,		88,		89,		91,
	92,		94,		95,		97,		98,		99,		101,	102,	104,	105,
	107,	108,	109,	111,	112,	114,	115,	117,	118,	119,
	121,	122,	123,	125,	126,	128,	129,	130,	132,	133,
	134,	136,	137,	138,	140,	141,	142,	144,	145,	146,
	147,	149,	150,	151,	152,	154,	155,	156,	157,	159,
	160,	161,	162,	164,	165,	166,	167,	168,	170,	171,	
	172,	173,	174,	175,	177,	178,	179,	180,	181,	182,
	183,	184,	185,	186,	188,	189,	190,	191,	192,	193,	
	194,	195,	196,	197,	198,	199,	200,	201,	202,	203,	
	204,	205,	206,	207,	207,	208,	209,	210,	211,	212,
	213,	214,	215,	215,	216,	217,	218,	219,	220,	220,
	221,	222,	223,	224,	224,	225,	226,	227,	227,	228,
	229,	229,	230,	231,	231,	232,	233,	233,	234,	235,
	235,	236,	237,	237,	238,	238,	239,	239,	240,    241,
	241,	242,	242,	243,	243,	244,	244,	245,	245,	245,
	246,	246,	247,	247,    248,	248,	248,	249,	249,	249,
	250,	250,	250,	251,	251,	251,	252,	252,	252,    252,
	253,	253,	253,	253,	254,	254,	254,	254,	254,	255,
	255,	255,	255,	255,    255,	255,	255,	255,	255,	255,
	255,	255,	255,	255,	255,	255,
	} ;
//*******************************延时一个us**************************
void Delay1us(void)
{
	_nop_();
}
//*******************************延时n个us**************************
void DelayNus(INT16U us)
{
	while(us--)
	{
		Delay1us();
		 _nop_();
		 _nop_();
	
	}
}

//****************************SPI0串口发送一个字节***************
void SPI0SendOneByte(INT8U Value)
{

}
//******************************HC595移位两个字节*******************
void HC595Shift2Byte(INT8U ShiftData)
{
	
	Load595Wait;	
	SPI0SendOneByte(ShiftData);
	SPI0SendOneByte(ShiftData);//这里要发送2次,因为有两个一样的值
	Load595Execuate;			//更新数值
}
	
//****************************依次装入256个曲线值****************
void LoadCurveValue(void)
{
	INT8U	i;
	for(i==0;i<0xff;i++)
		{
		HC595Shift2Byte(StepMotorCurve[i]);
		DelayNus(StepMotorTurnSpeed);//延时越少电机转动得越快
		}
	for(i==0;i<0xff;i++)
		{
		HC595Shift2Byte(StepMotorCurve[0xff-i]);
		DelayNus(StepMotorTurnSpeed);//延时越少电机转动得越快
		}
	//这里要进行半个正弦波的过程
}
//**************************步进电机走一步AB,A/B/,BA,B/A/,AB***********************
void StepMotorWalkOneStep(INT8U Direction)
{
	if(Direction==0)//向右转过程为AB-B/A/- A/B/-AB-BA-A/B/-B/A/-BA
	{
		StepMotorPhase1H;//相位脚置高
		StepMotorPhase2L;
		LoadCurveValue();//执行了 	AB,B/A/,
		StepMotorPhase1H;
		StepMotorPhase2H;
		LoadCurveValue();//执行了 A/B/,AB
		StepMotorPhase1L;//相位脚置高
		StepMotorPhase2H;
		LoadCurveValue();//执行了 	BA,A/B/
		StepMotorPhase1L;
		StepMotorPhase2L;
		LoadCurveValue();//执行了 B/A/,BA
	}
	else if(Direction==1)//向左转过程为AB-A/B/-B/A/-AB-BA-B/A-/A/B/-BA
	{
		StepMotorPhase1H;//相位脚置高
		StepMotorPhase2H;
		LoadCurveValue();//执行了 	AB,B/A/,
		StepMotorPhase1H;
		StepMotorPhase2L;
		LoadCurveValue();//执行了 A/B/,AB
		StepMotorPhase1L;//相位脚置高
		StepMotorPhase2L;
		LoadCurveValue();//执行了 	BA,A/B/
		StepMotorPhase1L;
		StepMotorPhase2H;
		LoadCurveValue();//执行了 B/A/,BA
	}
}

//********************** 步进电机走N步****************************
void StepMotorWalkNStep(INT8U Direction,INT16U NStep)
{
	while(NStep--)
		{
		StepMotorWalkOneStep(Direction);
		}
}






























⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -