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

📄 stepmot.c

📁 TQ公司的STK16x开发系统的源码
💻 C
字号:
/* Stepmot.C */

/****************************************************************************
*
* STK16X.MAIN
* ===========
*
* Main module for STK16X stepping motor demo
*                 
* TQ-Systems GmbH                                                         
* ---------------                                                         
* Customer: TQ-Components
* Project : STK16XSW
* Tools   : uVision 2.05
*
* 
* Rev: Date:     Name:            Modification:
* ----+---------+----------------+------------------------------------------
* 100  16.01.01  K. Zoepf       taken over from STK16X.506                
*****************************************************************************/

/****************************************************************************
*
*                            availability summary
*
* available for Starterkit: STK16XU
* conformed for Starterkit: STK16XU 
* available for Modul     : TQM167UL TQM167U  TQM167UE
*                           
* conformed for Modul     : TQM167UL TQM167U  TQM167UE
*
*****************************************************************************/
/*==========================================================================*
* pragmas:
*===========================================================================*/

/*==========================================================================*
* include files (#INCLUDE):
*===========================================================================*/

/*--------------------------------------------------------------------------*
* standard include files: 
*---------------------------------------------------------------------------*/
#include <ctype.h>              /* typecast functions        */
#include <string.h>             /* string functions          */
#include <setjmp.h>             /* global jump functions     */
#include <absacc.h>             /* absolute accesss          */
#include <intrins.h>            /* intrinsic functions       */
#include <reg167.h>             /* special function register     */

/*--------------------------------------------------------------------------*
* project specific include files:
*---------------------------------------------------------------------------*/
#include "timer.h"              /* include timer functions       */
#include "lcd_u.h"                /* include LC display functions  */
#include "led.h"                /* include LED functions         */
#include "motor_u.h"              /* include motor functions       */
#include "stkreg_u.h"             /* access motor and LCD functions */

/*==========================================================================*
* module internal definitions (#DEFINE):
*===========================================================================*/
#define STEP_DELAY_SLOW  10000  /* stepping motor delay x 20us   */
#define STEP_DELAY_FAST1   500  /* stepping motor delay x 20us   */
#define STEP_DELAY_FAST2    80  /* stepping motor delay x 20us   */

/*==========================================================================*
* module internal type declarations (TYPEDEF):
*===========================================================================*/

/*==========================================================================*
* module internal constants (CONST):
*===========================================================================*/

/*==========================================================================*
* extern available constants (CONST):
*===========================================================================*/

/*==========================================================================*
* modul internal variables:
*===========================================================================*/

/*==========================================================================*
* globale external available variables (EXTERN):
*===========================================================================*/

/*==========================================================================*
* modul internal functions:
*===========================================================================*/

/*--------------------------------------------------------------------------*
* void main()
*---------------------------------------------------------------------------*
* FT: main function for stepping motor demo
* EP: -
* RV: -
* GP: 
*---------------------------------------------------------------------------*/ 
void main()
{ int i, j;

  timer_init(NULL);
  led_init();
  stkreg_init();
  lcd_init();
  lcd_center(0, "STEPPING MOTOR");
  lcd_center(1, "demonstration");
	
  /* LED demo: */
  for (i=0; i<LED_MAX+1; i++)
  {
    led_set(i, LED_ON);
    timer_delay_10ms(8);
  } 
  for (i=0; i<LED_MAX+1; i++)
  {
    led_set(i, LED_OFF);
    timer_delay_10ms(8);
  } 

  /* endless main loop: */
  while(1)
  {
    /* full step 1 demo: */
    lcd_center(1, "Full step mode 1");
    motor_init(0);
    motor_setdir(MOTOR_CW);
    motor_enable();
    for (i=0; i<24; i++)
    { 
      motor_step();
      timer_delay_20us(STEP_DELAY_SLOW);
    }
    motor_disable();
    timer_delay_10ms(50);

    /* full step 2 demo: */
    lcd_center(1, "Full step mode 2");
    motor_init(1);
    motor_enable();
    for (i=0; i<24; i++)
    { 
      motor_step();
      timer_delay_20us(STEP_DELAY_SLOW);
    }
    motor_disable();
    timer_delay_10ms(50);

    /* half step demo: */    
    lcd_center(1, "Half step mode");
    motor_init(2);
    motor_enable();
    for (i=0; i<24; i++)
    { 
      motor_step();
      timer_delay_20us(STEP_DELAY_SLOW);
    }
    timer_delay_10ms(50);

    /* turn back: */    
    lcd_center(1, "Turn back");
    motor_setdir(MOTOR_CCW);
    for (i=0; i<24; i++)
    { 
      motor_step();
      timer_delay_20us(STEP_DELAY_FAST1);
    }
    timer_delay_10ms(50);

    /* high speed demo: */    
    lcd_center(1, "High speed demo");
    motor_setdir(MOTOR_CW);
    for (i=0; i<96; i++)
    { 
      motor_step();
      timer_delay_20us(STEP_DELAY_FAST2);
    }
    timer_delay_10ms(50);

    motor_setdir(MOTOR_CCW);
    for (i=0; i<96; i++)
    { 
      motor_step();
      timer_delay_20us(STEP_DELAY_FAST2);
    }
    timer_delay_10ms(50);

    /* acceleration demo: */    
    lcd_center(1, "Acceleration");
    motor_setdir(MOTOR_CW);
    {
      for (j=40; j>7 ; j--)
      {
        for (i=21-j/2; i>0; i--)
        {
          motor_step();
          timer_delay_20us(j*j + 10);
        }
      }
      for (i=0; i<159; i++)
      {
        motor_step();
        timer_delay_20us(j*j);
      }
      for (j=8; j<41; j++)
      {
        for (i=0; i<21-j/2; i++)
        {
          motor_step();
          timer_delay_20us(j*j + 10);
        }
      }
    }
    motor_disable();
    timer_delay_10ms(50);
  }
}

⌨️ 快捷键说明

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