久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

單片機控制松下伺服電機正反轉程序

作者:佚名   來源:本站原創   點擊數:  更新時間:2010年08月26日   【字體:
//***************************************************************************     
//     
//  文 件 名: download.c     
//     
  
//     
//  目標對象: AT89S52     
//     
//  編 譯 器: ISP     
//     
//  功能描述: 下料部單獨控制程序     
//     
//  修改版本: 0.0     
//     
//  創建日期:2009-03-09     
//     
//***************************************************************************     
    
#include <REG52.H>     
#include<ABSACC.H>     
#include <INTRINS.H>     
#define uchar unsigned char     
#define uint  unsigned int     
    
//***************************************************************************     
    
sbit    DOWNLOAD_HS30806_Y_PULSE1       =   P1^0;//HS30806_Y電機脈沖-     
sbit    DOWNLOAD_HS30806_Y_DIR      =   P1^1;//HS30806_Y電機方向-     
sbit    DOWNLOAD_HS30806_X_PULSE1       =   P1^2;//HS30806_X電機脈沖-     
sbit    DOWNLOAD_HS30806_X_DIR      =   P1^3;//HS30806_X電機方向-     
sbit    SERVO_PULSE1        =   P3^0;//伺服電機脈沖-     
sbit    SERVO_DIR       =   P3^3;//伺服電機方向-     
sbit    SERVO_ON    =   P3^2;//伺服ON使能     
sbit    QIGANG=P3^1;    
sbit    SERVO_POINT=P2^0;    
sbit    Y_POINT=P2^1;    
sbit    S2 = P3^2;    
sbit    S3 = P3^3;    
sbit    S4 = P3^4;    
sbit    S5 = P3^5;    
    
//****************************************************************************     
    
//延時1us     
    
//****************************************************************************     
    
 void mDelay(uchar DelayTime1)    
{       
        uchar i=0;    
        for(;DelayTime1>0;DelayTime1--)    
        {       
            for(i=0;i<0x16;i++)    
                {    
                    
                }    
        }    
}    
//具體延時時間=DelayTime1*[10+3*m]+10個指令周期     
/* void mDelay(uint DelayTime1)    
{       
    for(;DelayTime1>0;DelayTime1--)    
        {       
                
        }    
}    
*/    
void Delay()    
{    
        
    ;    
;    
    
}    
//***************************************************************************     
    
//下料部Y右轉程序     
    
//***************************************************************************     
    
void RIGHT_MOVE_DOWNLOAD_HS30806_Y(uint Pluse1_num)    
{       
            
    DOWNLOAD_HS30806_Y_DIR=1;    
    DOWNLOAD_HS30806_Y_PULSE1   =   1;//脈沖負     
        
    mDelay(20);         
    for(;Pluse1_num>0;Pluse1_num--)    
    {    
        DOWNLOAD_HS30806_Y_PULSE1   =   ~DOWNLOAD_HS30806_Y_PULSE1;//脈沖負     
        mDelay(20);     
        DOWNLOAD_HS30806_Y_PULSE1   =   ~DOWNLOAD_HS30806_Y_PULSE1;//脈沖負     
        mDelay(20);     
    }    
}       
    
//***************************************************************************     
    
//下料部Y左轉程序     
    
//***************************************************************************     
    
void LEFT_MOVE_DOWNLOAD_HS30806_Y(uint Pluse2_num)    
{       
        DOWNLOAD_HS30806_Y_DIR=0;    
        DOWNLOAD_HS30806_Y_PULSE1   =   1;//脈沖負     
        mDelay(20);         
    for(;Pluse2_num>0;Pluse2_num--)    
    {    
        DOWNLOAD_HS30806_Y_PULSE1   =   ~DOWNLOAD_HS30806_Y_PULSE1;//脈沖負     
        mDelay(20);    
        DOWNLOAD_HS30806_Y_PULSE1   =   ~DOWNLOAD_HS30806_Y_PULSE1;//脈沖負     
        mDelay(20);     
    }    
}       
    
//***************************************************************************     
    
//下料部Y停止程序     
    
//***************************************************************************     
    
void DOWNLOAD_HS30806_Y_Stop()    
{    
        DOWNLOAD_HS30806_Y_DIR=0;    
        DOWNLOAD_HS30806_Y_PULSE1   =   1;//脈沖負     
        mDelay(20);         
}    
    
//***************************************************************************     
    
//下料部X右轉程序     
    
//***************************************************************************     
    
