單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的四相步進(jìn)電機(jī)控制_第1頁(yè)
已閱讀1頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  編號(hào)</b></p><p><b>  課程設(shè)計(jì)(論文)</b></p><p><b>  相關(guān)資料</b></p><p>  題目: 基于單片機(jī)的四相步進(jìn)電機(jī)控制</p><p>  學(xué) 院 </p><p

2、><b>  專 業(yè) </b></p><p>  學(xué) 號(hào) </p><p>  學(xué)生姓名 </p><p>  指導(dǎo)教師 </p><p>  二〇一二年六月二十五日</p><p><b>

3、  目錄</b></p><p><b>  第1章 概述2</b></p><p>  第2章 設(shè)計(jì)內(nèi)容的介紹3</p><p>  2.1步進(jìn)電機(jī)原理3</p><p>  2.2步進(jìn)電機(jī)的分類和選擇4</p><p>  2.3 設(shè)計(jì)目標(biāo)……………………………………………

4、……………………………………5.</p><p>  第3章 設(shè)計(jì)思路 具體內(nèi)容6</p><p><b>  3.1設(shè)計(jì)思路6</b></p><p>  3.2總體設(shè)計(jì)框圖及電路原理圖6</p><p>  3.3單片機(jī)及其最小系統(tǒng)7</p><p>  3.4 按鍵電路7</

5、p><p>  3.5 步進(jìn)電機(jī)狀態(tài)顯示電路8</p><p>  3.6 步進(jìn)電機(jī)驅(qū)動(dòng)電路9</p><p>  第四章 程序設(shè)計(jì)9</p><p>  4.1 程序設(shè)計(jì)思路9</p><p>  4.2 主程序設(shè)計(jì)10</p><p><b>  第五章 總結(jié)10</

6、b></p><p><b>  參考文獻(xiàn)10</b></p><p>  附錄………………………………………………………………………………………………11</p><p><b>  第1章 概述</b></p><p>  步進(jìn)電機(jī)最早是在1920年由英國(guó)人所開發(fā)。1950年后期晶體管的

7、發(fā)明也逐漸應(yīng)用在步進(jìn)電機(jī)上,這對(duì)于數(shù)字化的控制變得更為容易。以后經(jīng)過不斷改良,使得今日步進(jìn)電機(jī)已廣泛運(yùn)用在需要高定位精度、高分解性能、高響應(yīng)性、信賴性等靈活控制性高的機(jī)械系統(tǒng)中。在生產(chǎn)過程中要求自動(dòng)化、省人力、效率高的機(jī)器中,我們很容易發(fā)現(xiàn)步進(jìn)電機(jī)的蹤跡,尤其以重視速度、位置控制、需要精確操作各項(xiàng)指令動(dòng)作的靈活控制性場(chǎng)合步進(jìn)電機(jī)用得最多。步進(jìn)電機(jī)作為執(zhí)行元件,是機(jī)電一體化的關(guān)鍵產(chǎn)品之一, 廣泛應(yīng)用在各種自動(dòng)化控制系統(tǒng)中。隨著微電子和計(jì)算

8、機(jī)技術(shù)的發(fā)展,步進(jìn)電機(jī)的需求量與日俱增,在各個(gè)國(guó)民經(jīng)濟(jì)領(lǐng)域都有應(yīng)用。</p><p>  步進(jìn)電機(jī)是將電脈沖信號(hào)變換成角位移或直線位移的執(zhí)行部件。步進(jìn)電機(jī)可以直接用數(shù)字信號(hào)驅(qū)動(dòng),使用非常方便。一般電動(dòng)機(jī)都是連續(xù)轉(zhuǎn)動(dòng)的,而步進(jìn)電動(dòng)機(jī)則有定位和運(yùn)轉(zhuǎn)兩種基本狀態(tài),當(dāng)有脈沖輸入時(shí)步進(jìn)電動(dòng)機(jī)一步一步地轉(zhuǎn)動(dòng),每給它一個(gè)脈沖信號(hào),它就轉(zhuǎn)過一定的角度。步進(jìn)電動(dòng)機(jī)的角位移量和輸入脈沖的個(gè)數(shù)嚴(yán)格成正比,在時(shí)間上與輸入脈沖同步,因此只

