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