标题:
LPC2148+L293电机驱动模块源程序
[打印本页]
作者:
SSX00
时间:
2020-3-31 18:47
标题:
LPC2148+L293电机驱动模块源程序
/******************************************************
**四相步进电机驱动范例,与LPC2148核心板接线如下**
**P1.16--------------In1**
**P1.17--------------In2**
**P1.18--------------In3**
**P1.19--------------In4**
******************************************************/
#include <LPC214X.H>
#include "Timer.h"
#include "type.h"
#define key (1 << 16) //P0.16接按键,控制电机正反转
#define LED (1 << 24) //P1.24控制LED
INT8U direction;
const INT8U phasic_tab[]={0x01,0x03,0x02,0x05,0x04,0x0c,0x08,0x09}; //四相八拍
int main()
{
INT8U i;
init_timer(); //定时器初始化
IO1DIR = 0x01ff0000;//P1.16-P1.24 使能输出
while(1)
{
IO1SET |= LED;
if(! (IO0PIN & key))
{
delayms(20); //延时去抖动
if(! (IO0PIN & key))
direction ^= 0xff; //方向取反
while(! (IO0PIN & key));
}
IO1PIN = (IO1PIN & 0xff00ffff) | (INT32U)(phasic_tab[i] << 16); //输出脉冲
if(direction)
{ //正转
if(++i > 7)
i = 0;
}
else
{ //反转
if(--i > 7 )
i = 7;
}
IO1CLR |= LED;
delayms(10); //延时的长短可控制电机转速,不能超过步进电机的最高运行频率
//并且起动的时候不能超过步进电机的最高起动频率,否则会失步
}
}
复制代码
//文件名:Time.c
//功能: 定时器Timer0的初始化以及定时器中断函数和延时函数
#include <LPC214X.H>
#include "type.h"
unsigned long volatile timeval; //延时用的全局变量
/************************************************************/
/* 函数名称 : Tick */
/* 函数功能 : 定时器中断函数,每进入一次中断,timeval加1 */
/* 参数 : 无 */
/* 返回值 : 无 */
/*----------------------------------------------------------*/
void Tick (void) __irq
{
++timeval;
T0IR = 1; // 清除中断标志
VICVectAddr = 0; // 对VICVectAddr执行写操作,通知VIC中断处理结束
}
/**********************************************************************/
/* 函数名称 : init_timer */
/* 函数功能 : 定时器timer0的初始化,包括计数初值,设置中断优先级等 */
/* 参数 : 无 */
/* 返回值 : 无 */
/*--------------------------------------------------------------------*/
void init_timer (void)
{
T0MR0 = 15000;//1ms的计数初值,当前处理器的时钟频率为12 * 5 = 60M,具体设置见startup.s
T0MCR = 3; // 设置T0MR0匹配后复位T0TC,并产生中断标志
T0TCR = 1; //启动定时器
VICVectAddr0 = (INT32U)Tick;//设置中断服务程序的地址
VICVectCntl0 = 0x20 | 4;//分配timer0中断到中断向量0
VICIntEnable |= 1 << 0x00000004;//timer0中断使能
}
/**********************************************************************/
/* 函数名称 : delayms */
/* 函数功能 : 延时函数 */
/* 参数 : ms,单位ms(毫秒) */
/* 返回值 : 无 */
/*--------------------------------------------------------------------*/
void delayms (unsigned int ms)
{
unsigned long i;
i = timeval;
while ((i + ms) != timeval);
}
复制代码
全部资料51hei下载地址:
L293电机驱动模块介绍.rar
(764.57 KB, 下载次数: 13)
2020-3-31 18:46 上传
点击文件名下载附件
L293电机驱动模块资料
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1