版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)控制步進(jìn)電機(jī)
- 單片機(jī)課程設(shè)計(jì)-單片機(jī)控制步進(jìn)電機(jī)
- 單片機(jī)步進(jìn)電機(jī)課程設(shè)計(jì)--單片機(jī)控制步進(jìn)電機(jī)的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的步進(jìn)電機(jī)控制
- (四相步進(jìn)電機(jī))單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告——單片機(jī)控制步進(jìn)電機(jī)
- 基于單片機(jī)的步進(jìn)電機(jī)控制單片機(jī)課程設(shè)計(jì)
- 三相步進(jìn)電機(jī)的單片機(jī)控制單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——基于單片機(jī)的步進(jìn)電機(jī)控制器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——單片機(jī)控制步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)-控制步進(jìn)電機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——基于單片機(jī)的步進(jìn)電機(jī)控制器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--步進(jìn)電機(jī)控制
- 單片機(jī)課程設(shè)計(jì)---步進(jìn)電機(jī)控制
- 單片機(jī)課程設(shè)計(jì)-步進(jìn)電機(jī)的控制
- 單片機(jī)課程設(shè)計(jì)--步進(jìn)電機(jī)
- 單片機(jī)課程設(shè)計(jì)步進(jìn)電機(jī)控制設(shè)計(jì)
- 基于單片機(jī)的步進(jìn)電機(jī)控制課程設(shè)計(jì)
- 基于單片機(jī)的步進(jìn)電機(jī)控制課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---步進(jìn)電機(jī)
評(píng)論
0/150
提交評(píng)論