9、要控制輸入脈沖的數(shù)量、頻率及電動(dòng)機(jī)繞組通電的相序,便可獲得所需的轉(zhuǎn)角、轉(zhuǎn)速及轉(zhuǎn)動(dòng)方向。在沒有脈沖輸入時(shí),在繞組電源的激勵(lì)下氣隙磁場(chǎng)能使轉(zhuǎn)子保持原有位置處于定位狀態(tài)。因此非常適合于單片機(jī)控制。步進(jìn)電機(jī)還具有快速啟動(dòng)、精確步進(jìn)和定位等特點(diǎn),因而在數(shù)控機(jī)床,繪圖儀,打印機(jī)以及光學(xué)儀器中得到廣泛的應(yīng)用。步進(jìn)電動(dòng)機(jī)已成為除直流電動(dòng)機(jī)和交流電動(dòng)機(jī)以外的第三類電動(dòng)機(jī)。傳統(tǒng)電動(dòng)機(jī)作為機(jī)電能量轉(zhuǎn)換裝置,在人類的生產(chǎn)和生活進(jìn)入電氣化過程中起著關(guān)鍵的作用。步

10、進(jìn)電機(jī)可以作為一種控制用的特種電機(jī),利用其沒有積累誤差(精度為100%)的特點(diǎn),廣泛應(yīng)用于各種開環(huán)控制。</p><p>  第2章 設(shè)計(jì)內(nèi)容的介紹 </p><p><b>  2.1步進(jìn)電機(jī)原理</b></p><p>  步進(jìn)電機(jī)的工作就是步進(jìn)轉(zhuǎn)動(dòng),其功用是將脈沖電信號(hào)變換為相應(yīng)的角位移或是直線位移,就是給一個(gè)脈沖信號(hào),電動(dòng)機(jī)轉(zhuǎn)動(dòng)一個(gè)角度

11、或是前進(jìn)一步。步進(jìn)電機(jī)的角位移量與脈沖數(shù)成正比,它的轉(zhuǎn)速與脈沖頻率(f)成正比,在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個(gè)脈沖信號(hào),電機(jī)則轉(zhuǎn)過一個(gè)步距角。</p><p>  如下所示的步進(jìn)電機(jī)為一四相步進(jìn)電機(jī),采用單極性直流電源供電。只要對(duì)步進(jìn)電機(jī)的各相繞組按合適的時(shí)序通電,就能使步進(jìn)電機(jī)步進(jìn)轉(zhuǎn)動(dòng)。圖1是該四相反應(yīng)式步進(jìn)電機(jī)工作原理示意圖。<

12、;/p><p>  圖2-1 四相步進(jìn)電機(jī)步進(jìn)示意圖</p><p>  開始時(shí),開關(guān)SB接通電源,SA、SC、SD斷開,B相磁極和轉(zhuǎn)子0、3號(hào)齒對(duì)齊,同時(shí),轉(zhuǎn)子的1、4號(hào)齒就和C、D相繞組磁極產(chǎn)生錯(cuò)齒,2、5號(hào)齒就和D、A相繞組磁極產(chǎn)生錯(cuò)齒。</p><p>  當(dāng)開關(guān)SC接通電源,SB、SA、SD斷開時(shí),由于C相繞組的磁力線和1、4號(hào)齒之間磁力線的作用,使轉(zhuǎn)子轉(zhuǎn)動(dòng),

13、1、4號(hào)齒和C相繞組的磁極對(duì)齊。而0、3號(hào)齒和A、B相繞組產(chǎn)生錯(cuò)齒,2、5號(hào)齒就和A、D相繞組磁極產(chǎn)生錯(cuò)齒。依次類推,A、B、C、D</p><p>  四相繞組輪流供電,則轉(zhuǎn)子會(huì)沿著A、B、C、D方向轉(zhuǎn)動(dòng)。</p><p>  單四拍、雙四拍與八拍工作方式的電源通電時(shí)序與波形分別如圖2-2所示:</p><p>  圖2-2 步進(jìn)電機(jī)工作時(shí)序波形圖</p&g

