




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、-作者xxxx-日期xxxx步進電機驅動正轉反轉【精品文檔】* 功 能:LED顯示控制。* 通過GPIO控制步進電機* 說 明:將跳線JP14和JP19全部短接。 */#include "config.h"#define MOTOA 1<<10 / P0.10 #define MOTOB 1<<11/ P0.11 #define MOTOC 1<<12/ P0.12 #define MOTOD 1<<13/ P0.13 #define key1 1<<16 / A-B-C-D#define key2 1<&l
2、t;17 / AB-BC-CD-DA-AB#define key3 1<<18 / A-AB-B-BC-C-CD-D-DA-A#define key4 1<<19 /反轉#define key5 1<<20 /停止#define KEYCON0x001f0000 / LED控制字#define MOTOCON0x00003c00 / MOTO控制字#define GPIOSET(PIN) IO0SET = PIN / 方便修改置位端口#define GPIOCLR(PIN)IO0CLR = PIN / 方便修改清位端口#define PSB 1<<
3、;2 /P0.2并行或串行,選擇低電平串行模式#define RST 1<<25 /P1.25,復位腳unsigned char IC_DAT164="電機運行方式組成: A-B-C-D 單四拍 步距角 1.8 " unsigned char IC_DAT264="電機運行方式組成: AB-BC-CD-DA 雙四拍 步距角 0.9 " unsigned char IC_DAT364="電機運行方式組為A-AB-B-BC-C-CD-D 單雙八拍 步距角 0.45 " unsigned char IC_DAT464="
4、; 電機 反 轉 "unsigned char IC_DAT564=" 電機 停 止 "unsigned char IC_DAT664=" 自動化0901班 張凱龍 衡海龍步進電機細分控制盧祖起 郭亞楠"void TransferCom(unsigned char data0);void TransferData(unsigned char data1);void delay(unsigned int m);void delay_10ms(uint32 n);void lcd_mesg(unsigned char *adder1);void D
5、elayNS(uint32 dly);void MOTO_Mode1(uint8 i); / A-B-C-Dvoid MOTO_Mode10(uint8 i);void MOTO_Mode2(uint8 i); / AB-BC-CD-DA-ABvoid MOTO_Mode20(uint8 i);void MOTO_Mode3(uint8 i); / A-AB-B-BC-C-CD-D-DA-Avoid MOTO_Mode30(uint8 i); /* 名 稱:main()* 功 能:根據表DISP_TAB來控制LED顯示。*/int main(void) /* PINSEL2使用啟動代碼的默認配
6、置,切勿任意配置PINSEL2,否則總線會受到干擾 */ PINSEL0=0x00000000; PINSEL1=0X00000000; PINSEL2&=(0x00000006); /設置所有I/O口為普通GPIO口 IO0DIR =MOTOCON; / 配置LED控制I/O方向 LCD12864_init(); initinal(); /液晶端口初始化 while(IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)&&(IO
7、0PIN&key5)!=0) lcd_mesg(IC_DAT6); /顯示界面 while(1) if (IO0PIN&key1)=0) MOTO_Mode1(15); if(IO0PIN&key4)=0) MOTO_Mode10(20); / A-B-C-D if (IO0PIN&key2)=0) MOTO_Mode2(15); if(IO0PIN&key4)=0) MOTO_Mode20(20); / AB-BC-CD-DA-AB if (IO0PIN&key3)=0) MOTO_Mode3(8); if(IO0PIN&key4)=0
8、) MOTO_Mode30(10); / A-AB-B-BC-C-CD-D-DA-A if(IO0PIN&key5)=0) / 停止 initinal(); lcd_mesg(IC_DAT5); IO0CLR=MOTOCON; ; return(0);/* 名 稱:DelayNS()* 功 能:長軟件延時* 入口參數:dly延時參數,值越大,延時越久* 出口參數:無*/void DelayNS(uint32 dly) uint32 i; for(; dly>0; dly-) for(i=0; i<5000; i+); /* 名 稱:MOTO_Mode1()* 功 能:單四拍
9、程序* 入口參數:uint8 i延時參數,值越大,延時越久* 出口參數:無*/void MOTO_Mode1(uint8 i) / A-B-C-Dinitinal(); while(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)&&(IO0PIN&key5)!=0) lcd_mesg(IC_DAT1); /顯示漢字界面1 /* A */ GPIOSET(MOTOA); DelayNS(i); GPIOCLR(MOTOA); /* B */ GPIOSET(MOTOB); Del
10、ayNS(i); GPIOCLR(MOTOB); /* C */ GPIOSET(MOTOC); DelayNS(i); GPIOCLR(MOTOC); /* D */ GPIOSET(MOTOD); DelayNS(i); GPIOCLR(MOTOD); void MOTO_Mode10(uint8 i) / A-B-C-Dinitinal(); while(IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key5)!=0) lcd_mesg(IC_DAT4
11、); /* D */ GPIOSET(MOTOD); DelayNS(i); GPIOCLR(MOTOD); /* C */ GPIOSET(MOTOC); DelayNS(i); GPIOCLR(MOTOC); /* B */ GPIOSET(MOTOB); DelayNS(i); GPIOCLR(MOTOB); /* A */ GPIOSET(MOTOA); DelayNS(i); GPIOCLR(MOTOA); /* 名 稱:MOTO_Mode2()* 功 能:雙四拍程序* 入口參數:uint8 i延時參數,值越大,延時越久* 出口參數:無*/void MOTO_Mode2(uint8
12、i) / AB-BC-CD-DA-AB initinal(); while(IO0PIN&key1)&&(IO0PIN&key3)&&(IO0PIN&key4)&&(IO0PIN&key5)!=0) lcd_mesg(IC_DAT2); /顯示漢字界面2 GPIOSET(MOTOA); GPIOSET(MOTOB); DelayNS(i); GPIOCLR(MOTOA); GPIOCLR(MOTOB); /* BC */ GPIOSET(MOTOB); GPIOSET(MOTOC); DelayNS(i); GPI
13、OCLR(MOTOB); GPIOCLR(MOTOC); /* CD */ GPIOSET(MOTOC); GPIOSET(MOTOD); DelayNS(i); GPIOCLR(MOTOC); GPIOCLR(MOTOD); /* DA */ GPIOSET(MOTOD); GPIOSET(MOTOA); DelayNS(i); GPIOCLR(MOTOD); GPIOCLR(MOTOA); void MOTO_Mode20(uint8 i) / AB-BC-CD-DA-AB initinal(); while(IO0PIN&key1)&&(IO0PIN&ke
14、y2)&&(IO0PIN&key3)&&(IO0PIN&key5)!=0) lcd_mesg(IC_DAT4); GPIOSET(MOTOA); GPIOSET(MOTOD); DelayNS(i); GPIOCLR(MOTOA); GPIOCLR(MOTOD); /* DC */ GPIOSET(MOTOD); GPIOSET(MOTOC); DelayNS(i); GPIOCLR(MOTOD); GPIOCLR(MOTOC); /* CB */ GPIOSET(MOTOC); GPIOSET(MOTOB); DelayNS(i); GPIOC
15、LR(MOTOC); GPIOCLR(MOTOB); /* BA */ GPIOSET(MOTOB); GPIOSET(MOTOA); DelayNS(i); GPIOCLR(MOTOB); GPIOCLR(MOTOA); /* 名 稱:MOTO_Mode3()* 功 能:單雙八拍程序* 入口參數:uint8 i延時參數,值越大,延時越久* 出口參數:無*/void MOTO_Mode3(uint8 i) / A-AB-B-BC-C-CD-D-DA-Ainitinal(); while(IO0PIN&key1)&&(IO0PIN&key2)&&(
16、IO0PIN&key4)&&(IO0PIN&key5)!=0) lcd_mesg(IC_DAT3); /* A */ GPIOSET(MOTOA); DelayNS(i); GPIOCLR(MOTOA); /* AB */ GPIOSET(MOTOA); GPIOSET(MOTOB); DelayNS(i); GPIOCLR(MOTOA); GPIOCLR(MOTOB); /* B */ GPIOSET(MOTOB); DelayNS(i); GPIOCLR(MOTOB); /* BC */ GPIOSET(MOTOB); GPIOSET(MOTOC); Del
17、ayNS(i); GPIOCLR(MOTOB); GPIOCLR(MOTOC); /* C */ GPIOSET(MOTOC); DelayNS(i); GPIOCLR(MOTOC); /* CD */ GPIOSET(MOTOC); GPIOSET(MOTOD); DelayNS(i); GPIOCLR(MOTOC); GPIOCLR(MOTOD); /* D */ GPIOSET(MOTOD); DelayNS(i); GPIOCLR(MOTOD); /* DA */ GPIOSET(MOTOD); GPIOSET(MOTOA); DelayNS(i); GPIOCLR(MOTOD); G
18、PIOCLR(MOTOA); void MOTO_Mode30(uint8 i) / A-AB-B-BC-C-CD-D-DA-Ainitinal(); while(IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key5)!=0) lcd_mesg(IC_DAT4); /* D */ GPIOSET(MOTOD); DelayNS(i); GPIOCLR(MOTOD); /* CD */ GPIOSET(MOTOC); GPIOSET(MOTOD); Dela
19、yNS(i); GPIOCLR(MOTOC); GPIOCLR(MOTOD); /* C */ GPIOSET(MOTOC); DelayNS(i); GPIOCLR(MOTOC); /* BC */ GPIOSET(MOTOB); GPIOSET(MOTOC); DelayNS(i); GPIOCLR(MOTOB); GPIOCLR(MOTOC); /* B */ GPIOSET(MOTOB); DelayNS(i); GPIOCLR(MOTOB); /* AB */ GPIOSET(MOTOA); GPIOSET(MOTOB); DelayNS(i); GPIOCLR(MOTOA); GP
20、IOCLR(MOTOB); /* A */ GPIOSET(MOTOA); DelayNS(i); GPIOCLR(MOTOA); /* DA */ GPIOSET(MOTOD); GPIOSET(MOTOA); DelayNS(i); GPIOCLR(MOTOD); GPIOCLR(MOTOA); /* 名稱:delay()* 功能:延時程序*/void delay(unsigned int m) unsigned int i,j; for(i=0;i<m;i+) for(j=0;j<50;j+);/* 名稱:delay_10ms()* 功能:延時程序*/void delay_1
21、0ms(uint32 n) uint32 i,j; for(i=0;i<n;i+) for(j=0;j<2000;j+);/* 名稱:initinal()* 功能:LCD12864字庫初始化*/ initinal(void) delay_10ms(4); /大于40ms的延時程序 IO0SET=PSB; /設置為串行工作方式 delay(1); IO1CLR=RST; /復位 delay(1); IO1SET=RST; /復位置高 delay(10); TransferCom(0x30); /8bit設置。RE=0.G=0,圖片顯示關 delay(100); TransferCom
22、(0x0C); /D=1,顯示開 delay(100); TransferCom(0x01); /清屏 delay_10ms(1); TransferCom(0x06); /模式設置,光標從右向左加1位移動 delay(100);/* 名稱:lcd_mesg()* 功能:在LCD12864上顯示漢字*/void lcd_mesg(unsigned char *adder1) unsigned char i; TransferCom(0x80); delay(100); for(i=0;i<32;i+) TransferData(*adder1); adder1+; TransferCom(0x90); delay(100); for(i=16;i<64;i+) TransferData(*adder1); adder1+; /* 名稱:SeddByte()* 功能:發送1字節數據*/void SendByte(unsigned ch
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 膩子粉購銷合同示例
- 苗木售后質量協議
- 臨床路徑工作年度總結模版
- 中醫卻地湯與感冒咳嗽
- 如何讓你的手更滋潤
- 北歐色彩之韻-商業空間設計指南
- 家庭汽車保養時間表
- 《財務會計原理》課件
- 2025年高中化學教研組教學工作總結模版
- 企業內部決策如何用區塊鏈增強透明度
- 房地產廣告效果的評測與分析
- 華大新高考聯盟2025屆高三4月教學質量測評歷史+答案
- 2025-2030中國寵物行業市場發展分析及發展趨勢與投資前景預測報告
- AGC-AVC培訓課件教學課件
- 2024年7月27日內蒙古阿拉善盟直機關遴選筆試真題及解析
- 境外道路貨物運輸應急預案
- 軟件測試技術課程教學大綱
- 液壓與氣壓傳動完整版課件
- 機修土坎水平梯田工程施工方案
- 勞動合同范本(1)1
- 蕭紅《呼蘭河傳》賞析
評論
0/150
提交評論