/***********************************************************************/
/***********************************************************************/
/*************************** ****************************/
/*************************** 深圳伟嵌科技 ****************************/
/***********************************************************************/
/************************** ***************************/
/************************** www.mcufpga.com ***************************/
/************************** ***************************/
/***********************************************************************/
/***********************************************************************/
/************************ ************************/
/************************ 步进电机C语言程序 ************************/
/************************ ************************/
/***********************************************************************/
/***********************************************************************/
/***********************************************************************
开发板: 伟嵌科技----小强开发板
硬件连接: IN7-P1.0 IN6-P1.1 IN5-P1.2 IN4-P1.3 (杜邦线连接)
跳线: K10
按键选择: 1 X 4键盘
步进电机连接方法: 红-COM 橙-OUT7 黄- OUT6 粉-OUT5 蓝-OUT4
/***********************************************************************/
#include <reg52.h>
#define uchar unsigned char //定义unsigned char 为 uchar
#define uint unsigned int //定义unsigned int 为 uint
#define Cntrol_Port P2
uchar code F_Rotation[4]={0x20,0x10,0x08,0x04}; //正转表格,换算成二进制 0000 0010,0000 0100,0000 1000,0001 0000
uchar code B_Rotation[4]={0x04,0x08,0x10,0x20}; //反转表格,换算成二进制 0001 0000,0000 1000,0000 0100,0000 0010
uchar F1_stau = 0,F2_stau = 1, F3_stau = 0,F4_stau = 0;
uint speed = 2000;
sbit F1 = P3^0;
sbit F2 = P3^1;
sbit F3 = P3^2;
sbit F4 = P3^3;
/******************************************************************/
/* 延时函数 */
/******************************************************************/
void Delay(unsigned int i)//延时
{
while(--i);
}
/******************************************************************/
/*****************************键值子函数***************************/
void getkey()
{
if(F1==0)
{
Delay(200);
if(F1==0)
{
F1_stau = 1;
F2_stau = 0;
}
}
if(F2==0)
{
Delay(200);
if(F2==0)
{
F2_stau = 1;
F1_stau = 0;
}
}
if(F3==0)
{
Delay(200);
if(F3==0)
{
F3_stau = 1;
F4_stau = 0;
}
}
if(F4==0)
{
Delay(200);
if(F4==0)
{
F4_stau = 1;
F3_stau = 0;
}
}
}
/* 主函数 */
/******************************************************************/
main()
{
unsigned char i;
while(1)
{
getkey();
if(F1_stau==0)
{
for(i=0;i<4;i++) //4相
{
Cntrol_Port = F_Rotation[i];
Delay(speed); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
if(F2_stau==0)
{
for(i=0;i<4;i++) //4相
{
Cntrol_Port = B_Rotation[i];
Delay(speed); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
if(F3_stau==1)
{
speed = speed + 200;
F3_stau = 0;
}
if(F4_stau==1)
{
speed = speed - 200;
F4_stau = 0;
}
}
}
评论0