14、t;<p>  2.2 步進(jìn)電機(jī)的分類與選擇</p><p>  現(xiàn)在比較常用的步進(jìn)電機(jī)包括反應(yīng)式步進(jìn)電機(jī)(VR)、永磁式步進(jìn)電機(jī)(PM)、混合式步進(jìn)電機(jī)(HB)和單相式步進(jìn)電機(jī)等。</p><p>  反應(yīng)式步進(jìn)電動(dòng)機(jī)采用高導(dǎo)磁材料構(gòu)成齒狀轉(zhuǎn)子和定子,其結(jié)構(gòu)簡(jiǎn)單,生產(chǎn)成本低,步距角可以做的相當(dāng)小,一般為三相,可實(shí)現(xiàn)大轉(zhuǎn)矩輸出,步進(jìn)角一般為1.5度,但噪聲和振動(dòng)都很大。反應(yīng)式

15、步進(jìn)電機(jī)的轉(zhuǎn)子磁路由軟磁材料制成,定子上有多相勵(lì)磁繞組,利用磁導(dǎo)的變化產(chǎn)生轉(zhuǎn)矩,但動(dòng)態(tài)性能相對(duì)較差。</p><p>  永磁式步進(jìn)電機(jī)轉(zhuǎn)子采用多磁極的圓筒形的永磁鐵,在其外側(cè)配置齒狀定子。用轉(zhuǎn)子和定子之間的吸引和排斥力產(chǎn)生轉(zhuǎn)動(dòng),它的出力大,動(dòng)態(tài)性能好,但步距角一般比較大。一般為兩相,轉(zhuǎn)矩和體積較小,步進(jìn)角一般為7.5度 或15度。</p><p>  混合式步進(jìn)電機(jī)是指混合了永磁式和反應(yīng)

16、式的優(yōu)點(diǎn)。它又分為兩相和五相:兩相步進(jìn)角一般為1.8度而五相步進(jìn)角一般為 0.72度。這種步進(jìn)電機(jī)的應(yīng)用最為廣泛,它是PM和VR的復(fù)合產(chǎn)品,其轉(zhuǎn)子采用齒狀的稀土永磁材料,定子則為齒狀的突起結(jié)構(gòu)。此類電機(jī)綜合了反應(yīng)式和永磁式兩者的優(yōu)點(diǎn),步距角小,出力大,動(dòng)態(tài)性能好,是性能較好的一類步進(jìn)電動(dòng)機(jī),在計(jì)算機(jī)相關(guān)的設(shè)備中多用此類電機(jī)。</p><p>  步進(jìn)電機(jī)有步距角(涉及到相數(shù))、靜轉(zhuǎn)矩、及電流三大要素組成。一旦三大

17、要素確定,步進(jìn)電機(jī)的型號(hào)便確定下來了。</p><p><b>  1、步距角的選擇</b></p><p>  電機(jī)的步距角取決于負(fù)載精度的要求,將負(fù)載的最小分辨率(當(dāng)量)換算到電機(jī)軸上,每個(gè)當(dāng)量電機(jī)應(yīng)走多少角度(包括減速)。電機(jī)的步距角應(yīng)等于或小于此角度。目前市場(chǎng)上步進(jìn)電機(jī)的步距角一般有0.36度/0.72度(五相電機(jī))、0.9度/1.8度(二、四相電機(jī))、1.5

18、度/3度 (三相電機(jī))等。</p><p><b>  2、靜力矩的選擇</b></p><p>  步進(jìn)電機(jī)的動(dòng)態(tài)力矩一下子很難確定,我們往往先確定電機(jī)的靜力矩。靜力矩選擇的依據(jù)是電機(jī)工作的負(fù)載,而負(fù)載可分為慣性負(fù)載和摩擦負(fù)載二種。單一的慣性負(fù)載和單一的摩擦負(fù)載是不存在的。直接起動(dòng)時(shí)(一般由低速)時(shí)二種負(fù)載均要考慮,加速起動(dòng)時(shí)主要考慮慣性負(fù)載,恒速運(yùn)行進(jìn)只要考慮摩擦

