找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1383|回复: 1
打印 上一主题 下一主题
收起左侧

一个51单片机打箱装置源程序(电机控制)

[复制链接]
跳转到指定楼层
楼主
ID:340753 发表于 2018-10-18 10:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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);                                                                                //切刀电机
            }
        }
  }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-10-18 15:59 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表