L298N步进电机驱动器使用说明
L298N电机驱动器使用说明
低
低
/
/
高
/
M2
正转
/
/
高
低
/
高
反转
/
/
低
高
/
高
停止
低
低
/
/
/
高
#include<> //头文件
#define uint unsigned int //宏定义
sbit D1=P1^0; //驱动器in1
sbit D2=P1^1; //声明单片机P1口的第一位和第二位 ******驱动器in2
sbit K1=P3^0; //声明单片机P3口第一位(独立开关) 按键key1
sbit k2=P3^1; //行程开关远端
sbit k3=P0^7; //行程开关近端
unsigned int flag=0,flag1,flag2,get_out=0; //声明标识
// K1=1;
// k2=1;
// k3=1;
void delay(uint z); //声明子函数
void IntConfiguration()
{ //设置INT0
IT0=1; //外部中断0跳变沿触发方式(下降沿)
EX0=1; //打开INT0的中断允许。
//设置INT1
IT1=1; //设置外部中断1为跳变沿触发方式
EX1=1; //打开外部中断0中断允许
EA=1; //打开总中断
}
void INIT0() interrupt 0
{
if((flag==1)&&(flag1==1))
{
D1=0;
D2=1; //使电机正传
get_out=0; //get_out清0
}
}
void main()
{
IntConfiguration();
while(1) //大循环
{
if(K1==0) //检测K1是否按下
{
delay(5); //消除抖动
if(K1==0) //再次检测K1是否按下
{
D1=0;
D2=0; //使电机停止
flag=1; //将flag赋值为1
}
}
if(k2==0) //检测K2是否按下
{
delay(5); //延时消抖
if(k2==0&&(flag==1)) //检测K2是否按下并且flag是否为1
{
flag1=1; //将flag1赋值为1
}
}
if((flag==1)&&(flag1==1)&&(get_out==0)) //检测flag、flag1是否均为1且get_out为0
{
D1=0;
D2=0;
delay(3000); //电机停止3秒
{
D1=1;
D2=0; //使电机反转
get_out=1; //将get_out赋值为1
}
}
if(k3==0) //检测k3是否按下
{
delay(5);
if(k3==0) //延时消抖后检测k3是否按下
{
flag2=1; //将fla
L298N步进电机驱动器使用说明 来自淘豆网m.daumloan.com转载请标明出处.