19、負(fù)載。一般情況下,靜力矩應(yīng)為摩擦負(fù)載的2-3倍內(nèi)好,靜力矩一旦選定,電機(jī)的機(jī)座及長(zhǎng)度便能確定下來(幾何尺寸)。</p><p><b>  3、電流的選擇</b></p><p>  靜力矩一樣的電機(jī),由于電流參數(shù)不同,其運(yùn)行特性差別很大,可依據(jù)矩頻特性曲線圖,判斷電機(jī)的電流(參考驅(qū)動(dòng)電源、及驅(qū)動(dòng)電壓)。</p><p><b>  

20、4、力矩與功率換算</b></p><p>  步進(jìn)電機(jī)一般在較大范圍內(nèi)調(diào)速使用、其功率是變化的,一般只用力矩來衡量,力矩與功率換算如下:</p><p>  P= Ω?M Ω=2π?n/60 P=2πnM/60</p><p>  其P為功率單位為瓦,Ω為每秒角速度,單位為弧度,n為每分鐘轉(zhuǎn)速,M為力矩單位為牛頓?米</p><p&

21、gt;  P=2πfM/400(半步工作)</p><p>  其中f為每秒脈沖數(shù)(簡(jiǎn)稱PPS)</p><p><b>  2.3設(shè)計(jì)目標(biāo)</b></p><p> ?。?)一個(gè)正反轉(zhuǎn)開關(guān)控制正轉(zhuǎn)和反轉(zhuǎn);</p><p>  (2)一個(gè)速度開關(guān)控制高速和低速(高速和低速只要有明顯差別);</p><

22、p> ?。?)一個(gè)半圈按鈕,按一下時(shí)轉(zhuǎn)半圈, 一個(gè)一圈按鈕, 按一下時(shí)轉(zhuǎn)一圈;</p><p> ?。?)一個(gè)連續(xù)轉(zhuǎn)動(dòng)按鈕, 按一下時(shí)連續(xù)轉(zhuǎn)動(dòng),再按一下時(shí)停止轉(zhuǎn)動(dòng);</p><p> ?。?)深入理解步進(jìn)電機(jī)工作原理,設(shè)計(jì)系統(tǒng)方案;</p><p>  (6)用protel畫出系統(tǒng)原理圖,要求是一個(gè)完整的單片機(jī)控制系統(tǒng),電源為220V交流電</p>

23、<p>  在單片機(jī)實(shí)驗(yàn)室調(diào)試。 </p><p>  第3章 設(shè)計(jì)思路與具體內(nèi)容 </p><p><b>  3.1設(shè)計(jì)思路</b></p><p>  本系統(tǒng)主要由供電電源模塊、單片機(jī)最小系統(tǒng)、按鍵電路、步進(jìn)電機(jī)驅(qū)動(dòng)電路以及步進(jìn)電機(jī)等幾部分組成。本系統(tǒng)采用兩個(gè)獨(dú)立開關(guān)三個(gè)獨(dú)立按鈕,分別進(jìn)行高低速、正反轉(zhuǎn)、半圈、一圈以及連動(dòng)的

24、控制。驅(qū)動(dòng)電路采用ULN2003A實(shí)現(xiàn)步進(jìn)電機(jī)的驅(qū)動(dòng)。步進(jìn)電機(jī)的供電采用獨(dú)立12V供電。</p><p>  3.2總體設(shè)計(jì)框圖及電路原理圖</p><p>  總體設(shè)計(jì)框圖如圖3.1所示。</p><p>  圖3.1 總體設(shè)計(jì)框圖</p><p>  3.3單片機(jī)最小系統(tǒng)及按鍵部分</p><p>  最小系統(tǒng)主

