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