📄 stepmot.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 A. Lichte taken over from STK16X.506
*****************************************************************************/
/****************************************************************************
*
* availability summary
*
* available for Starterkit: STK16X STK16XU
* conformed for Starterkit: STK16X STK16XU
* available for Modul : TQM164 TQM165 TQM165U TQM166 TQM167
* TQM167UL TQM167U TQM167LC
*
* conformed for Modul : TQM164 TQM165 TQM165U TQM166 TQM167
* TQM167UL TQM167U TQM167LC
*****************************************************************************/
/*==========================================================================*
* 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.h" /* include LC display functions */
#include "led.h" /* include LED functions */
#include "motor.h" /* include motor 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();
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 + -