#include<AT89X52.h>
/****************定义***************/
#define uint unsigned int //宏定义
#define uchar unsigned char
unsigned char a=0;
unsigned char b=0;
unsigned char c=0;
unsigned char d=0;
unsigned char e=0;
unsigned char f=0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/******************电机*****************/
void motor1(unsigned char direction_flag) //吸盘电机
{
switch(direction_flag)
{
case 0: //吸盘电机停止
P1_0=0;
P1_1=0;
break;
case 1: //吸盘电机正转
P1_0=0;
P1_1=1;
break;
case 2: //吸盘电机反转
P1_0=1;
P1_1=0;
break;
default:
break;
}
}
void motor2(unsigned char direction_flag) //左右电机
{
switch(direction_flag)
{
case 0: //左右电机停止
P1_2=0;
P1_3=0;
break;
case 1: //左右电机正转
P1_2=0;
P1_3=1;
break;
case 2: //左右电机反转
P1_2=1;
P1_3=0;
break;
default:
break;
}
}
void motor3(unsigned char direction_flag) //前进电机
{
switch(direction_flag)
{
case 0: //前进电机停止
P1_4=0;
P1_5=0;
break;
case 1: //前进电机正转
P1_4=0;
P1_5=1;
break;
case 2: //前进电机反转
P1_4=1;
P1_5=0;
break;
default:
break;
}
}
void motor4(unsigned char direction_flag) //选转电机
{
switch(direction_flag)
{
case 0: //选转电机停止
P1_6=0;
P1_7=0;
break;
case 1: //选转电机正转
P1_6=0;
P1_7=1;
break;
case 2: //选转电机反转
P1_6=1;
P1_7=0;
break;
default:
break;
}
}
void motor5(unsigned char direction_flag) //关箱电机
{
switch(direction_flag)
{
case 0: //关箱电机停止
P3_4=0;
P3_5=0;
break;
case 1: //关箱电机正转
P3_4=0;
P3_5=1;
break;
case 2: //关箱电机反转
P3_4=1;
P3_5=0;
break;
default:
break;
}
}
void motor6(unsigned char direction_flag) //切刀电机
{
switch(direction_flag)
{
case 0: //切刀电机停止
P3_6=0;
P3_7=0;
break;
case 1: //切刀电机正转
P3_6=0;
P3_7=1;
break;
case 2: //切刀电机反转
P3_6=1;
P3_7=0;
break;
default:
break;
}
}
/*****************主函数***************/
void main()
{
P1=0Xff;
P3=0Xff;
/*************过程一 平台向右准备吸箱***********/
motor1(1); //吸箱电机
motor2(1); //左右电机
motor3(0); //前进电机
motor4(0); //旋转电机
motor5(0); //关箱电机
motor6(0); //切刀电机
/*******************************电机部分***************************/
while(1)
{
if(!P0_0) //限位开关一
{
delay(10);
if(!P0_0)
{
/*************过程六 第一次将打箱装置收回
过程十三 第二次将打箱装置收回***********/
if(a==0)
{
motor1(1); //吸箱电机
motor2(0); //左右电机
motor3(0); //前进电机
motor4(0); //旋转电机
motor5(2); //关箱电机
motor6(0); //切刀电机
}
while(!P0_0);
a++;
if(a==1)
{
a=0;
}
}
}
if(!P0_1) //限位开关二
{
delay(10);
if(!P0_1)
{
/*************过程二 平台前进吸箱*************/
if(b==0)
{
motor1(1); //吸箱电机
motor2(0); //左右电机
motor3(1); //前进电机
motor4(0); //旋转电机
motor5(0); //关箱电机
motor6(0); //切刀电机
}
/*************过程四 第一次打箱**************/
if(b==1)
{
motor1(1); //吸箱电机
motor2(0); //左右电机
motor3(0); //前进电机
motor4(0); //旋转电机
motor5(1); //关箱电机
motor6(0); //切刀电机
}
/**************过程十一 第二次打箱*************/
if(b==2&&!P0_3)
{
motor1(1); //吸箱电机
motor2(0); //左右电机
motor3(0); //前进电机
motor4(0); //旋转电机
motor5(1); //关箱电机
motor6(0); //切刀电机
}
while(!P0_1|!P0_3);
b++;
if(b==3)
{
b=0;
}
}
}
if(!P0_2) //限位开关三
{
delay(10);
if(!P0_2)
{
/*******************过程三 吸箱完成返回***************/
if(c==0)
{
motor1(1); //吸箱电机
motor2(0); //左右电机
motor3(2); //前进电机
motor4(0); //旋转电机
motor5(0); //关箱电机
motor6(0); //切刀电机
}
while(!P0_2);
c++;
if(c==1)
{
c=0;
}
}
}
if(!P0_3) //限位开关四
{
delay(10);
if(!P0_3)
{
/*****************过程五 第一次打箱动作完成平台向左
过程十二 第二次打箱动作完成平台向左 ***********/
if(d==0&&P0_1)
{
motor1(1); //吸箱电机
motor2(2); //左右电机
motor3(0); //前进电机
motor4(0); //旋转电机
motor5(0); //关箱电机
motor6(0); //切刀电机
}
/*****************过程七 第一次切胶带
过程十四 第二次切胶带**************/
if(d==1&&!P0_0)
{
motor1(1); //吸箱电机
motor2(0); //左右电机
motor3(0); //前进电机
motor4(0); //旋转电机
motor5(0); //关箱电机
motor6(1); //切刀电机
}
while(!P0_3|!P0_0|!P0_4);
d++;
if(d==2)
{
d=0;
}
}
}
if(!P0_4) //限位开关五
{
delay(10);
if(!P0_4)
{
/*****************过程八 切胶带动作完成切胶带动作回收***********/
if(e==0&&!P0_0&&!P0_3)
{
motor1(1); //吸箱电机
motor2(0); //左右电机
motor3(0); //前进电机
motor4(0); //旋转电机
motor5(0); //关箱电机
motor6(2); //切刀电机
}
/*****************过程九 切胶带过程完成 旋转纸箱*************/
if(e==1&&!P0_0&&!P0_3)
{
motor1(1); //吸箱电机
motor2(0); //左右电机
motor3(0); //前进电机
motor4(1); //旋转电机
motor5(0); //关箱电机
motor6(0); //切刀电机
}
/*************** 过程十五 切胶带动作完成切胶带动作回收**********/
if(e==2)
{
motor1(1); //吸箱电机
motor2(0); //左右电机
motor3(0); //前进电机
motor4(0); //旋转电机
motor5(0); //关箱电机
motor6(2); //切刀电机
}
/*****************过程十六 切 胶带过程完成 全部完成 旋转电机旋转归位*************/
if(e==3)
{
motor1(0); //吸箱电机
motor2(0); //左右电机
motor3(0); //前进电机
motor4(2); //旋转电机
motor5(0); //关箱电机
motor6(0); //切刀电机
}
while(!P0_4|!P0_6);
e++;
if(e==4)
{
e=0;
}
}
}
if(!P0_5) //限位开关六
{
delay(10);
if(!P0_5)
{
/**************过程十
过程十七 全部过程结束 ************/
if(f==0)
{
/**********等待投物**bn*************/
motor1(1); //吸箱电机
motor2(0); //左右电机
motor3(0); //前进电机
motor4(0); //旋转电机
motor5(0); //关箱电机
motor6(0); //切刀电机
/*************确认投物准备二次封箱************/
}
while(!P0_5|!P0_6);
f++;
if(f==1)
{
f=0;
}
}
}
/*****************纸箱旋转完成平台第二次向右走*************/
if(!P0_6)
{
delay(10);
if(!P0_6)
{
motor1(1); //吸箱电机
motor2(1); //左右电机
motor3(0); //前进电机
motor4(0); //旋转电机
motor5(0); //关箱电机
motor6(0); //切刀电机
}
}
}
}
|