void RIGHT_MOVE_DOWNLOAD_HS30806_X(uint Pluse1_num)    
{       
            
    DOWNLOAD_HS30806_X_DIR=1;    
    DOWNLOAD_HS30806_X_PULSE1   =   1;//脈沖負     
        
    mDelay(20);         
    for(;Pluse1_num>0;Pluse1_num--)    
    {    
        DOWNLOAD_HS30806_X_PULSE1   =   ~DOWNLOAD_HS30806_X_PULSE1;//脈沖負     
        mDelay(20);     
        DOWNLOAD_HS30806_X_PULSE1   =   ~DOWNLOAD_HS30806_X_PULSE1;//脈沖負     
        mDelay(20);     
    }    
}       
    
//***************************************************************************     
    
//下料部X左轉程序     
    
//***************************************************************************     
    
void LEFT_MOVE_DOWNLOAD_HS30806_X(uint Pluse2_num)    
{       
        DOWNLOAD_HS30806_X_DIR=0;    
        DOWNLOAD_HS30806_X_PULSE1   =   1;//脈沖負     
        mDelay(20);         
    for(;Pluse2_num>0;Pluse2_num--)    
    {    
        DOWNLOAD_HS30806_X_PULSE1   =   ~DOWNLOAD_HS30806_X_PULSE1;//脈沖負     
        mDelay(20);    
        DOWNLOAD_HS30806_X_PULSE1   =   ~DOWNLOAD_HS30806_X_PULSE1;//脈沖負     
        mDelay(20);     
    }    
}       
//***************************************************************************     
    
//下料部X停止程序     
    
//***************************************************************************     
    
void DOWNLOAD_HS30806_X_Stop()    
{    
        DOWNLOAD_HS30806_X_DIR=0;    
        DOWNLOAD_HS30806_X_PULSE1   =   1;//脈沖負     
        mDelay(20);         
}    
    
//***************************************************************************     
    
//伺服電機右轉程序     
    
//***************************************************************************     
    
void RIGHT_MOVE_SERVO(uint Pluse1_num)    
{       
    //SERVO_ON  =   0;     
    //mDelay(100);     
    SERVO_DIR   =   1;    
    mDelay(3);    
    SERVO_PULSE1    =   1;//脈沖負     
        
                
    for(;Pluse1_num>0;Pluse1_num--)    
    {    
        SERVO_PULSE1    =   ~SERVO_PULSE1;//脈沖負     
         mDelay(3);    
    //  mDelay(2);       
        SERVO_PULSE1    =   ~SERVO_PULSE1;//脈沖負     
         mDelay(3);    
    //  mDelay(2);       
    }    
}       
    
//***************************************************************************     
    
//伺服電機左轉程序     
    
//***************************************************************************     
    
void LEFT_MOVE_SERVO(uint Pluse2_num)    
{       
//  SERVO_ON    =   0;     
//  mDelay(100);     
    SERVO_DIR   =   0;    
    mDelay(33);    
    SERVO_PULSE1    =   1;//脈沖負     
            
    for(;Pluse2_num>0;Pluse2_num--)    
    {    
        SERVO_PULSE1    =   ~SERVO_PULSE1;//脈沖負     
        //Delay();     
        mDelay(3);    
        SERVO_PULSE1    =   ~SERVO_PULSE1;//脈沖負     
        //Delay();//     
        mDelay(3);      
    }    
}       
    
//***************************************************************************     
    
//伺服電機停止程序     
    
//***************************************************************************     
    
void SERVO_PULSE1_Stop()    
{    
        SERVO_DIR=0;    
        SERVO_PULSE1    =   1;//脈沖負     
        mDelay(20);         
}    
//***************************************************************************     
    
//鍵盤處理程序     
    
//***************************************************************************     
    
uchar Key()    
{       
    uchar KValue;    
    uchar tmp;    
    P3|=0x3c;           //將P3口的接鍵盤的中間四位置1     
    KValue=P3;    
    KValue|=0xc3;       //將未接鍵的4位置1     
    if(KValue==0xff)    //中間4位均為1,無鍵按下       
        return(0);      //返回     
    mDelay(10);     //延時10ms,去鍵抖     
    KValue=P3;    
    KValue|=0xc3;       //將未接鍵的4位置1     
    if(KValue==0xff)    //中間4位均為1,無鍵按下       
        return(0);      //返回     
//如尚未返回,說明一定有1或更多位被按下     
    for(;;)    
    {   tmp=P3;         
        if((tmp|0xc3)==0xff)    
            break;      //等待按鍵釋放     
    }    
    return(KValue);    
}    
    