25、要是為了單片機(jī)的正常工作。51單片機(jī)是一種低功耗/低電壓、高性能的8位單片機(jī),它采用CMOS和高密度非易失性存儲(chǔ)器技術(shù),而且其輸出引腳和指令系統(tǒng)都與MCS-51兼容;片內(nèi)的Flash ROM允許在系統(tǒng)內(nèi)改編程序或用常規(guī)的非易失性編程器來編程,內(nèi)部除CPU外,還包括256字節(jié)RAM,4K字節(jié)的ROM,4個(gè)8位并行I/O口,5個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí),2個(gè)16位可編程定時(shí)計(jì)數(shù)器。89S51單片機(jī)是一種功能強(qiáng)、靈活性高且價(jià)格合理的單片機(jī),且支

26、持在線編程,完全滿足本系統(tǒng)設(shè)計(jì)需要。</p><p>  單片機(jī)最小系統(tǒng)包括單片機(jī)和復(fù)位電路,振蕩電路。</p><p><b>  3.4 按鍵電路</b></p><p>  采用2個(gè)開關(guān)3個(gè)按鍵來控制步進(jìn)電機(jī),即“高低速切換”、“正反轉(zhuǎn)切換”、“半圈”、“一圈”和“連動(dòng)切換”。當(dāng)波動(dòng)開關(guān)或按下其中一個(gè)按鍵時(shí),電源通過上拉電阻和按鍵到地形成

27、通路,使相應(yīng)輸入管腳接地,即給單片機(jī)送入一個(gè)低電平,此低電平即為有效電平。按鍵電路及單片機(jī)最小系統(tǒng)部分如圖3.2所示。</p><p>  圖3.1 最小系統(tǒng)及按鍵電路 </p><p>  3.5 步進(jìn)電機(jī)驅(qū)動(dòng)電路</p><p>  步進(jìn)電機(jī)的驅(qū)動(dòng)電路如圖3.3所示,驅(qū)動(dòng)芯片采用ULN2003A。</p><p>  圖3.2 步進(jìn)電機(jī)的

28、驅(qū)動(dòng)電路</p><p><b>  第四章 程序設(shè)計(jì) </b></p><p>  4.1 程序設(shè)計(jì)思路</p><p>  根據(jù)單片機(jī)外圍電路的設(shè)計(jì),單片機(jī)的P2.0、P2.1、P2.2、P2.3、P3.2為按鍵輸入,P1.0、P1.1、P1.2、P1.3與電機(jī)驅(qū)動(dòng)IC相連。單片機(jī)采用掃描按鍵方式(其中連動(dòng)切換按鍵采用外部中斷方式),程序根

29、據(jù)鍵值結(jié)果進(jìn)行相應(yīng)的操作。步進(jìn)電機(jī)的正反轉(zhuǎn)利用給步進(jìn)電機(jī)送入與原來相反的脈沖即可,步進(jìn)電機(jī)的加減速控制是主要控制步進(jìn)電機(jī)送脈沖的時(shí)間。</p><p><b>  4.2程序設(shè)計(jì)</b></p><p>  程序中首先進(jìn)行兩個(gè)切換開關(guān)的檢測(cè),確定電機(jī)轉(zhuǎn)速及方向,然后進(jìn)行按鍵掃描,確定點(diǎn)動(dòng)和電動(dòng)方式或者連動(dòng),其中連動(dòng)切換用外部中斷0控制。</p><

30、p>  圖4.1 程序流程圖</p><p><b>  第五章 總結(jié)</b></p><p>  通過此次課程設(shè)計(jì),使我更加扎實(shí)的掌握了有關(guān)單片機(jī)應(yīng)用方面的知識(shí),在設(shè)計(jì)過程中尤其是自己動(dòng)手編制程序時(shí),遇到了很多困難,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。實(shí)踐出真知,通過親自動(dòng)手制作,使我掌握的

31、知識(shí)不再是紙上談兵,而是學(xué)以致用。</p><p>  同時(shí),這次課程設(shè)計(jì)讓我感受到了我對(duì)所學(xué)習(xí)的內(nèi)容是多么的不熟練,在設(shè)計(jì)過程中總是需要翻書,還總是會(huì)出現(xiàn)問題,同時(shí)這些問題也提醒了我那些地方?jīng)]學(xué)好,加深了對(duì)這部分知識(shí)的印象。</p><p>  課程設(shè)計(jì)不僅僅是一門專業(yè)課,使我學(xué)到很多專業(yè)知識(shí)以及提升了專業(yè)技能上,同時(shí)又是一門提升自我綜合能力的課程,給了我莫大的發(fā)展空間,不僅培養(yǎng)了獨(dú)立思

