- /******************************************************
- **四相步進電機驅動范例,與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電機驅動模塊資料
|