资源简介

单片机控制多个步进电机程序,可以同时控制两个步进电机

资源截图

代码片段和文件信息

//*************************************************************************************************************
//实验名称:单片机控制多个电机
//程序说明:烧好程序,连接好控制线(步进电机1的控制线I1-I4连接到P2.0-P2.3,步进电机2的控制线I1-I4连接
//          到P2.4-P2.7。按S19可控制步进电机1的转动停止、加减速和正反转,按S20可控制步进电机2的转动停
// 止、加减速和正反转。
//实验平台:YZ200 V2.2开发箱,STC89C52单片机。
//作者:徐锐锋
//日期:2010-12-20
//广州研展电子科技有限公司 www.52yanfa.com (我爱研发网)  版权所有 
//****************************************************************************************************************

#include 
//#include 

sbit A1=P2^0; //步进电机1输出脚定义
sbit B1=P2^1;
sbit C1=P2^2;
sbit D1=P2^3;

sbit A2=P2^4; //步进电机2输出脚定义
sbit B2=P2^5;
sbit C2=P2^6;
sbit D2=P2^7;

//步进电机1工作定义------------------------------------------------------------------------------------------------------
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_OFF1 {A1=0;B1=0;C1=0;D1=0;}//全部断电

//步进电机2工作定义
#define Coil_A2 {A2=1;B2=0;C2=0;D2=0;}//A相通电,其他相断电
#define Coil_B2 {A2=0;B2=1;C2=0;D2=0;}//B相通电,其他相断电
#define Coil_C2 {A2=0;B2=0;C2=1;D2=0;}//C相通电,其他相断电
#define Coil_D2 {A2=0;B2=0;C2=0;D2=1;}//D相通电,其他相断电
#define Coil_OFF2 {A2=0;B2=0;C2=0;D2=0;}//全部断电

unsigned char x1y1i1s1;
unsigned char x2y2i2s2;
//unsigned char y1;
//unsigned char i1;
//unsigned char S1;

//------------------------------------------------------------------------------------------------------
// uS延时函数,含有输入参数 unsigned char t,无返回值
// unsigned char 是定义无符号字符变量,其值的范围是
// 0~255 这里使用晶振12M,精确延时请使用汇编大致延时
// 长度如下 T=tx2+5 uS 
//-----------------------------------------------------------------------------------------------------
void DelayUs2x(unsigned char t)
{   
 while(--t);
}

//--------------------------------------------------------------------------------------------------------
// mS延时函数,含有输入参数 unsigned char t,无返回值
// unsigned char 是定义无符号字符变量,其值的范围是
// 0~255 这里使用晶振12M,精确延时请使用汇编
//-----------------------------------------------------------------------------------------------------------
void DelayMs(unsigned char t)
{    
 while(t--)
 {
     //大致延时1mS
     DelayUs2x(245);
 DelayUs2x(245);
 }
}

//---------------------------------------------------------------------------------------------------
//                   定时器初始化子程序
//---------------------------------------------------------------------------------------------------
void Init_Timer(void)
{
TMO

评论

共有 条评论