⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 motor.c

📁 一款步进电机程序,已通过调试,欢迎大家下载..
💻 C
字号:
/******************************************************************/
/*****************************************************************/ 
/*                                                                                                                               
/*                 步进电机加减速运行程序                                                                                                                                                                            
/*               步进电机启动时,转速由慢到快逐步加速。                                                                      
/*               步进电机匀速运行                                                                                                       
/*               步进电机由快到慢逐步减速到停止 
/*                                                                                                                                                                                                                                                    
/******************************************************************/
    
#include <reg52.h>       
#include <string.h>    

#define uchar unsigned char
#define uint  unsigned int

sbit  addr0 = P1^4;
sbit  addr1 = P1^5;
sbit  addr2 = P1^6;
sbit  addr3 = P1^7;

uchar code FFW[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06};//正转数组
uchar code REV[8]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e};//反转数组
uchar rate ;        
/********************************************************/
/*                                                  
/* 延时
/* 11.0592MHz时钟,                                    
/*                                                      
/********************************************************/
void delay()
 {                           
   uchar k;
   uint s;
   k = rate;
   do
    {
       for(s = 0 ; s <200 ; s++) ;  
    }while(--k);
 }


void delay2(uchar k)
 {  
                         
   uchar s;
   for(s = 0 ; s <k ; s++) ;  

   }

/********************************************************/
/*
/*步进电机正转
/*
/********************************************************/
void  motor_ffw()
{ 
   uchar i;
 
    for (i=0; i<8; i++)      //一个周期转30度
    {  
       P0 = FFW[i];//取数据
       addr0 = 1;
       addr1 = 0;
       addr2 = 1;
       addr3 = 1;
       addr3 = 0;
       delay();                 //调节转速
    }
}

/********************************************************/
/*
/*步进电机反转
/*
/********************************************************/
void  motor_rev()
{ 
   uchar i;
 
    for (i=0; i<8; i++)      //一个周期转30度
    {  
       P0 = REV[i]; //取数据
       addr0 = 1;
       addr1 = 0;
       addr2 = 1;
       addr3 = 1;
       addr3 = 0;
       delay();                 //调节转速
    }
}

/********************************************************
*                                                       
*步进电机运行                                               
*                                                      
*********************************************************/
void  motor_turn()
{ 
   uchar x;
   rate=0x30;
   x=0xf0;
   do
     {
        motor_ffw();               //正转加速
        rate--;
     }while(rate!=0x0a);

   do
     {     
        motor_ffw();               //正转匀速
       x--;
     }while(x!=0x01);
  
   do
     {
        motor_ffw();              //正转减速 
        rate++;
     }while(rate!=0x30);    
   do
     {
        motor_rev();               //反转加速
        rate--;
     }while(rate!=0x0a);

   do
     {     
        motor_rev();               //反转匀速
       x--;
     }while(x!=0x01);
  
   do
     {
        motor_rev();               //反转减速 
        rate++;
     }while(rate!=0x30);    
}

/********************************************************
*                                                       
*  主程序                                               
*                                                      
*********************************************************/
main()
{     
   
   P1=0xf0; 

   while(1)
  {
       P0 = 0x00;//ULN2003输出高电平
       addr0 = 1;
       addr1 = 0;
       addr2 = 1;
       addr3 = 1;
       addr3 = 0;
       delay2(255);

       motor_turn();

  } 
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -