畢業(yè)論文--基于單片機(jī)控制的步進(jìn)電機(jī)控制器_第1頁
已閱讀1頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  畢業(yè)設(shè)計(jì)(論文)報(bào)告</p><p>  題 目 基于單片機(jī)控制的步進(jìn)電</p><p><b>  機(jī)控制器</b></p><p><b>  2012年 4 月</b></p><p>  基于單片機(jī)控制的步進(jìn)電機(jī)控制器</p><p>  摘

2、要:步進(jìn)電機(jī)是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元步進(jìn)電機(jī)件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,當(dāng)步進(jìn)驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動一個固定的角度,稱為“步距角”,它的旋轉(zhuǎn)是以固定的角度一步一步運(yùn)行的??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時可以通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。<

3、/p><p>  本系統(tǒng)采用AT89S51單片機(jī)來控制步進(jìn)電機(jī),不僅可以實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn),還可以實(shí)現(xiàn)17級調(diào)速,以及LED狀態(tài)顯示功能,電路設(shè)計(jì)可靠且易于實(shí)現(xiàn),程序設(shè)計(jì)簡單易懂。本系統(tǒng)主要由按鍵電路、單片機(jī)最小系統(tǒng)、AT89S51單片機(jī)、步進(jìn)電機(jī)狀態(tài)顯示電路、驅(qū)動電路以及步進(jìn)電機(jī)等幾部分組成。輸出驅(qū)動電路采用一個六非門芯片74LS04和四個三極管,來驅(qū)動步進(jìn)電機(jī)的四相繞組。短路保護(hù)采用一個0.4A的保險(xiǎn)管,防止因繞組

4、短路而燒毀燒毀電機(jī)。</p><p>  關(guān)鍵詞:步進(jìn)電機(jī) 單片機(jī) 單片機(jī)最小系統(tǒng) 子程序 </p><p>  Based on the single chip microcomputer to control the step motor controller</p><p>  Abstract:Stepper motor is electrical p

5、ulse signal into angular or linear displacement of open-loop control stepping parts. In non-overload of situation Xia, motor of speed, and stop of location only depends on pulse signal of frequency and pulse number, and

6、does not by load changes of effect, dang step into drive received to a pulse signal, it on drive step into motor by set of direction turns a fixed of angle, called "step from angle", it of rotating is to fixed

7、of angle a step a step run of. B</p><p>  The system uses AT89S51single-chip microcomputer to control the stepper motor, which can not only realize the motor positive inversion, can also realize the17 step s

8、peed regulation, and the LED state display function, circuit design and reliable and easy to realize, the program design is simple and easy to understand. This system is mainly composed of a key circuit, MCU minimum syst

9、em, AT89S51 MCU, step motor status display circuit, driving circuit and step motor etc.. The output driver circuit </p><p>  Key Words:Stepping motor Single chip microcomputer The smallest single-chip sys

10、tem Subroutine</p><p><b>  目錄</b></p><p><b>  引言1</b></p><p>  第一章 設(shè)計(jì)方案2</p><p>  1.1 設(shè)計(jì)思路2</p><p>  1.2 總體設(shè)計(jì)框圖2</p><

11、;p>  第二章 設(shè)計(jì)原理分析3</p><p>  2.1 步進(jìn)電機(jī)3</p><p>  2.1.1 概述3</p><p>  2.1.2 優(yōu)點(diǎn)3</p><p>  2.1.3 驅(qū)動方法4</p><p>  2.2 AT89S51單片機(jī)及其最小系統(tǒng)5</p><p>

12、  2.2.1 結(jié)構(gòu)6</p><p>  2.2.2 功能6</p><p>  2.3 按鍵電路9</p><p>  2.4 步進(jìn)電機(jī)狀態(tài)顯示電路9</p><p>  2.5 步進(jìn)電機(jī)驅(qū)動電路9</p><p>  第三章 程序原理分析11</p><p>  3.1 程序設(shè)

