標(biāo)題:
LPC2148+L293電機驅(qū)動模塊源程序
[打印本頁]
作者:
SSX00
時間:
2020-3-31 18:47
標(biāo)題:
LPC2148+L293電機驅(qū)動模塊源程序
/******************************************************
**四相步進電機驅(qū)動范例,與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接按鍵,控制電機正反轉(zhuǎn)
#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)
{ //正轉(zhuǎn)
if(++i > 7)
i = 0;
}
else
{ //反轉(zhuǎn)
if(--i > 7 )
i = 7;
}
IO1CLR |= LED;
delayms(10); //延時的長短可控制電機轉(zhuǎn)速,不能超過步進電機的最高運行頻率
//并且起動的時候不能超過步進電機的最高起動頻率,否則會失步
}
}
復(fù)制代碼
//文件名:Time.c
//功能: 定時器Timer0的初始化以及定時器中斷函數(shù)和延時函數(shù)
#include <LPC214X.H>
#include "type.h"
unsigned long volatile timeval; //延時用的全局變量
/************************************************************/
/* 函數(shù)名稱 : Tick */
/* 函數(shù)功能 : 定時器中斷函數(shù),每進入一次中斷,timeval加1 */
/* 參數(shù) : 無 */
/* 返回值 : 無 */
/*----------------------------------------------------------*/
void Tick (void) __irq
{
++timeval;
T0IR = 1; // 清除中斷標(biāo)志
VICVectAddr = 0; // 對VICVectAddr執(zhí)行寫操作,通知VIC中斷處理結(jié)束
}
/**********************************************************************/
/* 函數(shù)名稱 : init_timer */
/* 函數(shù)功能 : 定時器timer0的初始化,包括計數(shù)初值,設(shè)置中斷優(yōu)先級等 */
/* 參數(shù) : 無 */
/* 返回值 : 無 */
/*--------------------------------------------------------------------*/
void init_timer (void)
{
T0MR0 = 15000;//1ms的計數(shù)初值,當(dāng)前處理器的時鐘頻率為12 * 5 = 60M,具體設(shè)置見startup.s
T0MCR = 3; // 設(shè)置T0MR0匹配后復(fù)位T0TC,并產(chǎn)生中斷標(biāo)志
T0TCR = 1; //啟動定時器
VICVectAddr0 = (INT32U)Tick;//設(shè)置中斷服務(wù)程序的地址
VICVectCntl0 = 0x20 | 4;//分配timer0中斷到中斷向量0
VICIntEnable |= 1 << 0x00000004;//timer0中斷使能
}
/**********************************************************************/
/* 函數(shù)名稱 : delayms */
/* 函數(shù)功能 : 延時函數(shù) */
/* 參數(shù) : ms,單位ms(毫秒) */
/* 返回值 : 無 */
/*--------------------------------------------------------------------*/
void delayms (unsigned int ms)
{
unsigned long i;
i = timeval;
while ((i + ms) != timeval);
}
復(fù)制代碼
全部資料51hei下載地址:
L293電機驅(qū)動模塊介紹.rar
(764.57 KB, 下載次數(shù): 13)
2020-3-31 18:46 上傳
點擊文件名下載附件
L293電機驅(qū)動模塊資料
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1