版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計 報 告</p><p> 一、課程設(shè)計的性質(zhì)和目的</p><p> 通過課程設(shè)計,進(jìn)行硬軟件設(shè)計的方法和技能訓(xùn)練,鞏固在課堂上學(xué)到的有關(guān)硬件電路設(shè)計和相應(yīng)程序設(shè)計的基本知識和基本方法,通過具體課題的訓(xùn)練,達(dá)到能獨立閱讀、查閱資料、軟硬件設(shè)計和調(diào)試完善特定功能的目的。</p><p><b> 二、課程設(shè)計的要求
2、</b></p><p> 1、遵循硬件設(shè)計模塊化。</p><p> 2、要求通過自制PCB板、或萬能板、或面包板設(shè)計實物。</p><p> 3、程序設(shè)計結(jié)構(gòu)化。</p><p> 4、要求程序結(jié)構(gòu)合理,程序簡明易懂,有必要的注釋。</p><p> 三、主要儀器設(shè)備及軟件</p>
3、<p> PC機、Keil軟件、、ALTIUM DESINGERS09(PROTEL99)、 Proteus繪圖軟件及仿真等。</p><p> 四、課程設(shè)計題目及要求 </p><p> 見具體課題(有課題老師與選題學(xué)生共同商定)</p><p> 地點: 信息工程學(xué)院實驗室(有教師協(xié)調(diào)安排)</p><p&g
4、t; 元器件領(lǐng)用:由指導(dǎo)教師簽字在行政樓301領(lǐng)取</p><p> 時間安排: 每天集中半天的輔導(dǎo)(具體師生協(xié)商安排)</p><p> 五、課題分析及設(shè)計思路</p><p><b> 硬軟件設(shè)計思路</b></p><p> 基于單片機的步進(jìn)電機控制,可以通過四個按鍵分別實現(xiàn)開始/停止,正傳/反轉(zhuǎn),全速
5、前進(jìn)和單步前進(jìn)。</p><p> 通過外部中斷來控制開始/停止按鍵可實時響應(yīng)按鍵的輸入。由兩個LED分別指示程序的運行狀態(tài),可以方便進(jìn)行操作。</p><p><b> 硬件設(shè)計框圖</b></p><p> 總體硬件電路圖如下所示:</p><p> 硬件設(shè)計電路圖(按模塊設(shè)計)</p><
6、;p><b> 1.單片機最小系統(tǒng)</b></p><p> AT89C51為8 位通用微處理器,主要管腳有:XTAL1(19 腳)和XTAL2(18 腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9 腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。VCC(40 腳)和VSS(20 腳)為供電端口,分別接+5V電源的正負(fù)端。P0~P3 為可編程通用I/O 腳,其功
7、能用途由軟件定義。</p><p> 5l系列單片機提供以下功能:4 kB存儲器;256 BRAM;32條工/O線;2個16b定時/計數(shù)器;5個2級中斷源;1個全雙向的串行口以及時鐘電路。</p><p><b> 2.電機模塊</b></p><p> 步進(jìn)電機是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元步進(jìn)電機件
8、。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,當(dāng)步進(jìn)驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進(jìn)電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度,稱為“步距角”,它的旋轉(zhuǎn)是以固定的角度一步一步運行的。制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。</p><p> 步進(jìn)電動機的勵磁方式可分為全部勵磁及半步勵磁,其中全步勵磁又有1相勵磁及2相勵磁之分,而半步勵磁又稱1—
9、2相勵磁。每輸出一個脈沖信號,步進(jìn)電動機只走一步。因此,依序不斷送出脈沖信號,步進(jìn)電動機即可連續(xù)轉(zhuǎn)動。本設(shè)計選擇半步勵磁(1—2相勵磁): 1—2相勵磁法為1相與2相輪流交替導(dǎo)通。因分辨率提高,且運轉(zhuǎn)平滑,每送一勵磁信號可走9度。若以1—2相勵磁法控制步進(jìn)電動機正轉(zhuǎn),其勵磁順序如下所示(若勵磁信號反向傳送,則步進(jìn)電動機反轉(zhuǎn)):勵磁順序:A—AB—B—BC—C— CD— D— DA</p>
10、;<p> 驅(qū)動電路如下:其中:1B,2B,3B,4B分別與P10,P11.P12,P13相連接。</p><p><b> 步進(jìn)電機時序表:</b></p><p><b> 3.按鍵模塊</b></p><p> 通過四個按鍵分別實現(xiàn)對步進(jìn)電機的不同功能的實現(xiàn),電路圖如下:</p>
11、<p> 開始/停止和方向按鍵分別通過連接單片機的P3.3,P3.2,用外部中斷的方式對其處理,可快速準(zhǔn)確的相應(yīng)中斷,以實現(xiàn)對電機的控制。</p><p><b> 4.LED模塊</b></p><p> 通過兩個LED分別指示開始/停止(D1),正/反轉(zhuǎn)(D2)。電路圖如下:</p><p><b> 軟件設(shè)計思
12、路</b></p><p><b> 軟件功能規(guī)劃</b></p><p> 軟件部分整體功能由開始/停止鍵控制,只有當(dāng)開始/停止鍵按下,LED1(D1)亮?xí)r,才能控制步進(jìn)電機的轉(zhuǎn)動。D1點亮后,由LED2(D2)的亮滅來指示電機的正反轉(zhuǎn),當(dāng)D2燈亮?xí)r,電機正轉(zhuǎn),D2滅時,電機反轉(zhuǎn)。</p><p> 當(dāng)電機全速運行時,可通過
13、開始/停止鍵和方向鍵控制電機停止轉(zhuǎn)動。重新按下按鍵時,電機正常運行。</p><p><b> 軟件流程圖如下:</b></p><p> 六、程序主要代碼與分析(關(guān)鍵代碼要有注釋):</p><p> #include <reg51.h> //51芯片管腳定義頭文件</p><p> #inc
14、lude <intrins.h> //內(nèi)部包含延時函數(shù) _nop_();</p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0
15、x09}; //正轉(zhuǎn)電機編碼</p><p> uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //反轉(zhuǎn)電機編碼</p><p> sbit K1 = P3^0; //全速 </p><p> sbit K2 = P3^1; //單步 </p&g
16、t;<p> sbit K3 = P3^2; //正/反轉(zhuǎn) </p><p> sbit K4 = P3^3; //開始/停止 </p><p> sbit led1 = P0^0; //指示燈,表示開始/停止?fàn)顟B(tài)</p><p> sbit led2 = P0^2; //指示燈,表示正
17、轉(zhuǎn)/反轉(zhuǎn)狀態(tài)</p><p> int num=500; //延時函數(shù)的常量,控制步進(jìn)電機的轉(zhuǎn)速</p><p> uchar h=0; //設(shè)置變量,控制單步運行</p><p> uchar flag = 0; //控制運行狀態(tài),控制開始/停止 </p><p> uchar flag1 = 0;
18、 //控制運行狀態(tài),控制正轉(zhuǎn)/反轉(zhuǎn)</p><p> void motor_ffw(); //函數(shù)聲明</p><p> void motor_rev(); </p><p> void motor_ffw2();</p><p> / /* 延時t毫秒,11.0592MHz時鐘,延時約1ms </p>
19、<p> void delay(int t) </p><p> { </p><p> uint k; </p><p> while(t--) </p><p><b> { </b></p>
20、<p> for(k=0; k<20; k++) </p><p><b> {} </b></p><p><b> } </b></p><p><b> }</b></p><p> / /*步進(jìn)電機正轉(zhuǎn)單步執(zhí)行 </p&
21、gt;<p> void motor_single() </p><p><b> { </b></p><p> P1 = FFW[h]; //取數(shù)據(jù),單步轉(zhuǎn)45度 </p><p> delay(num*2); //調(diào)節(jié)轉(zhuǎn)速 </p>
22、<p> h++; //全局變量,控制單步的次數(shù)</p><p> if(h == 8)</p><p><b> {</b></p><p><b> h = 0;</b></p><p><b> } </b></p><p&g
23、t;<b> }</b></p><p> / /*步進(jìn)電機反轉(zhuǎn)單步執(zhí)行 </p><p> void motor_single_cov() </p><p><b> { </b></p><p> P1 = REV[h]; //取數(shù)據(jù),單步轉(zhuǎn)45度
24、 </p><p> delay(num*2); //調(diào)節(jié)轉(zhuǎn)速 </p><p><b> h++; </b></p><p> if(h == 8)//全局變量,控制單步的次數(shù)</p><p><b> {</b></p><p&
25、gt;<b> h = 0;</b></p><p><b> } </b></p><p><b> }</b></p><p> / /*步進(jìn)電機正轉(zhuǎn) </p><p> void motor_ffw()</p><p><b
26、> { </b></p><p> char i; </p><p> for (i=0; ; i++) //一個周期轉(zhuǎn)45度 </p><p> { </p><p> P1 = FFW[i]; //取數(shù)據(jù) &l
27、t;/p><p> if(K4 == 0 || K3 == 0) //若K1按下,則停止 </p><p><b> {</b></p><p> delay(5); //延時去抖動</p><p><b> break;</b></p><p> }
28、 //退出此循環(huán)程序 </p><p> delay(num); //調(diào)節(jié)轉(zhuǎn)速 </p><p><b> if(i > 7)</b></p><p> i = 0; </p><p><b> } </b>&
29、lt;/p><p><b> }</b></p><p> / /*步進(jìn)電機反轉(zhuǎn) </p><p> void motor_rev() </p><p><b> { </b></p><p> char i; </p>
30、<p> for (i=0; ; i++) //一個周期轉(zhuǎn)45度 </p><p> { </p><p> P1 = REV[i]; //取數(shù)據(jù) </p><p> if(K4 == 0 || K3 == 0) //若K1按下,則停止</p><p>
31、<b> {</b></p><p> delay(5);//延時去抖動</p><p><b> break;</b></p><p> } //退出此循環(huán)程序 </p><p> delay(num); //調(diào)節(jié)轉(zhuǎn)速
32、 </p><p><b> if(i > 6)</b></p><p><b> i = 0; </b></p><p><b> } </b></p><p><b> }</b></p><p> //主
33、程序 </p><p> void main(void) </p><p><b> { </b></p><p> EA=1; //開放總中斷 </p><p> EX0=1; //允許使用外中斷0 </p><p> IT0=1; //選
34、擇負(fù)跳變來觸發(fā)外中斷 </p><p> EX1=1; //允許使用外中斷1 </p><p> IT1=1; //選擇負(fù)跳變來觸發(fā)外中斷 </p><p> while(1) //掃描查詢按鍵狀態(tài)</p><p><b> { </b></p><p> i
35、f(K1 == 0 && flag1 == 0 && flag == 1) //K1是否被按下 </p><p><b> { </b></p><p><b> delay(5);</b></p><p> while(!K1); </p><p&
36、gt; motor_rev(); //flag1 =0,步進(jìn)電機反轉(zhuǎn) </p><p> } </p><p> if(K1 == 0 && flag1 == 1 && flag == 1) </p><p><b> { </b></p><p>
37、;<b> delay(5);</b></p><p> while(!K1); </p><p> motor_ffw(); //flag1 =1,步進(jìn)電機正轉(zhuǎn)</p><p><b> } </b></p><p> if(K2 == 0 && flag1
38、 == 0 && flag == 1) </p><p><b> { </b></p><p><b> delay(5);</b></p><p> while(!K2); </p><p> motor_single_cov(); //flag1
39、 =0,電機反轉(zhuǎn)單步執(zhí)行 </p><p><b> } </b></p><p> if(K2 == 0 && flag1 == 1 && flag == 1) </p><p><b> { </b></p><p><b>
40、 delay(5);</b></p><p> while(!K2); </p><p> motor_single(); //flag1 =1,電機正轉(zhuǎn)單步執(zhí)行 </p><p><b> } </b></p><p> else </p><
41、p> P1 = 0xf0; </p><p><b> } </b></p><p><b> }</b></p><p> /******************************************************/ </p><p>
42、 void int0() interrupt 0 //外中斷0的中斷編號為0 </p><p><b> { </b></p><p> led2 = ~led2;//取反led2</p><p><b> flag1++; </b></p><p> if(flag1 == 2
43、) //flag1表示正反狀態(tài)</p><p><b> {</b></p><p> flag1 = 0; //flag1 = 0為反轉(zhuǎn)</p><p><b> }</b></p><p><b> } </b></p><p> v
44、oid int1() interrupt 2 //外中斷0的中斷編號為1 </p><p><b> { </b></p><p> led1 = ~led1;//取反led1</p><p> flag++;//flag值為1,表示開始狀態(tài)</p><p> if(flag == 2)//再次
45、按下,清flag = 0</p><p><b> {</b></p><p> flag = 0;//flag值為0,表示停止?fàn)顟B(tài)</p><p><b> }</b></p><p><b> } </b></p><p><b>
46、; 七、調(diào)試與分析</b></p><p> 驗正結(jié)果截圖或?qū)嵨镎掌c分析</p><p> 1.驗證結(jié)果截圖如下:</p><p><b> 2.分析:</b></p><p> 通過實際的按鍵檢測可以發(fā)現(xiàn)使用按鍵中斷的方法控制步進(jìn)電機的轉(zhuǎn)動,可以做到響應(yīng)速度快,結(jié)果準(zhǔn)確。相比較查詢方式更加的靈活
47、。而使用LED燈指示程序的運行狀態(tài),則更加的直觀。</p><p><b> 參考文獻(xiàn)</b></p><p><b> 例說51單片機</b></p><p><b> 九、心得體會</b></p><p> 通過本次課程設(shè)計,使用單片機完成了對步進(jìn)電機的綜合控制,程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計步進(jìn)電機
- 步進(jìn)電機課程設(shè)計
- 步進(jìn)電機課程設(shè)計--- 步進(jìn)電機控制系統(tǒng)
- 步進(jìn)電機課程設(shè)計--步進(jìn)電機控制系統(tǒng)
- 課程設(shè)計---步進(jìn)電機控制
- 步進(jìn)電機課程設(shè)計報告
- 步進(jìn)電機課程設(shè)計---步進(jìn)電機控制系統(tǒng)的設(shè)計
- 課程設(shè)計-步進(jìn)電機控制步進(jìn)電機轉(zhuǎn)速實時控制
- 步進(jìn)電機課程設(shè)計報告---步進(jìn)電機控制系統(tǒng)
- 步進(jìn)電機課程設(shè)計報告--步進(jìn)電機控制系統(tǒng)設(shè)計
- 步進(jìn)電機控制a課程設(shè)計報告
- 步進(jìn)電機專業(yè)課程設(shè)計--步進(jìn)電機控制系統(tǒng)設(shè)計
- 步進(jìn)電機控制課程設(shè)計--步進(jìn)電機脈沖分配電路的設(shè)計
- 單片機課程設(shè)計--步進(jìn)電機
- 步進(jìn)電機轉(zhuǎn)速實時控制課程設(shè)計
- 步進(jìn)電機的控制課程設(shè)計報告
- 步進(jìn)電機課程設(shè)計報告----步進(jìn)馬達(dá)控制電路
- 步進(jìn)電機的設(shè)計與控制課程設(shè)計
- 微機原理課程設(shè)計---步進(jìn)電機設(shè)計
- 單片機課程設(shè)計---步進(jìn)電機
評論
0/150
提交評論