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

📄 stepmotor.c

📁 c8051f020单片机控制步进电机程序
💻 C
字号:
//-----------------------------------------------------------------------------
// 版权归新华龙电子公司所有
//-----------------------------------------------------------------------------
//
//文件名:	StepMotor.c
//
//编写人:	LC
//
//编写时间:2005/03/10
//
//目标器件: C8051F02x
//
//编译工具: Silicon Laboratories IDE
//
//程序说明:	此程序通过I/O口驱动步进电机

//P50--STEPA	P51--STEPB		P52--STEPC		P53--STEPD
//------------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------------
#include <c8051f020.h>                    // SFR declarations
#include <intrins.h>

//------------------------------------------------------------------------------------
// Function PROTOTYPES
//------------------------------------------------------------------------------------

void PORT_Init (void);

/***************************************************************************************
函数名称:	void sleep_ms(WORD count)
功能描述:	延时
输入:		WORD count(所要延时的长度)
输出:		无
全局变量:	无
调用模块:	_nop_()
***************************************************************************************/
void sleep_ms(unsigned char count)
{
  unsigned char ii,jj;
  for(ii=0;ii<count;ii++)
    {
      for(jj=0;jj<250;jj++)
	  _nop_();			
    }	
}

//------------------------------------------------------------------------------------
// MAIN Routine
//------------------------------------------------------------------------------------
void main (void) {
	unsigned char k;
	unsigned char SendData;
	/*无效看门狗*/
   	WDTCN = 0xde;
   	WDTCN = 0xad;
   	PORT_Init ();
	SendData=0xff;		/*4相线圈都截止*/
	while(1)
	{
		/*步进电机正转*/
		for(k=0;k<10;k++){
			SendData=0x0e;		/*A相通电*/
			P5=SendData;
			sleep_ms(250);
			sleep_ms(250);
			sleep_ms(250);
			SendData=0x0c;		/*AB相通电*/
			P5=SendData;
			sleep_ms(250);
			sleep_ms(250);
			sleep_ms(250);
			SendData=0x0d;		/*B相通电*/
			P5=SendData;
			sleep_ms(250);
			sleep_ms(250);
			sleep_ms(250);
			SendData=0x09;		/*BC相通电*/
			P5=SendData;
			sleep_ms(250);
			sleep_ms(250);
			sleep_ms(250);

			SendData=0x0b;		/*C相通电*/
			P5=SendData;
			sleep_ms(250);
			sleep_ms(250);
			sleep_ms(250);
			SendData=0x03;		/*CD相通电*/
			P5=SendData;
			sleep_ms(250);
			sleep_ms(250);
			sleep_ms(250);
			SendData=0x07;		/*D相通电*/
			P5=SendData;
			sleep_ms(250);
			sleep_ms(250);
			sleep_ms(250);
			SendData=0x06;		/*DA相通电*/
			P5=SendData;
			sleep_ms(250);
			sleep_ms(250);
			sleep_ms(250);
		}
  		/*步进电机反转*/
		for(k=0;k<10;k++){
			SendData=0x06;
			P5=SendData;
			sleep_ms(250);
			sleep_ms(250);
			SendData=0x03;
			P5=SendData;
			sleep_ms(250);
			sleep_ms(250);
			SendData=0x09;
			P5=SendData;
			sleep_ms(250);
			sleep_ms(250);
			SendData=0x0c;
			P5=SendData;
			sleep_ms(250);
			sleep_ms(250);
		}

	}
}

/***************************************************************************************
函数名称:	void PORT_Init(void)
功能描述:	初始化I/O
输入:		无
输出:		无
全局变量:	XBR2,P74OUT
调用模块:	无
***************************************************************************************/
void PORT_Init (void)
{
   XBR2    = 0x40;     /*使能交叉开关和弱上拉*/
   P74OUT |= 0x0f;     /*P5低4位为推挽输出,其余口为开漏输出*/
}

⌨️ 快捷键说明

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