32、考、動(dòng)手操作的能力,在各種其它能力上也都有了提高;更重要的是,在課程設(shè)計(jì)中,我們學(xué)會(huì)了很多學(xué)習(xí)的方法,而這些都將為日后做準(zhǔn)備,會(huì)使我們終身都受益匪淺。面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐,才能在最大程度上發(fā)掘自己。這對(duì)于我們的將來也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。</p><p><b>  參考文獻(xiàn) </b><

33、/p><p>  [1]  丁元杰著.單片微機(jī)原理及應(yīng)用[M].機(jī)械工業(yè)出版社,2010年1月</p><p>  [2] 李秀霞PROTEL dxp2004 電路設(shè)計(jì)與仿真教程[M].北京:北京航空航天大學(xué)出版社,2007年11月</p><p><b>  附錄</b></p><p><b>  電路原理圖&

34、lt;/b></p><p><b>  程序代碼:</b></p><p>  #include <REGX52.H></p><p>  //uchar,uint,宏定義</p><p>  #define uchar unsigned char</p><p>  #def

35、ine uint unsigned int</p><p><b>  //開關(guān),位定義</b></p><p>  sbit Direction = P2^0;//正反轉(zhuǎn)方向切換</p><p>  sbit Speed = P2^1;//高低速切換</p><p><b>  //按鍵,位定義<

36、/b></p><p>  sbit Half = P2^2;// 轉(zhuǎn)半圈 </p><p>  sbit Circle = P2^3;// 轉(zhuǎn)一圈</p><p>  sbit Switch = P3^2;//連續(xù)轉(zhuǎn)動(dòng)/停止 切換</p><p>  //步進(jìn)電機(jī)連接端口,位定義</p><p>  sb

37、it A1 = P1^0;</p><p>  sbit B1 = P1^1;//B相,因頭文件已定義'B',故用B1</p><p>  sbit C1 = P1^2;</p><p>  sbit D1 = P1^3;</p><p>  //通電方式,宏定義</p><p>  #defi

38、ne Coil_A1 {A1=1;B1=0;C1=0;D1=0;}</p><p>  //A相通電,其他相斷電</p><p>  #define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}</p><p>  //B相通電,其他相斷電</p><p>  #define Coil_C1 {A1=0;B1=0;C1=1;D

39、1=0;}</p><p>  //C相通電,其他相斷電</p><p>  #define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}</p><p>  //D相通電,其他相斷電</p><p>  #define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}</p><p>&

40、lt;b>  //全部斷電</b></p><p><b>  //全局變量定義</b></p><p>  uint v1 = 10;//高速轉(zhuǎn)速</p><p>  uint v2 = 5;//低速轉(zhuǎn)速</p><p>  uint i = 512;//轉(zhuǎn)動(dòng)一圈</p><

41、p>  uint j = 8;//轉(zhuǎn)動(dòng)半圈</p><p>  bit Flag = 1;</p><p><b>  //子函數(shù)聲明</b></p><p>  void DelayUs2x( uchar t );</p><p>  void DelayMs( uchar t );</p>&l

42、t;p>  void Init_Time0( void );</p><p>  //void Time0_isr( void ) interrupt 1</p><p>  //void Forward( uint a );//正轉(zhuǎn)子函數(shù)</p><p>  //void Reverse( uint b );//反轉(zhuǎn)子函數(shù)</p><

43、p>  //uS延時(shí)函數(shù),晶振使用12M,大致延時(shí) T = (tx2+5) uS </p><p>  void DelayUs2x( uchar t )</p><p><b>  {</b></p><p>  while( --t );</p><p><b>  }</b></p

44、><p>  //mS延時(shí)函數(shù),晶振使用12M,大致延時(shí) T = t mS</p><p>  void DelayMs( uchar t )</p><p><b>  {</b></p><p>  while( t-- )</p><p><b>  {</b></p

