嵌入式

CC2530 步进电机正反转加减速

2022-03-08  本文已影响0人  老中医167788

1.实验目的

1)、过实验掌握 CC2530 芯片 GPIO 的配置方法
2)、掌握步进电机控制原理

2.实验设备

硬件:PC 机一台 ZB2530(底板、核心板、仿真器、USB 线) 一套
软件:2000/XP/win7 系统,IAR 8.10 集成开发环境

3.代码分析

#include <ioCC2530.h>

typedef unsigned char uchar;
typedef unsigned int  uint;


#define A1 P0_4 //定义步进电机连接端口
#define B1 P0_5
#define C1 P0_6
#define D1 P0_7

uchar phasecw[4] ={0x80,0x40,0x20,0x10};//正转 电机导通相序 D-C-B-A
uchar phaseccw[4]={0x10,0x20,0x40,0x80};//反转 电机导通相序 A-B-C-D

void MotorData(uchar data)
{
  A1 = 1&(data>>4);
  B1 = 1&(data>>5);
  C1 = 1&(data>>6);
  D1 = 1&(data>>7);
}

//ms延时函数
void Delay_MS(uint x)
{
  uint i,j;
  for(i=0;i<x;i++)
    for(j=0;j<535;j++);
}

//顺时针转动
void MotorCW(uchar Speed)
{
  uchar i;
  for(i=0;i<4;i++)
  {
    MotorData(phasecw[i]);
    Delay_MS(Speed);//转速调节
  }
}
//逆时针转动
void MotorCCW(uchar Speed)
{
  uchar i;
  for(i=0;i<4;i++)
  {
    MotorData(phaseccw[i]);
    Delay_MS(Speed);//转速调节
  }
}

//停止转动
void MotorStop(void)
{
  MotorData(0x00);
}

/****************************************************************************
* 名    称: InitIO()
* 功    能: 初始化IO口程序
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void InitIO(void)
{
  P0SEL &= 0x0F;  //P04 05 06 07定义为普通IO
  P0DIR |= 0xF0;  //P04 05 06 07定义为输出
}

/****************************************************************************
* 程序入口函数
****************************************************************************/
void main(void)
{
  uint i;
  uchar ucSpeed;
  
  InitIO();
  
  //改变这个参数可以调整电机转速,数字越小,转速越大,力矩越小
  ucSpeed = 3;    //调整速度   建议在2-10范围内

  Delay_MS(50);   //等待系统稳定
  while(1)
  {
    for(i=0;i<500;i++)
    {
      MotorCW(ucSpeed); //顺时针转动
    } 
    MotorStop();        //停止转动   
    Delay_MS(2000);
    
    for(i=0;i<500;i++)
    {
      MotorCCW(ucSpeed);//逆时针转动
    } 
    
    MotorStop();        //停止转动
    Delay_MS(2000);  
  }
}

4.实验现象

点击按照指定的速度 顺时针转动—停止---逆时针转动—停止 如下图:


image.png
上一篇下一篇

猜你喜欢

热点阅读