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

📄 stepping motor-simple-02.c

📁 用s51控制电机正,反转,汇编,c源程序,步进电机加速-减速运行
💻 C
字号:
/******************************************************************/
/*                                                                */
/* ME500单片机开发系统演示程序 - 步进电机加减速运行               */
/*                                                                */
/* 步进电机启动时,转速由慢到快逐步加速。                         */
/* 步进电机匀速运行                                               */ 
/* 步进电机由快到慢逐步减速到停止                                 */
/*                                                                */
/* 版本: V1.0 (2006/11/20)                                       */
/* 作者: gguoqing (Email: gguoqing@willar.com)                   */
/* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界)*/
/* 邮箱: support@willar.com                                      */
/*                                                                */
/*【版权】COPYRIGHT(C)伟纳电子 www.willar.com ALL RIGHTS RESERVED */
/*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!      */
/*                                                                */
/******************************************************************/
    
#include <reg51.h>       //51芯片管脚定义头文件
#include <intrins.h>	 //内部包含延时函数 _nop_();

#define uchar unsigned char
#define uint  unsigned int

sbit  K1=P1^4;
uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
//uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
uchar rate ;        
/********************************************************/
/*                                                  
/* 延时
/* 11.0592MHz时钟,                                    
/*                                                      
/********************************************************/
void delay()
 {                           
   uchar k;
   uint s;
   k = rate;
   do
   {
    for(s = 0 ; s <1000 ; s++) ;		
   }while(--k);
 }
/********************************************************/
/*
/*步进电机正转
/*
/********************************************************/
void  motor_ffw()
 { 
   uchar i;
 
    for (i=0; i<8; i++)     //一个周期转30度
    {
      P1 = FFW[i];        //取数据
      delay();            //调节转速
    }
 }

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

   do
     { 	   
	   motor_ffw();        //匀速
	   x--;
	 }while(x!=0x01);
	 
   do
     {
	  motor_ffw();         //减速
      rate++;
	 }while(rate!=0x0a);    
}

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

   while(1)
  {
    P1=0xf0;
	if(K1==0)
    {
      motor_turn();
    }
  } 
}

/********************************************************/      	   	   

⌨️ 快捷键说明

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