45、><p>  DelayUs2x( 245 );</p><p>  DelayUs2x( 245 );</p><p><b>  }</b></p><p><b>  }</b></p><p>  //正轉(zhuǎn) ,a = i或j,b = v</p><p&

46、gt;  void Forward( uint a, uint b )</p><p><b>  {</b></p><p><b>  Coil_OFF</b></p><p>  while( a-- )</p><p><b>  {</b></p>&l

47、t;p><b>  Coil_A1</b></p><p>  DelayMs( b );</p><p><b>  Coil_B1</b></p><p>  DelayMs( b );</p><p><b>  Coil_C1</b></p><

48、;p>  DelayMs( b );</p><p><b>  Coil_D1</b></p><p>  DelayMs( b );</p><p><b>  }</b></p><p><b>  }</b></p><p>  //反轉(zhuǎn),

49、a = i或j,b = v1或v2</p><p>  void Reverse( uint a, uint b )</p><p><b>  {</b></p><p><b>  Coil_OFF</b></p><p>  while( a-- )</p><p>&

50、lt;b>  {</b></p><p><b>  Coil_D1</b></p><p>  DelayMs( b );</p><p><b>  Coil_C1</b></p><p>  DelayMs( b );</p><p><b>

51、;  Coil_B1</b></p><p>  DelayMs( b );</p><p><b>  Coil_A1</b></p><p>  DelayMs( b );</p><p><b>  }</b></p><p><b>  }<

52、;/b></p><p>  //連續(xù)轉(zhuǎn)動(dòng),正轉(zhuǎn) b = v1或v2</p><p>  void Con1( uint b )</p><p><b>  {</b></p><p><b>  Coil_OFF</b></p><p>  if( !Flag

53、)</p><p><b>  {</b></p><p><b>  Coil_A1</b></p><p>  DelayMs( b );</p><p><b>  Coil_B1</b></p><p>  DelayMs( b );</p

54、><p><b>  Coil_C1</b></p><p>  DelayMs( b );</p><p><b>  Coil_D1</b></p><p>  DelayMs( b );</p><p><b>  }</b></p>

55、<p><b>  }</b></p><p>  //連續(xù)轉(zhuǎn)動(dòng),反轉(zhuǎn) b = v1或v2</p><p>  void Con2( uint b )</p><p><b>  {</b></p><p><b>  Coil_OFF</b></p>