13、計(jì)思路11</p><p>  3.2程序分析11</p><p>  3.3 定時器計(jì)數(shù)初值的設(shè)定12</p><p>  3.4 程序設(shè)計(jì)流程圖14</p><p><b>  總結(jié)15</b></p><p><b>  參考文獻(xiàn)16</b></p&g

14、t;<p><b>  附錄17</b></p><p>  附錄1 步進(jìn)電機(jī)總體控制電路17</p><p>  附錄2 源程序代碼18</p><p><b>  引言 </b></p><p>  步進(jìn)電機(jī)能將輸入的電脈沖信號轉(zhuǎn)換成輸出軸的角位移或直線位移。這種電機(jī)每輸入

15、一個脈沖信號,輸出軸便轉(zhuǎn)動一定的角度或前進(jìn)一步,因此又被稱作脈沖電機(jī)或步級電機(jī)。步進(jìn)電機(jī)輸出軸的角位移量與輸入脈沖數(shù)成正比,不受電壓以及環(huán)境溫度的影響,也沒有累積的定位誤差,因此控制輸入的數(shù)字脈沖數(shù)即可實(shí)現(xiàn)電機(jī)的精確定位;而步進(jìn)電機(jī)輸出軸的轉(zhuǎn)速與輸入的脈沖頻率成正比,控制輸入的脈沖頻率就能準(zhǔn)確的控制步進(jìn)電機(jī)的轉(zhuǎn)速,可以實(shí)現(xiàn)在寬廣的范圍內(nèi)精確調(diào)速。由于步進(jìn)電機(jī)的這一特點(diǎn)正好符合數(shù)字控制系統(tǒng)的要求,同時電子技術(shù)的發(fā)展也解決了步進(jìn)電機(jī)的電源問

16、題。因此隨著計(jì)算機(jī)技術(shù)和數(shù)字控制技術(shù)的發(fā)展,步進(jìn)電機(jī)的應(yīng)用也日益廣泛。目前,步進(jìn)電機(jī)應(yīng)用于磁盤驅(qū)動器、數(shù)控機(jī)床、軋鋼機(jī)、機(jī)器人、以及自動化儀表等方面。</p><p><b>  第一章 設(shè)計(jì)方案</b></p><p><b>  1.1 設(shè)計(jì)思路</b></p><p>  本系統(tǒng)主要由按鍵電路、單片機(jī)最小系統(tǒng)、AT8

17、9S51單片機(jī)、步進(jìn)電機(jī)電機(jī)電路、驅(qū)動電路以及步進(jìn)電機(jī)等幾部分組成。驅(qū)動電路可以采用FT5754芯片來實(shí)現(xiàn),芯片內(nèi)部有四組3A、5W、100V的PNP達(dá)林斯頓電路及四個二極管,輸出四個管腳、、、分別與步進(jìn)電機(jī)的四相繞組向連接。但考慮到所采用的步進(jìn)電機(jī)功率和額定電流都較小,以及經(jīng)濟(jì)性方面,本設(shè)計(jì)直接采用四個NPN型三極管來作為驅(qū)動電路。</p><p>  步進(jìn)電機(jī)的控制主要通過5個按鍵來實(shí)現(xiàn),這5個按鍵分別表示“

18、正轉(zhuǎn)”、“反轉(zhuǎn)”、“加速”、“減速”和“停止”。單片機(jī)輸出四路脈沖信號觸發(fā)驅(qū)動電路的四個NPN型三極管,其中觸發(fā)導(dǎo)通的三極管可驅(qū)動步進(jìn)電機(jī)的相應(yīng)繞組得電,即步進(jìn)電機(jī)獲得脈沖,而產(chǎn)生一定的角位移。單片機(jī)循序不斷的輸出時序脈沖,就可以實(shí)現(xiàn)步進(jìn)電機(jī)的旋轉(zhuǎn)了。</p><p>  1.2 總體設(shè)計(jì)框圖</p><p>  總體設(shè)計(jì)框圖如圖1所示。</p><p>  圖1

19、 總體設(shè)計(jì)框圖</p><p>  第二章 設(shè)計(jì)原理分析</p><p><b>  2.1 步進(jìn)電機(jī)</b></p><p><b>  2.1.1 概述</b></p><p>  步進(jìn)電機(jī)是一種感應(yīng)電機(jī),它的工作原理是利用電子電路,將直流電變成分時供電的,多相時序控制電流,用這種電流為步進(jìn)電機(jī)

20、供電,步進(jìn)電機(jī)才能正常工作,驅(qū)動器就是為步進(jìn)電機(jī)分時供電的,多相時序控制器   </p><p>  雖然步進(jìn)電機(jī)已被廣泛地應(yīng)用,但步進(jìn)電機(jī)并不能像普通的直流電機(jī),交流電機(jī)在常規(guī)下使用。它必須由雙環(huán)形脈沖信號、功率驅(qū)動電路等組成控制系統(tǒng)方可使用。因此用好步進(jìn)電機(jī)卻非易事,它涉及到機(jī)械、電機(jī)、電子及計(jì)算機(jī)等許多專業(yè)知識。   </p><p>  步進(jìn)電機(jī)作為執(zhí)行元件,是機(jī)電一體化的關(guān)鍵產(chǎn)品

21、之一, 廣泛應(yīng)用在各種自動化控制系統(tǒng)中。隨著微電子和計(jì)算機(jī)技術(shù)的發(fā)展,步進(jìn)電機(jī)的需求量與日俱增,在各個國民經(jīng)濟(jì)領(lǐng)域都有應(yīng)用。   步進(jìn)電機(jī)是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。通俗一點(diǎn)講:當(dāng)步進(jìn)驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動一個固定的角度(即步進(jìn)角)。您可以通過控制脈沖個數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時您可以通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。</p>

22、<p><b>  2.1.2 優(yōu)點(diǎn)</b></p><p>  電機(jī)旋轉(zhuǎn)的角度正比于脈沖數(shù);   </p><p>  電機(jī)停轉(zhuǎn)的時候具有最大的轉(zhuǎn)矩(當(dāng)繞組激磁時);   </p><p>  由于每步的精度在百分之三到百分之五,而且不會將一步的誤差積累到下一步因而有較好的位置精度和運(yùn)動的重復(fù)性;   </p>&l

23、t;p>  優(yōu)秀的起停和反轉(zhuǎn)響應(yīng);   </p><p>  由于沒有電刷,可靠性較高,因此電機(jī)的壽命僅僅取決于軸承的壽命;   </p><p>  電機(jī)的響應(yīng)僅由數(shù)字輸入脈沖確定,因而可以采用開環(huán)控制,這使得電機(jī)的結(jié)構(gòu)可以比較簡單而且控制成本;   </p><p>  僅僅將負(fù)載直接連接到電機(jī)的轉(zhuǎn)軸上也可以極低速的同步旋轉(zhuǎn)。   </p>

24、<p>  由于速度正比于脈沖頻率,因而有比較寬的轉(zhuǎn)速范圍。</p><p>  2.1.3 驅(qū)動方法</p><p>  步進(jìn)電機(jī)不能直接接到工頻交流或直流電源上工作,而必須使用專用的步進(jìn)電動機(jī)驅(qū)動器,如圖2所示,它由脈沖發(fā)生控制單元、功率驅(qū)動單元、保護(hù)單元等組成。圖中點(diǎn)劃線所包圍的二個單元可以用微機(jī)控制來實(shí)現(xiàn)。驅(qū)動單元與步進(jìn)電動機(jī)直接耦合,也可理解成步進(jìn)電動機(jī)微機(jī)控制器的功率

25、接口。</p><p><b>  圖2</b></p><p>  本系統(tǒng)采用25Y48H01型步進(jìn)電機(jī),其相關(guān)參數(shù)如表1所示,內(nèi)部接線圖如圖3所示。</p><p>  表1 25Y48H01型步進(jìn)電機(jī)的相關(guān)參數(shù)</p><p>  圖3 25Y48H01型步進(jìn)電機(jī)內(nèi)部接線圖</p><p&g

26、t;  表2 步進(jìn)電機(jī)四相繞組的勵磁時序</p><p>  步進(jìn)電機(jī)的勵磁方式有1相勵磁、2相勵磁和1-2相勵磁3種。由于2相勵磁具有轉(zhuǎn)矩大、振動小等優(yōu)點(diǎn),在目前使用較為普遍,本系統(tǒng)的設(shè)計(jì)也采用這種勵磁方式。步進(jìn)電機(jī)各相繞組的勵磁時序如表2所示。</p><p>  2.2 AT89S51單片機(jī)及其最小系統(tǒng)</p><p>  Atmel公司的生產(chǎn)的89C51單

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

28、><p><b>  2.2.1 結(jié)構(gòu)</b></p><p>  4k Bytes Flash片內(nèi)程序存儲器;   </p><p>  128 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM);   </p><p>  2個外部雙向輸入/輸出(I/O)口;   </p><p>  5個中斷優(yōu)先級、2層

29、中斷嵌套中斷;   </p><p><b>  6個中斷源;   </b></p><p>  2個16位可編程定時器/計(jì)數(shù)器;   </p><p>  2個全雙工串行通信口;   </p><p>  看門狗(WDT)電路;   </p><p>  片內(nèi)振蕩器和時鐘電路;   </p

30、><p>  與MCS-51兼容;   </p><p>  全靜態(tài)工作:0Hz-33MHz;  </p><p>  三級程序存儲器保密鎖定;  </p><p>  可編程串行通道;   </p><p>  低功耗的閑置和掉電模式。</p><p><b>  2.2.2 功能<

31、;/b></p><p>  VCC:電源電壓輸入端。   </p><p>  GND:電源地。   </p><p>  P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIA

32、SH進(jìn)行校驗(yàn)時,P0輸出原碼,此時P0外部必須被拉高。 </p><p><b>  圖4</b></p><p>  P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時,P1口作為第八位地

33、址接收。   </p><p>  P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)

34、存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時接收高八位地址信號和控制信號。   </p><p>  P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口除了作為普通I/O口,還有第二功能:   </

35、p><p>  P3.0 RXD(串行輸入口)   </p><p>  P3.1 TXD(串行輸出口)   </p><p>  P3.2 /INT0(外部中斷0)  </p><p>  P3.3 /INT1(外部中斷1)   </p><p>  P3.4 T0(T0定時器的外部計(jì)數(shù)輸入)   </p>

36、<p>  P3.5 T1(T1定時器的外部計(jì)數(shù)輸入)   </p><p>  P3.6 /WR(外部數(shù)據(jù)存儲器的寫選通)   </p><p>  P3.7 /RD(外部數(shù)據(jù)存儲器的讀選通)  </p><p>  P3口同時為閃爍編程和編程校驗(yàn)接收一些控制信號。   </p><p>  I/O口作為輸入口時有兩種工作方式,

37、即所謂的讀端口與讀引腳。讀端口時實(shí)際上并不從外部讀入數(shù)據(jù),而是把端口鎖存器的內(nèi)容讀入到內(nèi)部總線,經(jīng)過某種運(yùn)算或變換后再寫回到端口鎖存器。只有讀端口時才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線。89C51的P0、P1、P2、P3口作為輸入時都是準(zhǔn)雙向口。除了P1口外P0、P2、P3口都還有其他的功能。   </p><p>  RST:復(fù)位輸入端,高電平有效。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。  

38、 </p><p>  ALE/PROG:地址鎖存允許/編程脈沖信號端。當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。

39、此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。   </p><p>  PSEN:外部程序存儲器的選通信號,低電平有效。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。   EA/VPP:外部程序存儲器訪問允許。當(dāng)/EA保持低電平時,則在此期間外部程

40、序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。   </p><p>  XTAL1:片內(nèi)振蕩器反相放大器和時鐘發(fā)生器的輸入端。   </p><p>  XTAL2:片內(nèi)振蕩器反相放大器的輸出端。</p>

41、<p>  單片機(jī)最小系統(tǒng)包括振蕩電路和復(fù)位電路兩部分。振蕩電路用12M晶振,這樣一個機(jī)器周期 。</p><p>  復(fù)位電路采用手動復(fù)位,當(dāng)按下RESET按鍵,電阻R1、R2接通5V電源,此時R2分得電壓大約為4V,為高電平,即置單片機(jī)RST腳為高電平,單片機(jī)復(fù)位。</p><p><b>  2.3 按鍵電路</b></p><p

42、>  采用5個按鍵用來控制步進(jìn)電機(jī)的5種狀態(tài),即“正轉(zhuǎn)”、“反轉(zhuǎn)”、“加速”、“減速”和“停止”。當(dāng)按下其中一個按鍵時,電源通過上拉電阻和按鍵到地形成通路,使相應(yīng)輸入管腳接地,即給單片機(jī)送入一個低電平,此低電平即為有效電平。按鍵電路如圖4所示。</p><p>  2.4 步進(jìn)電機(jī)狀態(tài)顯示電路</p><p>  狀態(tài)指示采用三種顏色的發(fā)光二極管,“綠色”、“黃色”和“紅色”分別表示

43、步進(jìn)電機(jī)的“正轉(zhuǎn)”、“反轉(zhuǎn)”和“停止”狀態(tài)。限流電阻選擇1K的電阻,使發(fā)光二極管的壓降為3V左右。</p><p>  2.5 步進(jìn)電機(jī)驅(qū)動電路</p><p>  從單片機(jī)輸出四路脈沖信號,經(jīng)過非門和限流電阻,送到四個NPN型三極管的基極。如果從單片機(jī)輸出的是高電平,經(jīng)過非門變成低電平,送入三極管,使三極管截止;如果從單片機(jī)輸出的是低電平,經(jīng)過非門變成高電平,此高電平使三極管導(dǎo)通。步進(jìn)電

44、機(jī)的每相繞組并上一個二極管,目的是防止在三極管瞬間截止時,繞組電感所產(chǎn)生很高的感應(yīng)電動勢擊穿三極管。非門采用74LS04芯片,其內(nèi)部共有六個獨(dú)立的非門,這里只用了其中的四個。</p><p>  驅(qū)動電路如圖6所示。</p><p><b>  圖5按鍵控制電路</b></p><p>  圖6步進(jìn)電機(jī)驅(qū)動電路</p><p

45、><b>  程序原理分析</b></p><p>  3.1 程序設(shè)計(jì)思路</p><p>  根據(jù)外圍電路的設(shè)計(jì),單片機(jī)的輸入為P1口的前五個管腳,輸出為P1口的后三個管腳和P2口的前四個管腳。主程序部分首先向驅(qū)動電路輸出四路高電平,使電機(jī)停轉(zhuǎn),然后設(shè)置定時器T0的工作方式以及給允許中斷位置高電平,點(diǎn)亮“停轉(zhuǎn)”的狀態(tài)顯示,接下來進(jìn)行按鍵掃描,如果有“正轉(zhuǎn)”或

46、“反轉(zhuǎn)”按鍵按下,則跳轉(zhuǎn)到相應(yīng)的程序段;如果有“停止”按鍵或沒有任何按鍵按下,則跳轉(zhuǎn)到程序的初始部分。正轉(zhuǎn)部分,首先點(diǎn)亮“正轉(zhuǎn)”的狀態(tài)指示,隨后輸出起始脈沖,接下來掃描按鍵,判斷是否執(zhí)行加速、減速或停轉(zhuǎn),然后調(diào)用給定時器T0賦初始值子程序,最后左移累加器A中的數(shù)值,如此循環(huán)便可實(shí)現(xiàn)步進(jìn)電機(jī)的正轉(zhuǎn)。反轉(zhuǎn)部分與正轉(zhuǎn)部分的程序設(shè)計(jì)雷同,不再贅述。加速和減速部分,改變定時器定時的初始值,即改變定時時間便可實(shí)現(xiàn)。</p><p

47、><b>  3.2程序分析</b></p><p>  首先,進(jìn)行P2口以及定時器的初始化,定時器工作于方式1,對P1.7清零,即點(diǎn)亮紅色發(fā)光二極管,表示步進(jìn)電機(jī)的“停止”的狀態(tài)。用JNB指令來掃描按鍵電路,按下則跳轉(zhuǎn),沒有按下則繼續(xù)向下執(zhí)行。如果P1.0按下,則跳轉(zhuǎn)到首地址為RUN的位置,先調(diào)用一個10ms的延時子程序來消除按鍵的抖動,對P1.6清零,即點(diǎn)亮綠色發(fā)光二極管,表示步進(jìn)

48、電機(jī)的“正轉(zhuǎn)”狀態(tài),然后通過累加器A輸出起始脈沖信號00110011B到P2口。隨后判斷加速、減速和停止按鍵是否按下,如果其中一個被按下,則跳到相應(yīng)的程序段,否則程序繼續(xù)向下執(zhí)行。接下來調(diào)用賦定時器初始值子程序TIME,根據(jù)R0的數(shù)據(jù)的不同,使用查表指令來讀取TABLE1和TABLE2中的數(shù)據(jù)分別賦給定時器T0的兩個八位寄存器TH0和TL0。返回后,利用查詢法來等待T0的中斷,當(dāng)定時結(jié)束時跳出循環(huán),并對中斷標(biāo)志位TF0清零。左移指令使累

49、加器A中的數(shù)據(jù)循環(huán)左移一位,最后返回到RUN1的位置。如果P1.1按下,則執(zhí)行反轉(zhuǎn)程序,該程序執(zhí)行過程與正轉(zhuǎn)部分相似,不同之處:一是反轉(zhuǎn)要點(diǎn)亮黃色發(fā)光二極管,二是對脈沖信號循環(huán)右移,從而實(shí)現(xiàn)反轉(zhuǎn)。</p><p>  加速子程序主要使R0內(nèi)的數(shù)據(jù)加1,即把速度提高一個級別,R0內(nèi)的數(shù)據(jù)還要與16相減,來確認(rèn)是否達(dá)到最高轉(zhuǎn)速,如果R0內(nèi)的數(shù)據(jù)大于16,則把16賦給R0,表示已達(dá)到最高轉(zhuǎn)速,不能再加速了。減速子程序主

50、要使R0內(nèi)的數(shù)據(jù)減1,即把速度降低一個級別,如果R0內(nèi)的數(shù)據(jù)為0,即速度為最低轉(zhuǎn)速,則直接跳過減一指令,保持這個最低轉(zhuǎn)速。</p><p>  賦定時器初值子程序,利用兩個查表指令來讀取預(yù)置的數(shù)據(jù),當(dāng)轉(zhuǎn)速改變時,R0內(nèi)的數(shù)據(jù)發(fā)生變化,這時賦給定時器的初值也發(fā)生了變化,改變了定時時間,即脈沖的時間間隔發(fā)生變化,從而實(shí)現(xiàn)了電機(jī)變速。</p><p>  3.3 定時器計(jì)數(shù)初值的設(shè)定</p

51、><p>  程序設(shè)計(jì)選用定時器T0的定時中斷,來控制步進(jìn)電機(jī)每走一步所用的時間,改變了T0的定時時間,就改變了步進(jìn)電機(jī)的轉(zhuǎn)速。定時器T0工作于方式1,晶振fosc=12MHZ。由于采用的步進(jìn)電機(jī)的步距角為7.5°,轉(zhuǎn)一圈需要48個脈沖,設(shè)轉(zhuǎn)速為N(r/min),則每分鐘需送脈沖數(shù)據(jù)的個數(shù)為48N,即每送一個脈沖信號需時:</p><p><b>  。</b>

