标题:
CC2530控制步进电机正反转的源码,调试通过
[打印本页]
作者:
zymmyz
时间:
2018-3-17 15:58
标题:
CC2530控制步进电机正反转的源码,调试通过
CC2530控制步进电机正反转,调试通过。
0.jpg
(46.41 KB, 下载次数: 91)
下载附件
2018-3-17 22:09 上传
分别下载程序到任意一节点连接电机如图所示,观察电机运行情况,可以修改
ucSpeed 调整速度哦,代码分析请看程序中的注释。
单片机源程序如下:
/****************************************************************************
* 文 件 名: main.c
* 作 者: Andy
* 修 订: 2016-03-27
* 版 本: 2.0
* 描 述: 用P04 05 06 07控制步进电机
****************************************************************************/
#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 ucSpeed = 2; //调整速度 建议在1-10范围内
uchar FFW[8]={0x90,0x10,0x30,0x20,0x60,0x40,0xc0,0x80};//正转旋转相序表
uchar REV[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90};//反向旋转相序表
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 MotorFFW(float n)
{
unsigned char i;
unsigned int j;
int movie_count=(int)(8*64*n);
for (j=0; j<movie_count; j++)
{
for (i=0; i<8; i++)
{
MotorData( FFW[i]);//P0 = FFW[i];
Delay_ms(ucSpeed);
}
}
}
//逆时针转动
void MotorREV(float n)
{
unsigned char i;
unsigned int j;
int movie_count=(int)(8*64*n);
for (j=0; j<movie_count; j++)
{
for (i=0; i<8; i++)
{
MotorData(REV[i]);
Delay_ms(ucSpeed);
}
}
}
/****************************************************************************
* 名 称: InitIO()
* 功 能: 初始化IO口程序
* 入口参数: state=0正转 1反转
****************************************************************************/
void ContrlStepMotor(int state, float count)
{
if(state == 0)
{
MotorFFW(count);
}
else
{
MotorREV(count);
}
}
/****************************************************************************
* 名 称: InitIO()
* 功 能: 初始化IO口程序
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void InitIO(void)
{
P0SEL &= 0x0F; //P04 05 06 07定义为普通IO
P0DIR |= 0xF0; //P04 05 06 07定义为输出
}
/****************************************************************************
* 程序入口函数
****************************************************************************/
void main(void)
{
InitIO();
//改变这个参数可以调整电机转速,数字越小,转速越快,力矩越小
ucSpeed = 1; //调整速度建议在1-10范围内,数字越小转速越快力矩越小
while(1)
{
ContrlStepMotor(0, 1);//正转1圈
Delay_ms(3000);
ContrlStepMotor(1, 1);//反转1圈
Delay_ms(3000);
}
}
复制代码
所有资料51hei提供下载:
30.控制步进电机正反转.rar
(577.05 KB, 下载次数: 51)
2018-3-17 15:57 上传
点击文件名下载附件
CC2530控制步进电机正反转
下载积分: 黑币 -5
作者:
zymmyz
时间:
2018-3-17 15:58
该例程调试觉得通过可用。
作者:
fuhaibo
时间:
2021-7-19 16:09
想问下楼主,步进电机和驱动在哪里获取的?还有链接吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1