56、;<p>  if( !Flag )</p><p><b>  {</b></p><p><b>  Coil_D1</b></p><p>  DelayMs( b );</p><p><b>  Coil_C1</b></p><p&

57、gt;  DelayMs( b );</p><p><b>  Coil_B1</b></p><p>  DelayMs( b );</p><p><b>  Coil_A1</b></p><p>  DelayMs( b );</p><p><b>  

58、}</b></p><p><b>  }</b></p><p>  void ISR_INT0( void ) interrupt 0</p><p><b>  {</b></p><p>  if( !INT0 )</p><p><b>  {

59、</b></p><p>  DelayMs(10);</p><p>  if( !INT0 )</p><p><b>  {</b></p><p>  while(!INT0);</p><p>  Flag = !Flag;</p><p><

60、;b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //主函數(shù)</b></p><p>  int main( void )</p><p><b>

61、;  {</b></p><p>  EA = 1;//開全局中斷</p><p>  EX0 = 1;//開外部中斷0</p><p>  IT0 = 1;//邊沿觸發(fā)</p><p><b>  while(1)</b></p><p><b>  {</b>

62、;</p><p><b>  Coil_OFF</b></p><p><b>  {</b></p><p>  if( Speed && Direction )</p><p>  //高速(v1),正轉(zhuǎn)(Forward)</p><p>  //開

63、關(guān),故無需消抖環(huán)節(jié)</p><p><b>  {</b></p><p>  if( Flag && !Half ) </p><p><b>  //轉(zhuǎn)半圈</b></p><p><b>  {</b></p><p>  whi

64、le( !Half );</p><p><b>  //等待按鍵釋放</b></p><p>  Forward( j, v1 );</p><p><b>  //半圈,高速</b></p><p><b>  }</b></p><p>  e

65、lse if( Flag && !Circle )//轉(zhuǎn)一圈</p><p><b>  {</b></p><p>  while( !Circle );</p><p>  Forward( i, v1 );</p><p><b>  }</b></p><

66、;p>  else if( !Flag )//連續(xù)轉(zhuǎn)動(dòng)</p><p><b>  {</b></p><p>  Con1( v1 );</p><p><b>  }</b></p><p>  else if( Flag && Half && Circ

67、le )</p><p><b>  Coil_OFF</b></p><p><b>  else </b></p><p><b>  Coil_OFF</b></p><p><b>  }</b></p><p>  el

68、se if( !Speed && Direction )</p><p>  //低速(v2),正轉(zhuǎn)(Forward)</p><p><b>  {</b></p><p>  if( Flag && !Half ) </p><p><b>  //轉(zhuǎn)半圈</b&g

69、t;</p><p><b>  {</b></p><p>  while( !Half );</p><p><b>  //等待按鍵釋放</b></p><p>  Forward( j, v2 );/</p><p><b>  /半圈,高速</b

70、></p><p><b>  }</b></p><p>  else if( Flag && !Circle )//轉(zhuǎn)一圈</p><p><b>  {</b></p><p>  while( !Circle );</p><p>  Forw

71、ard( i, v2 );</p><p><b>  }</b></p><p>  else if( !Flag )//連續(xù)轉(zhuǎn)動(dòng)</p><p><b>  {</b></p><p>  Con1( v2 );</p><p><b>  }</b&

72、gt;</p><p>  else if( Flag && Half && Circle )</p><p><b>  Coil_OFF</b></p><p><b>  else </b></p><p><b>  Coil_OFF</b&g

73、t;</p><p><b>  }</b></p><p>  else if( Speed && !Direction )</p><p>  //高速(v1),反轉(zhuǎn)(Reverse)</p><p><b>  {</b></p><p>  if(

74、Flag && !Half ) //轉(zhuǎn)半圈</p><p><b>  {</b></p><p>  while( !Half );</p><p><b>  //等待按鍵釋放</b></p><p>  Reverse( j, v1 );</p><p&

75、gt;<b>  //半圈,高速</b></p><p><b>  }</b></p><p>  else if( Flag && !Circle )//轉(zhuǎn)一圈</p><p><b>  {</b></p><p>  while( !Circle );

76、</p><p>  Reverse( i, v1 );</p><p><b>  }</b></p><p>  else if( !Flag )//連續(xù)轉(zhuǎn)動(dòng)</p><p><b>  {</b></p><p>  Con2( v1 );</p>&

77、lt;p><b>  }</b></p><p>  else if( Flag && Half && Circle )</p><p><b>  Coil_OFF</b></p><p><b>  else </b></p><p>

78、<b>  Coil_OFF</b></p><p><b>  }</b></p><p>  else if( !Speed && !Direction )</p><p>  //低速(v2),反轉(zhuǎn)(Reverse)</p><p><b>  {</b>

79、;</p><p>  if( Flag && !Half ) //轉(zhuǎn)半圈</p><p><b>  {</b></p><p>  while( !Half );</p><p><b>  //等待按鍵釋放</b></p><p>  Reverse

80、( j, v2 );</p><p><b>  //半圈,高速</b></p><p><b>  }</b></p><p>  else if( Flag && !Circle )//轉(zhuǎn)一圈</p><p><b>  {</b></p>

81、<p>  while( !Circle );</p><p>  Reverse( i, v2 );</p><p><b>  }</b></p><p>  else if( !Flag )//連續(xù)轉(zhuǎn)動(dòng)</p><p><b>  {</b></p><p&g

82、t;  Con1( v2 );</p><p><b>  }</b></p><p>  else if( Flag && Half && Circle )</p><p><b>  Coil_OFF</b></p><p><b>  else &l

83、t;/b></p><p><b>  Coil_OFF</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  Coil_OFF</b></p><p>&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論