#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h>//因为要用到左右移函数,所以加入这个头文件
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit k1=P0^0; //定义P10口是k1 正转点动按钮
sbit k2=P0^1; //反转点动按钮
sbit k3=P0^2; //停止按钮
sbit k4=P0^3; //自动运行
sbit k5=P0^4; //右限位开关
sbit k6=P0^5; //左限位开关
#define SPEED 200
/*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能: 主函数
* 输 入 : 无
* 输 出: 无
*******************************************************************************/
void main()
{
while(1)
{
P1=0x00;
if(k1==0)//检测按键K1是否按下
{
delay(1000); //消除抖动 一般大约10ms
if(k1==0) //再次判断按键是否按下
{
while(k1==0) //当k1一直为0时,电机正转
{
P1=0x0b;
delay(SPEED);
P1=0x0e;
delay(SPEED);
P1=0x07;
delay(SPEED);
P1=0x0d;
delay(SPEED);
}
}
}
if(k2==0)//检测按键K2是否按下
{
delay(1000); //消除抖动 一般大约10ms
if(k2==0) //再次判断按键是否按下
{
while(k2==0) //当k2一直未了0时,电机反转
{
P1=0x0e;
delay(SPEED);
P1=0x0b;
delay(SPEED);
P1=0x0d;
delay(SPEED);
P1=0x07;
delay(SPEED);
}
}
}
if(k4==0)//检测按键K4是否按下
{
delay(1000); //消除抖动 一般大约10ms
if(k4==0) //再次判断按键是否按下
{
while(k3!=0||k5!=0) //当k3不等于0或k5不等于0时
{
P1=0x0b;
delay(SPEED);
P1=0x0e;
delay(SPEED);
P1=0x07;
delay(SPEED);
P1=0x0d;
delay(SPEED);
if(k3==0||k5==0)
break; //如果k3=0或k5=0,跳出循环
}
}
}
if(k5==0)
{
delay(1000);
if(k5==0)
{
while(k3!=0||k6!=0)
{
P1=0x0e;
delay(SPEED);
P1=0x0b;
delay(SPEED);
P1=0x0d;
delay(SPEED);
P1=0x07;
delay(SPEED);
if(k3==0||k6==0)
break;
}
}
}
if(k3==0)//检测按键K3是否按下
{
delay(1000); //消除抖动 一般大约10ms
if(k3==0) //再次判断按键是否按下
{
P1=0x00;//电机停止
}
}
if(k6==0)//检测按键K6是否按下
{
delay(1000); //消除抖动 一般大约10ms
if(k6==0) //再次判断按键是否按下
{
while(k3!=0||k5!=0) //当k3不等于0或k5不等于0时
{
P1=0x0b;
delay(SPEED);
P1=0x0e;
delay(SPEED);
P1=0x07;
delay(SPEED);
P1=0x0d;
delay(SPEED);
if(k3==0||k5==0)
break; //如果k3=0或k5=0,跳出循环
}
}
}
}
}
如果觉得《51单片机控制步进电机点动正反转程序 自动运行及左右限位开关》对你有帮助,请点赞、收藏,并留下你的观点哦!