52、</p><p>  定時器T0的計(jì)數(shù)初值 。設(shè)步進(jìn)電機(jī)最低轉(zhuǎn)速為20r/min,最高轉(zhuǎn)速為100r/min,每5r設(shè)為一個速度級,一共17級。經(jīng)過計(jì)算,得出步進(jìn)電機(jī)的轉(zhuǎn)速對應(yīng)于定時器初值如表3所示。</p><p>  表3 電機(jī)速度及對應(yīng)定時器計(jì)數(shù)初值</p><p>  3.4 程序設(shè)計(jì)流程圖</p><p>  程序流程如圖7所示

53、:</p><p><b>  總結(jié)</b></p><p>  通過此次單片機(jī)課程設(shè)計(jì),使我對單片機(jī)控制系統(tǒng)有了更加全面和深入的了解,對電路板的設(shè)計(jì)和制作也更加的熟練。電路的設(shè)計(jì)并不復(fù)雜,兩天的時間就完成了,但之后編寫程序,發(fā)現(xiàn)有一些不妥的地方,進(jìn)行了調(diào)整,隨后開始制作PCB版圖,還算順利。程序的設(shè)計(jì)讓我犯了不少的困惑,以前編寫的都是一些功能簡單的程序,這樣系統(tǒng)的程

54、序編寫還是第一次,發(fā)現(xiàn)自己好像有些摸不到頭腦,可能是編寫程序的時機(jī)還不夠成熟。而后,在圖書館借了幾本資料,仔細(xì)的研究一下,雖然實(shí)現(xiàn)的功能不大一致,但至少可以提供一些思路。果然,有了效果,我居然只用了一個下午的時間就編寫完成了,真是太神奇了。等拿到步進(jìn)電機(jī)進(jìn)行調(diào)試,電機(jī)卻沒有一點(diǎn)反應(yīng),經(jīng)過仔細(xì)的審查,發(fā)現(xiàn)按鍵輸入我使用的是單片機(jī)的P1口,可程序里我用的卻是P0口,于是對程序做了相應(yīng)的修改,調(diào)試成功。</p><p>

55、;  三周的實(shí)習(xí)即將結(jié)束,經(jīng)過了這樣一個設(shè)計(jì)和制作的過程,體會到這樣實(shí)踐真的是很必要,不僅可以加深對書本上的知識理解,還可以鍛煉自己的動手能力和綜合運(yùn)用能力。經(jīng)過這次實(shí)習(xí),我更加喜歡自己的專業(yè)了,也對自己更有信心了。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2005.9

56、</p><p>  [2] 蔡朝洋.單片機(jī)控制實(shí)習(xí)與專題制作.北京:北京航空航天大學(xué)出版社,2006.11</p><p>  [3] 汪道輝.單片機(jī)系統(tǒng)設(shè)計(jì)與實(shí)踐.北京:電子工業(yè)出版社,2006.5</p><p>  [4] 張大明.單片機(jī)控制實(shí)訓(xùn)指導(dǎo)及綜合應(yīng)用實(shí)例.北京:機(jī)械工業(yè)出版社,2007.3</p><p>  [5] 楊天明

57、,陳杰.電機(jī)與拖動.北京:中國林業(yè)出版社;北京大學(xué)出版社,2006.8</p><p><b>  附錄</b></p><p>  附錄1 步進(jìn)電機(jī)總體控制電路</p><p>  附錄2 源程序代碼</p><p>  ORG 0000H</p><p>  AJMP MAIN</

58、p><p>  ORG 0030H</p><p>  MAIN: MOV P2,#0FFH</p><p>  MOV R2,#00H</p><p>  MOV SP,#40H</p><p>  MOV TMOD,#01H</p><p>  MOV IE,#82H<

