版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 摘 要1</b></p><p> Abstract2</p><p> 1 課程設(shè)計任務(wù)及要求3</p><p> 1.1 設(shè)計任務(wù)3</p><p> 1.2 設(shè)計要求3<
2、/p><p><b> 2 方案設(shè)計3</b></p><p><b> 2.1 方案一3</b></p><p><b> 2.2 方案二6</b></p><p> 2.3 方案比較12</p><p><b> 3 硬件分析
3、13</b></p><p> 3.1 電路設(shè)計圖13</p><p> 3.2 各部件分析14</p><p><b> 4 軟件分析21</b></p><p><b> 5調(diào)試運行22</b></p><p> 5.1 方案一程序調(diào)試運行
4、及仿真22</p><p> 5.2方案二調(diào)試運行及仿真23</p><p><b> 6心得體會25</b></p><p><b> 參考文獻26</b></p><p> 附錄一 方案一源程序27</p><p> 附錄二 方案二源程序30<
5、/p><p><b> 課程設(shè)計任務(wù)書</b></p><p> 學(xué)生姓名: 專業(yè)班級: 自動化0902 </p><p> 指導(dǎo)教師: 徐小強 工作單位: 自動化 </p><p> 題 目: 步進電機設(shè)計&l
6、t;/p><p><b> 初始條件:</b></p><p> 用匯編語言設(shè)計一個步進電機的控制,在Proteus仿真環(huán)境下完成,功能上實現(xiàn)步進電機的基本功能。</p><p> 要求完成的主要任務(wù): (包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)</p><p> 1. 通過鍵盤控制步進電機的啟動和
7、停止,正轉(zhuǎn)和反轉(zhuǎn);</p><p> 2. 編制完整的程序并調(diào)試;</p><p> 3.撰寫符合學(xué)校要求的課程設(shè)計說明書,內(nèi)容包括:摘要、目錄、正文、參考文獻、附錄(程序清單)。正文部分包括:設(shè)計任務(wù)及要求、方案比較及論證、軟件設(shè)計說明(軟件思想,流程,源程序設(shè)計及說明等)、程序調(diào)試說明和結(jié)果分析、課程設(shè)計收獲及心得體會。</p><p><b>
8、 時間安排:</b></p><p> 1. 1月4日----1月5日 查閱資料及方案設(shè)計</p><p> 1月6日----1月8日 編程</p><p> 1月9日----1月10日 調(diào)試程序</p><p> 1月11日 ----1月12日 撰寫課程設(shè)計報告</p
9、><p> 1月13日 上午準備答辯,下午正式答辯</p><p> 指導(dǎo)教師簽名: 年 月 日</p><p> 系主任(或責(zé)任教師)簽名: 年 月 日</p><p><b>
10、 摘 要</b></p><p> 步進電機是工業(yè)生產(chǎn)過程控制及儀表中的主要控制元件之一。例如,在機械結(jié)構(gòu)中,可以用絲杠把角度變成直線位移,也可以用它帶動螺旋電位器,調(diào)節(jié)電壓和電流,從而實現(xiàn)對執(zhí)行機構(gòu)的控制。在數(shù)字控制系統(tǒng)中,由于它可以直接接受計算機輸出的數(shù)字信號,而不需要進行數(shù)/模/轉(zhuǎn)換,可以用起來非常方便。步進電機角位移與控制脈沖間精確同步,若將角位移的改變轉(zhuǎn)變?yōu)榫€性位移、位置、體積、流量等物
11、理量的變化,便可通過硬件電路和軟件編程實現(xiàn)對它們的控制。</p><p> 步進電機作為執(zhí)行元件的一個顯著特點,就是具有快速啟停能力。如果負荷不超過步進電機所提供的動態(tài)轉(zhuǎn)矩值,就能使步進電機在“一剎那”間啟動或停轉(zhuǎn)。一般步進電機的步進速率為每秒200~1000步,如果步進電機是以逐漸加速到到最高轉(zhuǎn)速,然后再逐漸減速到零的方式工作,其步進速率增加1~2步,仍然不會失掉一步。</p><p>
12、; 步進電機的另一個顯著特點是精確度高。在沒有齒輪轉(zhuǎn)動的情況下,步距角可以由每步90°低到每步0.36°。</p><p> 正因為步進電機具有快速啟停、精確步進以及能直接接受數(shù)字量的特點,所以使其在定位場合中得到了廣泛的應(yīng)用。如在繪圖機、打印機及光學(xué)儀器中,都采用步進電機來定位繪圖筆、印字頭或光學(xué)鏡頭。特別是在工業(yè)過程控制的位置控制系統(tǒng)中,由于步進電機精度高以及不用位移傳感器即可達到精確
13、地定位,應(yīng)用越來越廣泛。</p><p> 關(guān)鍵詞:步進電機;特點;定位場合;廣泛應(yīng)用</p><p><b> Abstract</b></p><p> Stepper motor is the industrial production process control and instrumentation in one of th
14、e major control components. For example, in the mechanical structure, can screw into a linear displacement of the point of view, you can also use it to drive spiral potentiometer to regulate voltage and current in order
15、to achieve the implementation of institutional control. In the digital control system, because it can accept the computer output of digital signals without the need for D / / converter can </p><p> 1 課程設(shè)計任務(wù)
16、及要求</p><p><b> 1.1 設(shè)計任務(wù)</b></p><p> (1)通過鍵盤控制步進電機的啟動和停止,正轉(zhuǎn)和反轉(zhuǎn);</p><p> (2)編制完整的程序并調(diào)試;</p><p> (3)撰寫符合學(xué)校要求的課程設(shè)計說明書。</p><p><b> 1.2 設(shè)計
17、要求</b></p><p> ?。?) 掌握8088CPU的最小工作模式的結(jié)構(gòu)及其應(yīng)用各管腳的含義,地址的分配、選擇。</p><p> ?。?)熟練掌握8255A的初始化控制字的寫入及更改,巧妙應(yīng)用A口、B口、C口的功能,是它與實驗板上的其它芯片更好的配合應(yīng)用。</p><p> (3)熟練掌握可編程計數(shù)器/定時器8253的六種工作方式,各種方式控
18、制字的寫入,各種工作方式的特點,并能夠熟練的加以應(yīng)用。</p><p> ?。?)熟練掌握應(yīng)用8255A與ADC0809的配合使用來進行數(shù)據(jù)采樣。</p><p> (5)了解步進電機的工作原理,用程序?qū)崿F(xiàn)脈沖分配器,并對步進電機進行順序控制。</p><p> (6) 更加熟悉應(yīng)用匯編語言中的語句及用法,子程序的調(diào)用,模塊化編寫程序,和學(xué)會使用有關(guān)軟件的應(yīng)用編
19、程、編譯、調(diào)試、發(fā)現(xiàn)錯誤、修改錯誤總結(jié)經(jīng)驗,并且還要應(yīng)用匯編語言編寫實用程序,控制一個實際的對象。</p><p><b> 2 方案設(shè)計</b></p><p><b> 2.1 方案一</b></p><p> 2.1.1 設(shè)計思想</p><p> ?。?)根據(jù)步進電機的勵磁順序列寫控制
20、步進電機順序轉(zhuǎn)動的輸出的數(shù)據(jù)表。</p><p> ?。?)初始化8255A的工作方式,A口為輸入,B口為輸出。</p><p> ?。?)設(shè)計正轉(zhuǎn)步數(shù),每次循環(huán)走八步。</p><p> (4)當檢測到輸入信號為“0”時,程序跳轉(zhuǎn)到反轉(zhuǎn)。檢測輸入信號為“1”時繼續(xù)正轉(zhuǎn)。</p><p> (5)檢測到暫停信號時步進電機暫停旋轉(zhuǎn),檢測到啟
21、動信號時啟動。</p><p><b> 2.1.2 流程圖</b></p><p> 圖2-1方案一流程圖</p><p> 2.1.3 程序分析</p><p> 定義數(shù)據(jù)段,在設(shè)計主函數(shù)的過程中,首先要定義步進電機正轉(zhuǎn)和反轉(zhuǎn)的數(shù)據(jù)表。若要步進電機正轉(zhuǎn),則要按照A-AB-B-BC-C-CD-D-DA順序進行通
22、電,若要電機反轉(zhuǎn),則要按照A-AD-D-DC-C-CB-B-BA的順序進行通電,已知通電順序表如圖2-2所示,</p><p> 圖2-2 通電順序表</p><p> 根據(jù)運轉(zhuǎn)相序可知,若要步進電機正轉(zhuǎn),則要將正轉(zhuǎn)步數(shù)STR2設(shè)置為01H,03H,02H,06H,04H,0CH,08H,09H。若反轉(zhuǎn),STR1設(shè)為03H,01H,09H,08H,0CH,04H,06H,02H。&l
23、t;/p><p> 定義堆棧段,定義容量為100個字節(jié)的連續(xù)單元STA,再用等值語句EQU定義變量TOP為STA的長度。</p><p> 用等值語句將A端口,B端口,C端口與控制端口分配地址。A口為8000H,B口為8002H,C口為8004H,控制口為8006H。</p><p> 將數(shù)據(jù)DATA加載到數(shù)據(jù)段寄存器DS,堆棧段加載到堆棧段寄存器SS,并將TOP
24、的數(shù)值送入AX中存儲,設(shè)置指針SP指向AX。因為A端口為輸入,B端口為輸出,所以將8255A的方式控制字設(shè)定為90H,即10010000,并把它用MOV和OUT語句將它輸出到控制端口IOCON。</p><p> 由于我們設(shè)計的步進電機為八步,所以將步數(shù)08H送入CX中。并使用LEA將表示正轉(zhuǎn)相序的字符串STR2的偏移地址存放到目標變址寄存器DI中。</p><p> 使步進電機正向旋
25、轉(zhuǎn),利用轉(zhuǎn)移指令MOV和輸出指令OUT將STR2的步數(shù),輸入到A口,即輸入端口。利用TEST指令將AL中的內(nèi)容與01H相與。當結(jié)果為0,即按下反轉(zhuǎn)按鈕時,跳轉(zhuǎn)到MOT1,否則將DI加1,指向STR2的下一相序,并調(diào)用延時程序DELAY。</p><p> 由于步進電機反轉(zhuǎn)的時候也為八步,所以仍按08H送入CX中,并將表示反轉(zhuǎn)相序的串STR1的偏移地址存放到目標變址寄存器DI中。</p><p
26、> 為使步進電機反向旋轉(zhuǎn),將AL輸入進A端口,而將DX從B口輸出,利用TEST指令將AL中的內(nèi)容與02好做“與”運算。當結(jié)果為0時,即按下正轉(zhuǎn)按鈕時,程序跳回到MOT2中否則DI=DI+1,調(diào)用延時函數(shù)DElAY,IOLEDI循環(huán)執(zhí)行。</p><p><b> 2.2 方案二</b></p><p> 2.2.1 設(shè)計思想</p><
27、p> (1)根據(jù)步進電機的勵磁順序列寫控制步進電機順序轉(zhuǎn)動的輸出的數(shù)據(jù)表。</p><p> (2)初始化8255A的工作方式。</p><p> (3)設(shè)定需要步進電機轉(zhuǎn)過的步數(shù)。</p><p> ?。?)順序依次逐個延時(調(diào)用延時函數(shù)1:延時較長,實現(xiàn)慢轉(zhuǎn))輸出表中數(shù)據(jù)。</p><p> ?。?)設(shè)定需要步進電機快速轉(zhuǎn)過的
28、步數(shù)。</p><p> ?。?)順序依次逐個延時(調(diào)用延時函數(shù)2:延時較短,實現(xiàn)快轉(zhuǎn))輸出表中數(shù)據(jù)。</p><p> ?。?)設(shè)定需要反向轉(zhuǎn)過的步數(shù)。</p><p> ?。?)逆序依次逐個延時(調(diào)用延時函數(shù)1,慢速)輸出表中數(shù)據(jù),設(shè)定需要步進電機快速反向轉(zhuǎn)過的步數(shù)。</p><p> (9)逆序依次逐個延時(調(diào)用延時函數(shù)2,快速)輸出
29、表中數(shù)據(jù)。以此循環(huán),則可實現(xiàn)讓步進電機先低速正轉(zhuǎn)到高速正轉(zhuǎn),再從高速正轉(zhuǎn)到低速反轉(zhuǎn),再高速反轉(zhuǎn),周而復(fù)始。</p><p><b> 2.2.2 流程圖</b></p><p> 程序流程圖如圖2-3所示</p><p> 圖2-3 方案二程序流程圖</p><p> 2.2.3 程序分析</p>
30、<p> 在設(shè)計主函數(shù)的過程中,首先要定義步進電機的正轉(zhuǎn)數(shù)據(jù)表table。若要電機正轉(zhuǎn),則要按照A-AB-B-BC-C-CD-D-DA-A的順序通電。根據(jù)轉(zhuǎn)動相序可知,若要步進電機正轉(zhuǎn),則要將正轉(zhuǎn)步數(shù)設(shè)置為01H,03H,02H,06H,04H,0CH,08H,09H。</p><p> 將8255A的控制端口初始化,控制字設(shè)置為90H。把table的首地址賦給偏移地址為BX的存儲單元,并將其輸出
31、到B端口。將數(shù)據(jù)表中的字節(jié)數(shù)賦給CX,給DX賦值20。</p><p> 調(diào)用延時程序dally,在dally中,首先將之前賦給CX的0008H入棧保護,再將CX重新賦值5000H,通過給CX賦不同的值來控制AX入棧與出棧的循環(huán)次數(shù),從而達到設(shè)定步進電機正轉(zhuǎn)時的轉(zhuǎn)速。CX每次循環(huán)之后自減1,當CX=0時結(jié)束循環(huán),把延時程序一開始入棧保護的值0008H彈出棧。</p><p> 回到主程
32、序中,將BX自加1,使BX指向table的下一地址。將DX自減1,用單條件轉(zhuǎn)移指令JZ來判斷零標志位,當ZF=1時轉(zhuǎn)移到d1,否則CX=CX-1,返回A2。當CX=0時結(jié)束循環(huán),通過無條件轉(zhuǎn)移語句重回A1。</p><p> 在D1中進行對CX的修正,使CX減1,讓CX與BX數(shù)值對應(yīng),使轉(zhuǎn)速連貫。</p><p> 當正轉(zhuǎn)的步進電機進行加速時,調(diào)用延時程序dally k,先將CX的值入
33、棧保護,再將CX賦值0F00H,使AX進行入棧出棧的循環(huán),從而達到設(shè)定電機轉(zhuǎn)速的目的。每次循環(huán)過后CX自減1,當CX=0是,結(jié)束循環(huán),將原有的CX數(shù)值出棧。</p><p> 離開延時函數(shù)后,令BX=BX+1,指向table的下一地址,并使DX=DX-1.當ZF=1時,對BX進行修正。使BX與CX對應(yīng),讓換向操作連貫。當ZF=0時,重新循環(huán),直到CX=0.</p><p> 將BX指向
34、table數(shù)據(jù)表得首地址,將CX賦值0008H,然后調(diào)用延時函數(shù)dally k改變反向轉(zhuǎn)速。</p><p><b> 2.3 方案比較</b></p><p> 方案二將程序用emu8086進行匯編調(diào)試,可以生成可執(zhí)行文件.exe。在用protues 進行仿真的時候,正確的將程序裝載到8086中,可執(zhí)行仿真,但是步進電機無法正常旋轉(zhuǎn),始終保持0角度不變,在進行多
35、次糾正程序及線路檢查后,并未發(fā)現(xiàn)問題。</p><p> 方案一程序較方案二簡潔,在編寫程序的時候不容易出錯,用emu8086可以進行正確仿真,驗證了程序的正確性,在用proteus進行仿真的時候,同樣沒有問題。故經(jīng)論證,采用方案一。</p><p><b> 3 硬件分析</b></p><p><b> 3.1 電路設(shè)計圖&
36、lt;/b></p><p> 方案一的電路設(shè)計如圖3-1所示:</p><p> 圖3-1 電路設(shè)計圖</p><p><b> 3.2 各部件分析</b></p><p> 3.2.1 8086CPU </p><p> 圖3-2 8086CPU在電路中的引腳連接</p
37、><p> 圖3-2為8086CPU在電路中的引腳連接,因為8255選擇方式0-基本輸入/輸出方式,所以不會對8086產(chǎn)生狀態(tài)信號。因為RESET由外部輸入,高電平有效,所以本電路中將RESET管腳與地相連接,始終為零。</p><p> 同理,因為READY管腳為高電平有效,表示CPU訪問的存儲器或I/O端口已準備好傳輸數(shù)據(jù),所以將RESET管腳始終與高電平電源相連接。</p>
38、;<p> 為工作模式選擇信號(由外部輸入),為高電平時,表示CPU工作在最小模式系統(tǒng)中,為低電平時,表示CPU工作在最大模式系統(tǒng)中,本電路中程序要求CPU始終工作在最小模式系統(tǒng)中,即始終為高電平有效,所以可以將與READY的管腳相串聯(lián),然后與高電平電源相連接。</p><p> 8086CPU中AD[15..0]為分時復(fù)用的地址數(shù)據(jù)總線,傳送地址時以三態(tài)輸出,傳送數(shù)據(jù)時可以雙向三態(tài)輸入/輸出。
39、本電路中將其通過總線與鎖存器和8255A相連接,通過總線傳輸?shù)刂泛蛿?shù)據(jù)。</p><p> A[16..19]為地址線的第16位到第19位,因為8086系統(tǒng)中,數(shù)據(jù)線只有16位,而地址線則有20位,具有1M尋址空間,所以將AD[15..0]作為分時復(fù)用的地址數(shù)據(jù)總線,剩下的A[16..19]通過總線與存儲器相連接。</p><p> 為讀信號(三態(tài)輸出,低電平有效),表示當前CPU正在
40、讀存儲器或I/O端口,本電路中其與8255A的管腳直接相連。</p><p> 為寫信號(三態(tài)輸出,低電平有效),表示當前CPU正在寫存儲器或I/O端口,本電路中其與8255A的管腳直接相連。</p><p> 3.2.2 鎖存器74HC373</p><p> 74HC373是8位數(shù)據(jù)鎖存器。主要用于數(shù)碼管、按鍵等等的控制 </p><p
41、><b> 其真值表如下: </b></p><p> 表3-1 74HC373真值表</p><p> U2的電路連接如圖3-3</p><p> 圖3-3 U2的電路連接圖</p><p> ?。?的功能是實現(xiàn)AD[0..7]的鎖存,根據(jù)真值表,要實現(xiàn)鎖存功能,則必須始終為低電平,故將其與地相連接
42、。</p><p> LE與8086的相連接,8086中ALE為地址鎖存允許信號,向外部輸出,高電平有效。當ALE為高電平時,LE為高電平,可以實現(xiàn)鎖存功能。</p><p> 當OE為低電平,LE為高電平時,輸出的值為的輸進的值。</p><p> 因為一般將8255A的兩個地址引腳和分別接到系統(tǒng)地址總線的和,所以將U1中的和相連接。</p>
43、<p> U6的電路連接如圖3-4</p><p> 圖3-4 U6的電路連接</p><p> U6的功能是實現(xiàn)AD[8..15]的鎖存,根據(jù)真值表,要實現(xiàn)鎖存功能,則必須始終為低電平,故將其與地相連接。</p><p> LE與8086的相連接,8086中ALE為地址鎖存允許信號,向外部輸出,高電平有效。當ALE為高電平時,LE為高電平,可以
44、實現(xiàn)鎖存功能。</p><p> 當OE為低電平,LE為高電平時,輸出的值為的輸進的值。</p><p> 因為一般將8255A的片選信號一般由CPU的高位地址線及其譯碼電路產(chǎn)生,即,故將其地址鎖存輸出的連接到譯碼電路中去。聯(lián)合實現(xiàn)片選信號的選取。</p><p> 3.2.3 譯碼電路74LS138</p><p> 圖3-5 譯
45、碼電路74LS138</p><p> 本電路中選用最常用的譯碼器74LS138芯片,下面是它的真值表:</p><p><b> 真值表:</b></p><p> 表3-2 74LS138真值表</p><p> 選用作為輸出,連接到8255A的片選信號,實現(xiàn)譯碼。</p><p>
46、 3.2.4 開通/暫停 實現(xiàn)電路</p><p> 圖3-6 開通/暫停 實現(xiàn)電路</p><p> 本功能模塊的實現(xiàn)是基于對8255A片選信號的控制,由上圖可以看出,譯碼電路74LS138輸出的與一個單刀雙擲開關(guān)相或后再取反,這樣便可實現(xiàn) 開通/暫停 的功能,當輸出為0時,當開關(guān)撥向高電平電源時,或非門輸出為0,為0,電路開通;當開關(guān)撥向地時,或非門輸出為1. 為1,電路停止。
47、</p><p> 3.2.5 8255A可編程接口芯片</p><p> 圖3-7 8255A可編程接口芯片</p><p> D0~D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當CPU 執(zhí)行輸入輸出指令時,通過它實現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。通過總線直接與8086CPU的AD0 ~AD7相連接。</p>
48、;<p> RESET:復(fù)位輸入線,當該輸入端處于高電平時,所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式,本電路中均采用方式0,故RESET管腳應(yīng)該始終為低電平,故將其與地連接。 </p><p> ?。鹤x信號線,當這個輸入引腳為低電平時,即/RD=0且/CS=0時,允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。 與8086A的管腳
49、直接相連。</p><p> :寫入信號,當這個輸入引腳為低電平時,即/WR=0且/CS=0時,允許CPU將數(shù)據(jù)或控制字寫入8255。與8086A的管腳直接相連。</p><p> :芯片選擇信號線,當這個輸入引腳為低電平時,即=0時,表示芯片被中,允許8255與CPU進行通訊; =1時,8255無法與CPU做數(shù)據(jù)傳輸 。</p><p> PA0~PA7:端
50、口A輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入鎖存器。 本電路中用端口A作為輸入端口。</p><p> PB0~PB7:端口B輸入輸出線,一個8位的I/O鎖存器, 一個8位的輸入輸出緩沖器。 本電路中用端口B作為輸出端口。</p><p> PC0~PC7:端口C輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)
51、定而分成2個4位的端口, 每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號輸出或狀態(tài)信號輸入端口。本電路端口A端口B都采用方式0進行通訊,故不需要C端口進行狀態(tài)傳輸。在本電路中不需連接任何線路。</p><p> A1,A0:地址選擇線,用來選擇8255的PA口,PB口,PC口和控制寄存器。 </p><p> 當A1=0,A0=0時,PA口被選擇;&l
52、t;/p><p> 當A1=0,A0=1時,PB口被選擇;</p><p> 當A1=1,A0=0時,PC口被選擇;</p><p> 當A1=1,A0=1時,控制寄存器被選擇。 </p><p> 在本電路中A1,A0的選取是通過74HC373的Q1,Q2來進行選取的。</p><p> 3.2.6 步進電機順
53、時針/逆時針 選擇功能的實現(xiàn)</p><p> 圖3-8步進電機順時針/逆時針 選擇功能的實現(xiàn)的電路圖</p><p> 當按下順時針開關(guān)的時候,PA0變?yōu)榈碗娖?,通過8255A傳送到8086CPU中,控制步進電機順時針旋轉(zhuǎn)。</p><p> 當按下逆時針開關(guān)的時候,PA1變?yōu)榈碗娖?,通過8255A傳送到8086CPU中,控制步進電機逆時針旋轉(zhuǎn)。</p
54、><p><b> 4 軟件分析</b></p><p> 由于我們最終選擇的是方案二,所以下面對方案二進行分析。</p><p> 若要步進電機正轉(zhuǎn),則要按照A-AB-B-BC-C-CD-D-DA順序進行通電,若要電機反轉(zhuǎn),則要按照A-AD-D-DC-C-CB-B-BA的順序進行通電。</p><p> 根據(jù)運轉(zhuǎn)相
55、序可知,若要步進電機正轉(zhuǎn),則要將正轉(zhuǎn)步數(shù)STR2設(shè)置為01H,03H,02H,06H,04H,0CH,08H,09H。若反轉(zhuǎn),STR1設(shè)為03H,01H,09H,08H,0CH,04H,06H,02H。</p><p> 用等值語句將A端口,B端口,C端口與控制端口分配地址。A口為8000H,B口為8002H,C口為8004H,控制口為8006H。</p><p> 將數(shù)據(jù)DATA加載
56、到數(shù)據(jù)段寄存器DS,堆棧段加載到堆棧段寄存器SS,并將TOP的數(shù)值送入AX中存儲,設(shè)置指針SP指向AX。因為A端口為輸入,B端口為輸出,所以將8255A的方式控制字設(shè)定為90H,即10010000,并把它用MOV和OUT語句將它輸出到控制端口IOCON。</p><p> 由于我們設(shè)計的步進電機為八步,所以將步數(shù)08H送入CX中。并使用LEA將表示正轉(zhuǎn)相序的字符串STR2的偏移地址存放到目標變址寄存器DI中。&
57、lt;/p><p> 使步進電機正向旋轉(zhuǎn),利用轉(zhuǎn)移指令MOV和輸出指令OUT將STR2的步數(shù),輸入到A口,即輸入端口。利用TEST指令將AL中的內(nèi)容與01H相與。當結(jié)果為0,即按下反轉(zhuǎn)按鈕時,跳轉(zhuǎn)到MOT1,否則將DI加1,指向STR2的下一相序,并調(diào)用延時程序DELAY。</p><p> 由于步進電機反轉(zhuǎn)的時候也為八步,所以仍按08H送入CX中,并將表示反轉(zhuǎn)相序的串STR1的偏移地址存
58、放到目標變址寄存器DI中。</p><p> 為使步進電機反向旋轉(zhuǎn),將AL輸入進A端口,而將DX從B口輸出,利用TEST指令將AL中的內(nèi)容與02好做“與”運算。當結(jié)果為0時,即按下正轉(zhuǎn)按鈕時,程序跳回到MOT2中否則DI=DI+1,調(diào)用延時函數(shù)DElAY,IOLEDI循環(huán)執(zhí)行。</p><p><b> 5調(diào)試運行 </b></p><p>
59、; 5.1 方案一程序調(diào)試運行及仿真</p><p> 圖5-1 方案二程序匯編成功 可生成可執(zhí)行文件. Exe</p><p> 圖5-2 程序運行成功 程序正確 </p><p> 圖5-3 用PROTEUS對方案二進行仿真</p><p> 5.2方案二調(diào)試運行及仿真</p><p> 圖5-4用
60、emu8086 程序編譯成功可生成.exe文件</p><p> 圖5-5 執(zhí)行可執(zhí)行文件 程序完美運行 程序正確</p><p> 圖5-6 方案二程序PROTEUS仿真圖</p><p><b> 6心得體會</b></p><p> 在編程的過程中,我鞏固了用匯編語言處理數(shù)據(jù)的能力,特別是對數(shù)表數(shù)據(jù)的靈活運
61、用能力。在調(diào)試及試運行的過程中也遇到不少問題,最后都通過查閱課本及網(wǎng)絡(luò)一一解決了。</p><p> 通過這次課程設(shè)計,我充分的認識到了對待學(xué)習(xí)必須嚴謹認真,絕對不能敷衍了事。課設(shè)絕不是編一編程序那么簡單的事,我們應(yīng)從中努力挖掘更深層次的知識。徐老師的問題讓我充分認識到了自己對知識理解的還不夠深,對于一些問題的原理與本質(zhì)還沒有更確切的認識。這讓我們認識到了我們平時學(xué)知識就應(yīng)該多問自己幾個為什么,在尋求答案的過程
62、中不斷地提升自己。我以前的學(xué)習(xí)在一定程度上是比較盲目的:對待問題只要理解了即可,很少深究。通過這次課設(shè),我明白了我們必須多思考,多與別人交流,多提問,才能不斷地提升彼此。</p><p> 這次課設(shè)讓我收獲良多,在此對老師的悉心指導(dǎo)表示衷心的感謝通過這次課程設(shè)計,我了解了步進電動機的工作原理及接口電路原理,學(xué)會了用編程實現(xiàn)步進電動機正反轉(zhuǎn)及加速的方法。通過匯編實現(xiàn)讓8086控制步進電動機正轉(zhuǎn)、反轉(zhuǎn)、變速,鞏固了
63、對步進電動機的編程控制的理論基礎(chǔ),并從中獲得了初步的應(yīng)用經(jīng)驗。</p><p><b> 參考文獻</b></p><p> [1]周佩玲.微機原理與接口技術(shù).北京:電子工業(yè)出版社,2007</p><p> [2]潘新民.微型計算機控制技術(shù).北京:北京高等教育出版社,2008</p><p> [3]王爽.匯編
64、語言.北京:清華大學(xué)出版社,2005</p><p> [4]溫玉杰. Intel 匯編語言程序設(shè)計(第五版).北京電子工業(yè)出版社.2007</p><p> [5]楊繼東. 80X86匯編語言程序設(shè)計教程.北京.清華大學(xué)出版社。2000</p><p> 附錄一 方案一源程序</p><p> STACK SEGMENT
65、9;STACK' </p><p> STA DB 100 DUP(?) </p><p> TOP EQU LENGTH STA</p><p> STACK ENDS </p><p> DATA SEGMENT 'DATA' </p><p>
66、; STR1 DB 02H,06H,04H,0CH,08H,09H,01H,03H ;控制數(shù)據(jù)表 </p><p> STR2 DB 03H,01H,09H,08H,0CH,04H,06H,02H ;控制數(shù)據(jù)表 </p><p> DATA ENDS </p><p> END START </p><p>
67、 CODE SEGMENT 'CODE' </p><p> ASSUME CS:CODE,SS:STACK,DS:DATA </p><p> IOCON EQU 8006H </p><p> IOA EQU 8000H </p><p> IOB EQU 8002H </p&g
68、t;<p> IOC EQU 8004H </p><p><b> START: </b></p><p> MOV AX, DATA </p><p> MOV DS, AX </p><p> MOV AX, STACK </p><p> MOV SS,
69、AX </p><p> MOV AX, TOP </p><p> MOV SP, AX </p><p> MOV AL,90H </p><p> MOV DX,IOCON </p><p> OUT DX,AL </p><p><b> NOP </b>
70、;</p><p> MOV AL,0FFH </p><p> MOT2: MOV CX,08H </p><p> LEA DI,STR2 </p><p> IOLED2: MOV AL,[DI] </p><p> MOV DX,IOB </p><p> OUT DX,AL
71、 </p><p> MOV DX,IOA </p><p><b> IN AL,DX </b></p><p> TEST AL,01H </p><p> JE MOT1 ; 為0 </p><p><b> INC DI </b></p>&l
72、t;p> CALL DELAY </p><p> LOOP IOLED2 </p><p> JMP MOT2 </p><p> MOT1: MOV CX,08H </p><p> LEA DI,STR1 </p><p> IOLED1: MOV AL,[DI] </p>
73、;<p> MOV DX,IOB </p><p> OUT DX,AL </p><p> MOV DX,IOA </p><p><b> IN AL,DX </b></p><p> TEST AL,02H </p><p> JE MOT2 ; 為0 </p
74、><p><b> INC DI </b></p><p> CALL DELAY </p><p> LOOP IOLED1 </p><p><b> JMP MOT1 </b></p><p><b> DELAY: </b></p&g
75、t;<p><b> PUSH CX </b></p><p> MOV CX,0D1H </p><p><b> DELAY1: </b></p><p><b> NOP </b></p><p><b> NOP </b>&
76、lt;/p><p><b> NOP </b></p><p><b> NOP </b></p><p> LOOP DELAY1 </p><p><b> POP CX </b></p><p><b> RET </b>
77、;</p><p> CODE ENDS </p><p> 附錄二 方案二源程序</p><p> STACK SEGMENT STACK</p><p> DW 256 DUP(?)</p><p> STACK ENDS</p><p> DATA SEGMEN
78、T</p><p> TABLEDB 01H,03H,02H,06H,04H,0CH,08H,09H</p><p> DATA ENDS</p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA</p><p> START: MOV
79、 AX,DATA</p><p> MOV DS,AX</p><p> MAIN: MOV AL,90H </p><p> OUT 0F6H,AL</p><p><b> MOVDX,20</b></p><p> A1:MOV BX,OFFSET TA
80、BLE</p><p> MOV CX,0008H </p><p> A2: MOVAL,[BX] </p><p> OUT0F2H,AL</p><p> CALLDALLY </p>&l
81、t;p><b> INCBX</b></p><p><b> DECDX</b></p><p> JZD1 </p><p><b> LOOPA2</b></p><p><b> JMPA1 <
82、;/b></p><p> d1:DECCX ;修正</p><p><b> MOVDX,20</b></p><p> a3:MOVAL,[BX]</p><p> OUT0F2H,AL</p><p> CALLDALLY_k</p>&l
83、t;p><b> INCBX</b></p><p><b> DECDX</b></p><p><b> JZD2</b></p><p><b> LOOPA3</b></p><p><b> JMPm3<
84、/b></p><p> d2:decbx;修正</p><p><b> MOVDX,20</b></p><p> a4:MOVAL,[BX]</p><p> OUT0F2H,AL</p><p> CALLDALLY</p><p>
85、;<b> DECBX</b></p><p><b> DECDX </b></p><p><b> JZD3</b></p><p><b> LOOPA4</b></p><p><b> JMPM1 </b&g
86、t;</p><p> d3:deccx;修正</p><p><b> MOVDX,40</b></p><p> a5:MOVAL,[BX]</p><p> OUT0F2H,AL</p><p> CALLDALLY_k</p><p>&
87、lt;b> decBX</b></p><p><b> DECDX</b></p><p><b> JZD4</b></p><p><b> LOOPA5</b></p><p><b> JMPm2</b>&l
88、t;/p><p> d4:jmpmain</p><p> M1:MOVBX,OFFSET TABLE</p><p> MOVAX,0007H</p><p><b> ADDBX,AX</b></p><p> MOVCX,0008H</p><p&
89、gt;<b> JMPA4</b></p><p> M2:MOVBX,OFFSET TABLE</p><p> MOVAX,0007H</p><p><b> ADDBX,AX</b></p><p> MOVCX,0008H</p><p>&
90、lt;b> JMPA5</b></p><p> M3:MOVBX,OFFSET TABLE</p><p> MOVCX,0008H</p><p><b> JMPA3</b></p><p> DALLY:PUSHCX </p&g
91、t;<p> MOV CX,5000H</p><p> A9: PUSHAX</p><p><b> POPAX</b></p><p><b> LOOPA9</b></p><p><b> POPCX</b></p&g
92、t;<p><b> RET</b></p><p> DALLY_K:PUSHCX</p><p> MOVCX,0F00H</p><p> A10:PUSHAX</p><p><b> POPAX</b></p><p><
93、b> LOOPA10</b></p><p><b> POPCX</b></p><p><b> RET</b></p><p> CODE ENDS</p><p><b> END START</b></p><p&
94、gt; STACK SEGMENT STACK</p><p> DW 256 DUP(?)</p><p> STACK ENDS</p><p> DATA SEGMENT</p><p> TABLEDB 01H,03H,02H,06H,04H,0CH,08H,09H</p><p>
95、 DATA ENDS</p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA</p><p> START: MOV AX,DATA</p><p> MOV DS,AX</p><p> MAIN: MOV AL,8
96、0H </p><p> OUT 0F6H,AL</p><p><b> MOVDX,20</b></p><p> A1:MOV BX,OFFSET TABLE</p><p> MOV CX,0008H </p><p>
97、; A2: MOVAL,[BX] </p><p> OUT0F2H,AL</p><p> CALLDALLY </p><p><b> INCBX</b></p><p><b> DECDX</b><
98、/p><p> JZD1 </p><p><b> LOOPA2</b></p><p><b> JMPA1 </b></p><p> d1:deccx;修正</p><p><b> movdx,20&
99、lt;/b></p><p> a3:MOVAL,[BX]</p><p> OUT0F2H,AL</p><p> CALLDALLY_k</p><p><b> INCBX</b></p><p><b> DECDX</b></p&
100、gt;<p><b> JZD2</b></p><p><b> LOOPA3</b></p><p><b> JMPm3</b></p><p> d2:decbx;修正</p><p><b> MOVDX,20</
101、b></p><p> a4:MOVAL,[BX]</p><p> OUT0F2H,AL</p><p> CALLDALLY</p><p><b> DECBX</b></p><p><b> DECDX </b></p>
102、<p><b> JZD3</b></p><p><b> LOOPA4</b></p><p><b> JMPM1 </b></p><p> d3:deccx;修正</p><p><b> MOVDX,40</b>
103、;</p><p> a5:MOVAL,[BX]</p><p> OUT0F2H,AL</p><p> CALLDALLY_k</p><p><b> decBX</b></p><p><b> DECDX</b></p><
104、;p><b> JZD4</b></p><p><b> LOOPA5</b></p><p><b> JMPm2</b></p><p> d4:jmpmain</p><p> M1:MOVBX,OFFSET TABLE</p&g
105、t;<p> MOVAX,0007H</p><p><b> ADDBX,AX</b></p><p> MOVCX,0008H</p><p><b> JMPA4</b></p><p> M2:MOVBX,OFFSET TABLE</p>
106、<p> MOVAX,0007H</p><p><b> ADDBX,AX</b></p><p> MOVCX,0008H</p><p><b> JMPA5</b></p><p> M3:MOVBX,OFFSET TABLE</p><
107、p> MOVCX,0008H</p><p><b> JMPA3</b></p><p> DALLY:PUSHCX </p><p> MOV CX,5000H</p><p> A9: PUSHAX</p><p>&
108、lt;b> POPAX</b></p><p><b> LOOPA9</b></p><p><b> POPCX</b></p><p><b> RET</b></p><p> DALLY_K:PUSHCX</p>&
109、lt;p> MOVCX,0F00H</p><p> A10:PUSHAX</p><p><b> POPAX</b></p><p><b> LOOPA10</b></p><p><b> POPCX</b></p><
110、p><b> RET</b></p><p> CODE ENDS</p><p><b> END START</b></p><p> 本科生課程設(shè)計成績評定表</p><p> 指導(dǎo)教師簽字: </p><p> 年
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機原理課程設(shè)計報告--步進電機設(shè)計
- 微機原理課程設(shè)計---步進電機的微機控制
- 微機原理課程設(shè)計---步進電機正反轉(zhuǎn)
- 微機原理課程設(shè)計--步進電機控制系統(tǒng)
- 微機原理與技術(shù)課程設(shè)計--步進電機控制
- 微機原理課程設(shè)計說明書---步進電機控制
- 課程設(shè)計-- 微機步進電機控制系統(tǒng)設(shè)計
- 微機原理課程設(shè)計--電機調(diào)速系統(tǒng)設(shè)計
- 微機原理課程設(shè)計--用8051控制步進電機驅(qū)動的玩具小車
- 微機課程設(shè)計報告 小型步進電機控制系統(tǒng)設(shè)計
- 微機接口課程設(shè)計-本地步進電機綜合控制
- 步進電機課程設(shè)計
- 課程設(shè)計步進電機
- 步進電機課程設(shè)計
- 微機控制技術(shù)課程設(shè)計---步進電機控制系統(tǒng)設(shè)計
- 微機原理課程設(shè)計
- 微機原理課程設(shè)計---基于80x86的步進電機控制系統(tǒng)
- 數(shù)電課程設(shè)計---步進電機工作原理
- 機械原理課程設(shè)計--步進式輸送機設(shè)計
- 步進電機課程設(shè)計--- 步進電機控制系統(tǒng)
評論
0/150
提交評論