void KProce(uchar KValue)   //鍵值處理     
{       
    if((KValue&0x04)==0)    
        
    LEFT_MOVE_SERVO(10000);    
    
    //RIGHT_MOVE_DOWNLOAD_HS30806_X(2000);     
    //QIGANG=0;     
    if((KValue&0x08)==0)    
        
        RIGHT_MOVE_SERVO(10000);    
    //LEFT_MOVE_DOWNLOAD_HS30806_X(2000);     
    //QIGANG=1;     
    if((KValue&0x10)==0)    
    SERVO_ON    =   0;    
    mDelay(100);    
//  RIGHT_MOVE_DOWNLOAD_HS30806_Y(2000);     
    if((KValue&0x20)==0)    
    SERVO_ON    =   1;    
    mDelay(100);    
    //LEFT_MOVE_DOWNLOAD_HS30806_Y(2000);     
}    
    
//***************************************************************************     
    
//初始化程序     
    
//***************************************************************************     
    
void    init()    
{    
//  P0=0xFF;     
//  P1=0xFF;     
//  P2=0xFF;     
//  P3=0xFF;     
    P3=0xFD;    
    mDelay(1000);    
    while(S2==1)    
    {    
            LEFT_MOVE_DOWNLOAD_HS30806_Y(1);    
    }    
    RIGHT_MOVE_DOWNLOAD_HS30806_Y(1600);    
        while(S3==1)    
    {    
            LEFT_MOVE_DOWNLOAD_HS30806_X(1);    
    }    
    RIGHT_MOVE_DOWNLOAD_HS30806_X(1600);    
}    
    
//***************************************************************************     
    
//主函數     
    
//***************************************************************************     
    
/*    
void main()    
{    
    uchar KValue,m;//,n,flag;               //存放鍵值;     
//g init();//     
//SERVO_ON  =   0;     
//mDelay(100);//延時0.00111300s     
mDelay(1);    
mDelay(2);    
mDelay(3);    
mDelay(4);    
mDelay(10);    
mDelay(20);    
for(m=0;m<100;m++)    
{    
RIGHT_MOVE_SERVO(25000);    
//mDelay(20);//延時0.00023s     
LEFT_MOVE_SERVO(25000);    
mDelay(20);    
}    
while(1)    
{    
//  for(m=0;m<100;m++)     
//  {     
//  RIGHT_MOVE_DOWNLOAD_HS30806_Y(800);     
//  }     
        
    for(;;)    
    {   KValue=Key();           //調用鍵盤程序并獲得鍵值     
        if(KValue)              //如果該值不等于0     
        {    
            KProce(KValue); //調用鍵盤處理程序     
        }    
    }    
    
}    
    
 }    
    
*/    
void Initia()    
{    
    LEFT_MOVE_SERVO(1);     
    mDelay(6);    
}    
    
void main()    
{    
    Initia();    
    RIGHT_MOVE_SERVO(100);    
    while(SERVO_POINT==0)    
        while(1)    
        {    
            while(S2==0)    
            {    
                while(1)    
                {       
                    RIGHT_MOVE_SERVO(100);    
                    mDelay(20);    
                    LEFT_MOVE_SERVO(100);       
                    mDelay(20);    
                }    
            }    
        }    
}   
關閉窗口

相關文章

主站蜘蛛池模板: 日本不卡一区 | 天天摸天天看 | 99精品99 | 涩色视频在线观看 | 国产精品成人一区二区三区夜夜夜 | 国产高清一二三区 | 国产精品99视频 | 国产高清免费 | 91麻豆精品国产91久久久久久久久 | 亚洲日本一区二区三区四区 | 天天干b| 欧美一区视频 | 国产精品久久久久久52avav | 亚洲人成人网 | 成人精品视频在线观看 | 日韩欧美三区 | 成人免费视频7777777 | 亚洲天堂精品久久 | 一区二区高清 | 天天操操 | 97精品超碰一区二区三区 | 精品成人一区二区 | 久久久久九九九女人毛片 | 97天天干 | 亚洲最大看片网站 | 国产精品视频免费观看 | 亚洲成人精品国产 | 可以在线看的黄色网址 | 日批的视频| 爱综合| 男人天堂国产 | 日韩在线国产精品 | 男女深夜网站 | 国产成人免费 | 日韩欧美精品在线 | 午夜精品视频在线观看 | 亚洲美女网站 | 精品国产31久久久久久 | 在线免费观看a级片 | 日本久久一区二区三区 | 欧美一级大片 |