59、/p><p><b>  CLR P1.7</b></p><p>  SETB P1.5</p><p>  SETB P1.6</p><p>  KEY: JNB P1.0,RUN</p><p>  JNB P1.1,RERUN</p><p>  

60、JNB P1.4,KEY</p><p><b>  SJMP KEY</b></p><p>  RUN: JNB P1.0,$</p><p>  ACALL DELAY</p><p><b>  CLR P1.6</b></p><p>  SET

61、B P1.5</p><p>  SETB P1.7</p><p>  MOV A,# 00110011B</p><p>  RUN1: MOV P2,A</p><p>  JNB P1.1,RERUN</p><p>  JB P1.2, KEEP</p><p> 

62、 ACALL SPEEDUP</p><p>  KEEP: JB P1.3, KEEP1</p><p>  ACALL SPEEDLOW</p><p>  KEEP1: JNB P1.4,MAIN</p><p>  ACALL TIME</p><p>  LOOP1: JBC

63、TF0,NEXT1</p><p>  AJMP LOOP1</p><p>  NEXT1: RL A</p><p>  AJMP RUN1</p><p>  RERUN: JNB P1.1,$</p><p>  ACALL DELAY </p><p><b

64、>  CLR P1.5</b></p><p>  SETB P1.6</p><p>  SETB P1.7</p><p>  MOV A,# 00110011B</p><p>  RERUN1: MOV P2,A</p><p>  JNB P1.0,RUN</p>

65、<p>  JB P1.2,THEN</p><p>  ACALL SPEEDUP</p><p>  THEN: JB P1.3,THEN1</p><p>  ACALL SPEEDLOW</p><p>  THEN1: JNB P1.4,MAIN</p><p>  AC

66、ALL TIME</p><p>  LOOP2: JBC TF0,NEXT2</p><p>  AJMP LOOP2</p><p>  NEXT2: RR A</p><p>  AJMP RERUN1</p><p>  SPEEDUP: JNB P1.2,$</p>&

67、lt;p>  ACALL DELAY</p><p>  PUSH ACC </p><p><b>  INC R0</b></p><p><b>  CLR C</b></p><p><b>  MOV A,R0</b></p><p

68、>  SUBB A,#16</p><p><b>  JC NEXT3</b></p><p>  MOV R0,#16</p><p>  NEXT3: POP ACC</p><p><b>  RET</b></p><p>  SPEEDLOW:

69、 JNB P1.3,$</p><p>  ACALL DELAY</p><p><b>  PUSH ACC</b></p><p><b>  MOV A,R0</b></p><p><b>  JZ NEXT4</b></p><p>

70、;<b>  DEC R0</b></p><p>  NEXT4: POP ACC</p><p><b>  RET</b></p><p>  TIME: PUSH ACC</p><p><b>  MOV A,R0</b></p>

71、<p>  MOV DPTR,#TABLE1</p><p>  MOVC A,@A+DPTR</p><p>  MOV TH0,A </p><p><b>  MOV A,R0</b></p><p>  MOV DPTR,#TABLE2</p><p>  MOVC

72、A,@A+DPTR</p><p>  MOV TL0,A</p><p><b>  SETB TR0</b></p><p><b>  POP ACC</b></p><p><b>  RET</b></p><p>  DELAY:

73、 MOV R7,#10H</p><p>  DS1: MOV R6,#0FFH</p><p>  DS2: DJNZ R6,DS2</p><p>  DJNZ R7,DS1</p><p><b>  RET</b></p><p>  TABLE1: D

74、B 1FH, 4CH, 6AH, 7FH, 8FH, 9CH, 0A6H, 0AEH, 0B5H, 0BAH, 0BFH, 0C4H, 0C7H, 0CBH, 0CEH, 0D0H, 0D3H</p><p>  TABLE2: DB 00H, 00H, 00H, 6DH, 80H, 00H, 00H, 2EH, 00H, 0C4H, 0B6H, 00H, 0C0H, 0FH, 00H, 0A1H, 00

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論