motor.c

来自「富士通单片机实现红外遥控电子云台」· C语言 代码 · 共 85 行

C
85
字号
/*-----------------------------------------------------------------------------
   电机控制模块,控制电机水平和垂直电机上下左右运动
-----------------------------------------------------------------------------*/
#include"mb95100.h"

unsigned char clkwise[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; /* 顺时钟转动 */
unsigned char antiwise[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; /* 逆时钟转动 */

void MotorControlLeft (void);
void MotorControlRight (void);
void MotorControlUp (void);
void MotorControlDown (void);
/*-----------------------------------------------------------------------------
   函数原型: void MotorControlLeft (void)
   输入参数:无
   输出参数:无
   功能描述: 水平电机机芯向左转一圈,电机传动轴转动一定角度
-----------------------------------------------------------------------------*/
void MotorControlLeft (void)
{
  unsigned char i;
  i  = 0x00;
  for(i;i<7;i++)
  {
    PDR6  = clkwise[i];
    delay(0x04ff,0x00ff);
  }
  PDR6  = 0x00;   //抬高电机数据位电压,使电机绕组两端电势相同,
                  //电机上没有电流流过,降低功耗
}

/*-----------------------------------------------------------------------------
   函数原型: void MotorControlRight (void)
   输入参数:无
   输出参数:无
   功能描述: 水平电机机芯向右转一圈,电机传动轴转动一定角度
-----------------------------------------------------------------------------*/
void MotorControlRight (void)
{
  unsigned char i;
  i  = 0x00;
  for(i;i<7;i++)
  {
    PDR6  = antiwise[i];
    delay(0x04ff,0x00ff);
  }
  PDR6  = 0x00;   
}

/*-----------------------------------------------------------------------------
   函数原型: void MotorControlUp (void)
   输入参数:无
   输出参数:无
   功能描述: 垂直电机机芯转一圈,电机传动轴转动一定角度
-----------------------------------------------------------------------------*/
void MotorControlUp (void)
{
  unsigned char i;
  i  = 0x00;
  for(i;i<7;i++)
  {
    PDR2  = clkwise[i];
    delay(0x04ff,0x00ff);
  }
  PDR2  = 0x00;   
}

/*-----------------------------------------------------------------------------
   函数原型: void MotorControlDown (void)
   输入参数:无
   输出参数:无
   功能描述: 垂直电机机芯转一圈,电机传动轴转动一定角度
-----------------------------------------------------------------------------*/
void MotorControlDown (void)
{
  unsigned char i;
  i  = 0x00;
  for(i;i<7;i++)
  {
    PDR2  = antiwise[i];
    delay(0x04ff,0x00ff);
  }
  PDR2  = 0x00;   
}

⌨️ 快捷键说明

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