計算機控制課程設(shè)計逐點比較插補原理的實現(xiàn)_第1頁
計算機控制課程設(shè)計逐點比較插補原理的實現(xiàn)_第2頁
計算機控制課程設(shè)計逐點比較插補原理的實現(xiàn)_第3頁
計算機控制課程設(shè)計逐點比較插補原理的實現(xiàn)_第4頁
計算機控制課程設(shè)計逐點比較插補原理的實現(xiàn)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、東華理工大學(xué)計算機控制技術(shù)課程設(shè)計說明書微型計算機控制技術(shù)課程設(shè)計報告課題名稱:逐點比較插補原理的實現(xiàn)姓 名: 班 級: 學(xué) 號: 指導(dǎo)老師: 東華理工大學(xué)機械與電子工程學(xué)院2016年6月目錄目錄1一 設(shè)計任務(wù)和要求3二、任務(wù)分析4(1)動態(tài)顯示4(2)按鍵功能4(3)硬件系統(tǒng)設(shè)計4(4)插補算法實現(xiàn)4三、總體方案設(shè)計53.1 硬件總體方案設(shè)計53.2 軟件總體方案設(shè)計5四、硬件系統(tǒng)設(shè)計64.1 方案論證64.2 單片機與8255的接口74.3電機硬件接線原理圖84.4元件清單94.5、鍵盤顯示硬件設(shè)計94.5.1鍵盤輸入電路94.5.2 動態(tài)顯示電路104.5.3 所用元器件10五 軟件系統(tǒng)

2、設(shè)計115.1 軟件設(shè)計原理115.1.1逐點比較法圓弧插補原理115.1.2 步進電機工作原理125.2 8255的初始化編程145.3 步進電機走步控制程序145.3.1 nr1程序流程圖155.3.2 走步控制匯編程序代碼165.3.3 nr4程序流程圖175.4 鍵盤顯示程序設(shè)計185.4.1、鍵盤與i/o接口 表5鍵盤接口185.4.2、鍵盤顯示程序流程圖185.4.3 六個功能鍵:195.5主程序195.5.1 主程序流程圖195.4.2 源程序代碼20六 系統(tǒng)調(diào)試206.1 系統(tǒng)安裝調(diào)試206.2 結(jié)果驗證20七 課程設(shè)計總結(jié)22八、參考文獻22附錄一 芯片資料23附錄二 源程序

3、24一 設(shè)計任務(wù)和要求設(shè)計一個計算機控制步進電機系統(tǒng),該系統(tǒng)利用89c51(或89c52、89s52)機的px口輸出控制信號,其信號驅(qū)動、控制x、y兩個方向的三相步進電機轉(zhuǎn)動,利用逐點比較法插補繪制出各種曲線。在第一象限,x(10)、y(10)最大坐標(biāo)值。其他坐標(biāo)值任意定,但插補計算不得小于8步。要求:1)在顯示器上顯示任意四位十進制數(shù);a、定義鍵盤按鍵:10個為數(shù)字鍵09;6個功能鍵:設(shè)置set、清零clr、確認(rèn)、開始start、暫停、停止;b、顯示器上第一位顯示次數(shù),后三位顯示每次行走的角度;c、通過鍵盤的按鍵,設(shè)置x、y軸插補的起始值;按start鍵啟動步進電機開始轉(zhuǎn)動,按set鍵進行數(shù)

4、據(jù)設(shè)置、按clr鍵清零。2)設(shè)計硬件系統(tǒng),畫出電路原理框圖(要求規(guī)范);3)定義步進電機轉(zhuǎn)動的控制字;(不設(shè)計步進電機驅(qū)動電路與驅(qū)動程序)。4)推導(dǎo)出用逐點比較法插補繪制出下面曲線的算法;5)編寫算法控制程序;6)撰寫設(shè)計說明書。選擇曲線如下:圖1 目標(biāo)曲線二、任務(wù)分析(1)動態(tài)顯示采用四位共陽極led顯示器動態(tài)顯示,不斷掃描顯示。采用44鍵盤作為輸入模塊,接單片機p1口,采用線反轉(zhuǎn)法進行編程,線反轉(zhuǎn)法的工作原理和查鍵步驟:求按鍵的列線值:行線作為輸出線,列線作為輸入線,即可得到列線值。求按鍵的行線值:行線作為輸入線,列線作為輸出線,即可得到行線值。求按鍵的特征碼:把行線值和列線值合并,組合成

5、為按鍵的特征碼。查找鍵碼:通過查表就可以得到與特征碼對應(yīng)的順序碼,就可以得知是哪個按鍵按下。表中若沒有該特征碼以無效鍵處理,并與沒有按鍵(0ff)等同看待。(2)按鍵功能程序主體要按照,先掃描按鍵,待設(shè)置完成,按下啟動按鈕,才能進行插補運算,并且,把走過的步數(shù),輸出顯示。通過數(shù)字鍵,輸入起點坐標(biāo),暫存數(shù)據(jù),待按下啟動按鈕,把數(shù)據(jù)輸入x,y對應(yīng)存儲單元。(3)硬件系統(tǒng)設(shè)計采用at89c51單片機作為主控制器,44鍵盤作為設(shè)置鍵,p0口作為顯示和控制字輸出口,在驅(qū)動步進電機時,數(shù)據(jù)通過74ls373進行鎖存,通過8255pa口輸入,pb、pc口輸出,經(jīng)過驅(qū)動電路,驅(qū)動步進電機工作。在顯示時通過74

6、hct573進行數(shù)據(jù)鎖存,用4位數(shù)碼管對輸出數(shù)據(jù)進行顯示。(4)插補算法實現(xiàn)由圖可知,在圖像第一象限內(nèi)為一個半圓,必須進行坐標(biāo)變換,轉(zhuǎn)化為兩個第一、第四象限的逆圓弧插補。然后按照第一、第四象限的插補算法進行插補計算。坐標(biāo)變換(x-5,y-6)就可以得到相對坐標(biāo),第四象限內(nèi),起點絕對坐標(biāo)為(5,2),相對坐標(biāo)為(0,-4),終點絕對坐標(biāo)為(9,6),相對坐標(biāo)為(4,0)。第一象限內(nèi)起點絕對坐標(biāo)為(9,6),相對坐標(biāo)為(4,0),終點絕對坐標(biāo)為(5,10),相對坐標(biāo)為(0,4)。插補的圓心為(5,6),半徑為4。三、總體方案設(shè)計電源模塊3.1 硬件總體方案設(shè)計數(shù)碼顯示驅(qū)動電路 pb0 pb1 pb

7、28255 pc0 pc1 pc2p0口89c51p1口m1驅(qū)動電路鍵盤模塊m2電源模塊圖2 硬件系統(tǒng)方框圖3.2 軟件總體方案設(shè)計首先調(diào)鍵盤輸入子程,對按鍵進行掃描,當(dāng)設(shè)置鍵有效時,通過數(shù)字鍵對x、y進行賦初值,通過功能鍵進行清零,通過strat鍵,開始啟動插補程序,進行插補。插補過程中,分別調(diào)用不同象限的插補程序,實現(xiàn)不同方向的進給。同時把步進次數(shù),輸出顯示。四、硬件系統(tǒng)設(shè)計4.1 方案論證單片機的接口電路可以是鎖存器,也可以是專門的接口芯片,本設(shè)計采用可編程接口芯片8255。由于步進電機需要的驅(qū)動電流比較大,所以單片機和步進電機的連接還要有驅(qū)動電路,如何設(shè)計驅(qū)動電路成了問題的關(guān)鍵。設(shè)計方

8、案一如圖3所示,當(dāng)某相上驅(qū)動信號變?yōu)楦唠娖綍r,達林頓管導(dǎo)通,從而使得該相通電。圖3 驅(qū)動電路方案一設(shè)計方案二如圖4所示,在單片機與驅(qū)動器之間增加一級光電隔離,當(dāng)驅(qū)動信號為高電平時,發(fā)光二極管發(fā)光,光敏三極管導(dǎo)通,從而使達林頓管截止,該相不通電;當(dāng)驅(qū)動信號為低電平時,則步進電機的該相通電。圖4 驅(qū)動電路方案二綜合比較兩種設(shè)計方案可知,方案二有抗干擾能力,且可避免一旦驅(qū)動電路發(fā)生故障,造成高電平信號進入單片機而燒毀器件。所以,本設(shè)計選擇方案二。4.2 單片機與8255的接口mcs-51單片機可以和8255直接連接而不需要任何外加邏輯器件,接口示意圖如圖5所示。因為8255的b口和c口具有驅(qū)動達林頓

9、管的能力,所以將采用b口和c口輸出驅(qū)動信號。圖5 單片機與8255的接口4.3電機硬件接線原理圖圖6 系統(tǒng)硬件接線原理圖單片機控制步進電機的硬件接線如圖6所示。因為8255的片選信號接單片機的地址線p2.7,a1、a0通過地址鎖存器接到了8051單片機的地址線p0.1和p0.0,由硬件接線圖可以清楚地知道,8255的各口地址為:a口地址: 7ffchb口地址: 7ffdhc口地址: 7ffeh控制口地址:7fffh同時,b口和c口都作為輸出口,8255工作在方式0。下面以8255的b口輸出端pb0為例說明控制的工作原理。若pb0輸出0,經(jīng)反相器74ls04后變?yōu)楦唠娖?,發(fā)光二極管正向?qū)òl(fā)光。

10、在光線的驅(qū)動下,光敏三極管導(dǎo)通,+5v 的電壓經(jīng)三極管引入地線而不驅(qū)動達林頓管。因而,達林頓管截止,x軸上步進電機的c相不通電。若pb0輸出1,反相后變?yōu)榈碗娖?,發(fā)光二極管不導(dǎo)通。從而光敏三極管截止,+5v 電壓直接驅(qū)動達林頓管導(dǎo)通,x軸上步進電機的c相有從電源流向地線的電流回路,即c相得電。4.4元件清單表1 元件清單表名稱位號型號數(shù)量單片機80511地址鎖存器74ls3731并行接口芯片8255a1反相器74ls046電阻r1r241k24光電三極管u1u34n253達林頓管q1q6npn dar6二極管d1d6in400164.5、鍵盤顯示硬件設(shè)計4.5.1鍵盤輸入電路圖7 鍵盤輸入電路

11、4.5.2 動態(tài)顯示電路 圖8 動態(tài)顯示電路4.5.3 所用元器件圖9 所用器件五 軟件系統(tǒng)設(shè)計5.1 軟件設(shè)計原理5.1.1逐點比較法圓弧插補原理(1)加工一個圓弧,很容易令人想到用加工點到圓心的距離與該圓弧的名義半徑相比較來反映加工偏差。設(shè)要加工圖3-1所示的第一象限逆時針走向的圓弧ab,半徑為r,以圓點為圓心,起點坐標(biāo)為a(,),在xy坐標(biāo)平面第一象限中,點的加工偏差 有以下3種情況。 圖10 圓弧插補若加工點正好落在圓弧上,則下式成立,即若加工點落在圓弧外側(cè),則,即若加工點落在圓弧內(nèi)側(cè),則,即將上面各式分別改寫為下列形式,即 (在圓弧上) (在圓弧外側(cè)) (在圓弧外側(cè))取加工偏差判別式

12、為若點在圓弧外側(cè)或圓弧上,則滿足的條件時,向軸發(fā)出一負(fù)向運動的進給脈沖;若點在圓弧內(nèi)測,即滿足條件的條件時,則向軸發(fā)出一正向運動的進給脈沖。為了簡化偏差判別式的運算,仍用遞推法來推算下一步新的加工偏差。設(shè)加工點在圓弧外側(cè)或圓弧上,則加工偏差為故軸必須向負(fù)方向進給一步,移動到新的加工點,其加工偏差為 (5-1)設(shè)加工點在圓弧的內(nèi)測,則。那么y軸須向正向進給一步,移到新的加工點,其加工偏差為(5-2)根據(jù)式(3-)及式(3-)可以看出,新的加工點的偏差值可以用前一點的偏差值遞推出來。遞推法把圓弧偏差運算式由平方運算化為加法和乘2運算,而對二進制來說,乘2運算是容易實現(xiàn)的。(2)圓弧插補的象限處理表

13、2 xy平面內(nèi)逆圓插補的進給方向與偏差計算線型偏差偏差計算進給方向與坐標(biāo)nr1ff+2x+1xx+1nr1nr2ff-2x+1xx-1nr2nr3ff+2y+1yy+1nr3nr4ff-2y+1yyx-15.1.2 步進電機工作原理步進電機有三相、四相、五相、六相等多種,本設(shè)計采用三相步進電機的三相六拍工作方式,其通電順序為:各相通電的電壓波形如圖8所示。圖11 三相六拍工作的電壓波形當(dāng)步進電機的相數(shù)和控制方式確定之后,pb0pb2和pc0pc2輸出數(shù)據(jù)變化的規(guī)律就確定了,這種輸出數(shù)據(jù)變化規(guī)律可用輸出字來描述。為了便于尋找,輸出字以表的形式存放在計算機指定的存儲區(qū)域。表3、4給出了三相六拍正反

14、轉(zhuǎn)控制方式的輸出字表。表3 三相六拍控制方式正轉(zhuǎn)輸出字表控制位工作狀態(tài)控制字表c相b相a相1001a01h2011ab03h3010b02h4110bc06h5100c04h6101ca05h表4 三相六拍控制方式反轉(zhuǎn)輸出字表控制位工作狀態(tài)控制字表c相b相a相1001a01h2011ca05h3010c04h4110bc06h5100b02h6101ab03h5.2 8255的初始化編程由前面的分析知道,8255工作在方式0,控制口地址為 7fffh,控制字為90h。所以,8255的初始化編程如下。mov dptr, #7fffh ;控制口地址送dptrmov a, #90h ;pa口輸入,p

15、b、pc口輸出,方式0movx dptr, a ;將控制字寫入控制口5.3 步進電機走步控制程序 圖12 目標(biāo)曲線分段為了實現(xiàn)如圖所示曲線,我們將坐標(biāo)原點移到d點,其余坐標(biāo)進行變換,圖示d點為(0,0),a點為(0,-4),b點為(4,0),c點為(0,4),劃分為兩段圓弧,nr1即bc段,nr4即ab段。5.3.1 nr1程序流程圖 開始初始化x0x,y0y,0f,nef=0 n y-x方向走一步+y方向走一步f=f-2x+1f=f+2y+1x=x-1y=y+1e=e-1e=0? n y結(jié)束 圖13 nr1步進電機走步控制程序流程圖5.3.2 走步控制匯編程序代碼以下為第一象限x軸上步進電機

16、為例,y軸上步進電機算法類似xcotrol: mov dptr, #adxp /(#adxn) ;將控制字表地址賦給dpth mov a, r2 ;表首偏移量送a movc a, a+dptr ;讀取當(dāng)前步進電機的控制字 mov dptr, #7ffdh ;pb口地址送dptr movx dptr, a ;將步進電機的控制字傳送到pb口 cjne a, #05h/(03h), loop3 ;若未到表尾,轉(zhuǎn)loop3 mov r2, #00h ;表首偏移量清零 sjmp delay1loop3: inc r2 ;未到表尾,表首偏移量加1 delay1: mov r0, #ffh ;延時 djnz

17、 delay1ret ;返回adxp: db 01h db 03h db 02h db 06h db 04h db 05hadxn: db 01h db 05h db 04h db 06h db 02h db 03h5.3.3 nr4程序流程圖 開始初始化x0x,|y0|y,0f,nef=0 n y+y方向走一步+x方向走一步f=f-2y+1f=f+2x+1y=y-1x=x+1e=e-1e=0? n y結(jié)束 圖14 nr4步進電機走步控制程序流程圖值得關(guān)注的是第四象限的插補,y要帶入y0的絕對值,且n=(xe-x)+(y-ye)其控制算法實現(xiàn)同第一象限類似。5.4 鍵盤顯示程序設(shè)計5.4.1、

18、鍵盤與i/o接口 表5鍵盤接口0123p10輸入4567p1189abp12cdefp13p14p15p16p17輸出5.4.2、鍵盤顯示程序流程圖 圖15 鍵盤顯示5.4.3 六個功能鍵: 表6 功能鍵與順序碼、特征碼對應(yīng)表設(shè)置set清零clr確認(rèn)開始start暫停停止abcdef0bbh7bh0e7h0d7h0b7h77h5.5主程序第一、要實現(xiàn)兩個象限插補,首先調(diào)用nr4子程,然后調(diào)用nr1子程。第二、要考慮與鍵盤顯示電路相結(jié)合,將走步次數(shù)輸出顯示。開始5.5.1 主程序流程圖調(diào)用鍵盤掃描子程判斷鍵盤是否設(shè)置完畢 n 調(diào)用顯示子程調(diào)用nr4子程 y調(diào)用顯示子程調(diào)用nr1子程結(jié)束圖16 主

19、程序流程圖5.4.2 源程序代碼首先分配各變量的地址,高位存高地址,低位存進低地址。源程序代碼見附錄二。 表7變量地址分配變量xyxeyefe高位地址51h4fh4dh4bh49h53h低位地址52h50h4eh4ch4ah54h六 系統(tǒng)調(diào)試6.1 系統(tǒng)安裝調(diào)試 按照硬件接線圖將系統(tǒng)安裝好后,裝入程序,執(zhí)行后查看步進電機的走步軌跡。6.2 結(jié)果驗證(1)nr4插補:終點坐標(biāo)(xe,ye)為(4,0),起點坐標(biāo)(0,0)為(0,-4)插補計算過程如表3所示。表8 nr4插補計算過程步數(shù)偏差判別坐標(biāo)進給偏差計算坐標(biāo)修正終點判別起點f0=0x=0,y=4e=81f0=0+yf1=0-2*4+1=-7

20、x=0,y=3e=72f10+xf2=-7+0+1=-6x=1,y=3e=63f20+xf3=-6+2*1+1=-3x=2,y=3e=54f30+yf5=2-2*3+1=-3x=3,y=2e=36f50+yf7=4-2*2+1=1x=4,y=1e=18f7=0+yf8=1-2*1+1=0x=4,y=0e=0(2)nr1插補:終點坐標(biāo)(xe,ye)為(0,4),起點坐標(biāo)(0,0)為(4,0)插補計算過程如表4所示。表9 nr1插補計算過程步數(shù)偏差判別坐標(biāo)進給偏差計算坐標(biāo)修正終點判別起點f0=0x=4,y=0e=81f0=0-xf1=0-2*4+1=-7x=3,y=0e=72f10+yf2=-7+

21、0+1=-6x=3,y=1e=63f20+yf3=-6+2*1+1=-3x=3,y=2e=54f30-xf5=2-2*3+1=-3x=2,y=3e=36f50-xf7=4-2*2+1=1x=1,y=4e=18f70-xf8=1-2*1+1=0x=0,y=4e=0 根據(jù)上表,可作出步進電機的走步軌跡如圖11所示。系統(tǒng)走步軌跡與下圖比較,可判斷出設(shè)計的正確性。圖17 步進電機走步軌跡七 課程設(shè)計總結(jié)通過一個多星期的課程設(shè)計,我對這門課有了進一步的了解。學(xué)習(xí)過程中在老師的耐心指導(dǎo)下,有意識的培養(yǎng)和建立了我的思維能力,使我真正建立數(shù)據(jù)及信息流的概念,以便在控制應(yīng)用中,能夠使軟件和硬件有機地結(jié)合。通過單

22、片機對步進電機的控制系統(tǒng)設(shè)計,讓我真正的掌握了微型計算機軟件和硬件相結(jié)合的設(shè)計方法。工業(yè)控制是計算機的一個重要應(yīng)用領(lǐng)域,計算機控制正是為了適應(yīng)這一領(lǐng)域的需要而發(fā)展起來的一門專門技術(shù),它主要研究如何將計算機技術(shù)和自動控制理論應(yīng)用于工業(yè)生產(chǎn)過程,并設(shè)計出所需要的計算機控制系統(tǒng)。而當(dāng)代,隨著微型計算機的高度發(fā)展。它的應(yīng)用在人們的工作和日常生活中越來越普遍了。工業(yè)過程控制是計算機的一個重要應(yīng)用領(lǐng)域?,F(xiàn)在可以好不夸張的說,沒有微型計算機的儀器不能乘為先進的儀器,沒有微型計算機的控制系統(tǒng)不能稱其為現(xiàn)代控制系統(tǒng)的時代已經(jīng)到來。微型計算控制技術(shù)正為了適應(yīng)這一領(lǐng)域的需要而發(fā)展起來的一門技術(shù)。絕大多數(shù)自動控制都是

23、使用計算機來實現(xiàn)的;微型計算機控制技術(shù)的發(fā)展,使得以微型計算機為控制器核心的微機測控裝置與系統(tǒng),滲透到了國民經(jīng)濟的各行各業(yè),已經(jīng)無時無處不在影響每個現(xiàn)代人的生活。只有態(tài)度認(rèn)真的對待這門學(xué)科才能真正掌握其中的精髓,在將來的工作中或許起著至關(guān)重要的作用。八、參考文獻1賀亞茹.匯編語言程序設(shè)計.北京:科學(xué)出版社,20052卜艷萍、周偉.匯編語言程序設(shè)計教程.北京:清華大學(xué)出版社,20043溫玉杰.intel匯編語言程序設(shè)計(第四版).北京:電子工業(yè)出版社,20044鄭學(xué)堅、周斌.微型計算機原理與應(yīng)用.北京:清華大學(xué)出版社,20005于海生.微型計算機控制技術(shù).北京:清華大學(xué)出版社,19986沈美明、

24、溫冬嬋.ibm-pc匯編語言程序設(shè)計.北京:清華大學(xué)出版社,2002 7何立民.單片機應(yīng)用系統(tǒng)設(shè)計.北京:北京航空航天大學(xué)出版社,2003附錄一 芯片資料圖18 8051單片機引腳圖 圖19 可編程芯片8255a引腳圖附錄二 源程序org 0100hmain:mov dptr, #7fffh ;控制口地址送dptrmov a, #90h ;方式0,pa輸入,pb、pc口輸出movx dptr, a ;將控制字寫入控制口,初始化8255n:acall inputmaincjne a,0d7h,nacall nr4acall nr1endnr1:mov 4eh, ? ;xe的低8位存入4ehmov

25、 4dh, ? ;xe的高8位存入4dhmov 4ch, ? ;ye的低8位存入4chmov 4bh, ? ;ye的高8位存入4bhmov 52h,? ;x的低8位存入52hmov 51h,? ;x的高8位存入51hmov 50h,? ;y的低8位存入50hmov 4fh,? ;y的高8位存入4fhmov 4ah,#00h ;f的低8位清零mov 49h,#00h ;f的高8位清零clr r2 ;表adxn偏移量清零clr r3 ;表adyp偏移量清零mov r6,#02h ;在計算f=f+2*y+1時使用clr c ;計算總步數(shù)emov a,52h subb a,4eh ;a=(x-xe)低

26、位mov 54h,a ;(54h)=(x-xe)低位mov a,51hsubb a,4dh ;b=(x-xe)高位mov 53h,aclr cmov 20h,cadd a,54hmov 54h,amov 21h,cmov a,4bhmov c,20hsubb a,4fhmov c,21haddc a,53hmov 53h,arp2: mov a, 49h ;取偏差的高8位 jb acc.7, rp6 ;若fm0,轉(zhuǎn)到rp6 acall xmn ;否則,調(diào)xmn acall fmm1 ;計算新偏差:f-2*x+1 acall decx ;x=x-1rp4:clr c mov a,54h subb

27、 a,#01h mov 54h,a mov a,53h subb a,#00h mov 53h,a orl a,54h jnz rp2org 8000hendrp6:acall ymp acall fmm2 acall addy ajmp rp4xmn : mov dptr, #adxn ;將控制字表地址賦給dpth mov a, r2 ;表首偏移量送a movc a, a+dptr ;讀取當(dāng)前步進電機的控制字 mov dptr, #7ffdh ;pb口地址送dptr movx dptr, a ;將步進電機的控制字傳送到pb口 cjne a, #03h, loop3 ;若未到表尾,轉(zhuǎn)loop3

28、 mov r2, #00h ;表首偏移量清零 sjmp delay1 loop3: inc r2 ;未到表尾,表首偏移量加1delay1: mov r0, #ffh ;延時 djnz delay1ret ;返回ymp: mov dptr, #adyp ;將控制字表地址賦給dpth mov a, r3 ;ady表首偏移量送a movc a, a+dptr ;讀取當(dāng)前步進電機的控制字 mov dptr, #7ffeh ;pc口地址送dptr movx dptr, a ;將步進電機的控制字傳送到pc口 cjne a, #05h, loop4 ;若未到表尾,轉(zhuǎn)loop4 mov r3, #00h ;表

29、首偏移量清零 sjmp delay2 loop4: inc r3 ;未到表尾,表首偏移量加1 delay2: mov r0, #ffh ;延時 djnz delay2 retadxn: db 01h ;-x方向走一步步進電機控制字表 db 05h db 04h db 06h db 02h db 03hadyp: db 01h ;+y方向走一步步進電機控制字表 db 03h db 02h db 06h db 04h db 05hfmm1:f=f-2*x+1clr cmov a,4ahsubb a,52hxch a,bmov a,49hsubb a,51hxch a,bclr csubb a,52

30、hxch a,bsubb a,51hxch a,badd a,#01hmov 4ah,axch a,baddc a,#00hmov 49h,aretdecx: x=x-1clr cmov a,52hsubb a,#01hmov 52h,amov a,51hsubb a,#00hmov 51h,aretfmm2:f=f+2y+1 mov a,4ah add a,50hmov 4ah,amov a,49haddc a,4fhmov 49h,adjnz r6,fmm2mov a,4ahadd a,#01hmov 4ah,amov a,49haddc a,#00hmov 49h,aretaddy:mo

31、v a,50h add a,#01h mov 50h,a mov a,4fh addc a,#00h mov 4fh,a retnr4::mov 4eh, ? ;xe的低8位存入4ehmov 4dh, ? ;xe的高8位存入4dhmov 4ch, ? ;ye的低8位存入4chmov 4bh, ? ;ye的高8位存入4bhmov 52h,? ;x的低8位存入52hmov 51h,? ;x的高8位存入51hmov 50h,? ;y的低8位存入50hmov 4fh,? ;y的高8位存入4fhmov 4ah,#00h ;f的低8位清零mov 49h,#00h ;f的高8位清零clr r3 ;表adyp

32、偏移量清零clr r4 ;表adxp偏移量清零mov r6,#02h ;在計算f=f+2*x+1時使用clr c ;計算總步數(shù)emov a,4eh subb a,52h ;a=(xe-x)低位mov 54h,a ;(54h)=(xe-x)低位mov a,4dhsubb a,51h ;b=(x-xe)高位mov 53h,a ;(53h)=(xe-x)高位clr cmov a,50h subb a,4ch ;(a)=(y-ye)低位mov 20h,c ;暫存借位位add a,54h ;d=a+cmov 54h,a ;保存e的低位mov 21h,c ;暫存d=a+c,產(chǎn)生的進位位mov a,4fh

33、;計算y-ye的高位mov c,20h ;恢復(fù)借位位subb a,4bh ;(a)=(4bh)-(4fh)即(ye-y)高位mov c,21h ;恢復(fù)低位相加進位位addc a,53h ;計算(x-xe)高位+(y-ye)高位mov 53h,a ;保存e的高位rp1: mov a, 49h ;取偏差的高8位 jb acc.7, rp5 ;若fm0,轉(zhuǎn)到rp5 acall ymp ;否則,調(diào)ymp acall fmm3 ;計算新偏差:f-2*y+1 acall decy ;y=y-1rp3:clr c ;e=e-1 mov a,54h subb a,#01h mov 54h,a mov a,53

34、h subb a,#00h mov 53h,a orl a,54h jnz rp1org 8000hendrp5:acall xmp ;+x方向走一步 acall fmm4 ;f=f+2*x+1 acall addx ;x=x+1 ajmp rp3ymp: mov dptr, #adyp ;將控制字表地址賦給dpth mov a, r3 ;ady表首偏移量送a movc a, a+dptr ;讀取當(dāng)前步進電機的控制字 mov dptr, #7ffeh ;pc口地址送dptr movx dptr, a ;將步進電機的控制字傳送到pc口 cjne a, #05h, loop4 ;若未到表尾,轉(zhuǎn)lo

35、op4 mov r3, #00h ;表首偏移量清零 sjmp delay2 loop4: inc r3 ;未到表尾,表首偏移量加1 delay2: mov r0, #ffh ;延時 djnz delay2 retxmp : mov dptr, #adxp ;將控制字表地址賦給dpth mov a, r4 ;表首偏移量送a movc a, a+dptr ;讀取當(dāng)前步進電機的控制字 mov dptr, #7ffdh ;pb口地址送dptr movx dptr, a ;將步進電機的控制字傳送到pb口 cjne a, #05h, loop5 ;若未到表尾,轉(zhuǎn)loop5 mov r4, #00h ;表首

36、偏移量清零 sjmp delay3 loop5: inc r2 ;未到表尾,表首偏移量加1delay3: mov r0, #ffh ;延時 djnz r0, delay3ret ;返回adxp: db 01h ;-x方向走一步步進電機控制字表 db 03h db 02h db 06h db 04h db 05hadyp: db 01h ;+y方向走一步步進電機控制字表 db 03h db 02h db 06h db 04h db 05hfmm3:f=f-2*y+1clr cmov a,4ahsubb a,50hxch a,bmov a,49hsubb a,4fhxch a,bclr csubb

37、 a,50hxch a,bsubb a,4fhxch a,badd a,#01hmov 4ah,axch a,baddc a,#00hmov 49h,aretdecy: y=y-1clr cmov a,50hsubb a,#01hmov 50h,amov a,4fhsubb a,#00hmov 4fh,aretfmm4:f=f+2x+1 mov a,4ah add a,52hmov 4ah,amov a,49haddc a,51hmov 49h,adjnz r7,fmm4mov a,4ahadd a,#01hmov 4ah,amov a,49haddc a,#00hmov 49h,aretad

38、dx:mov a,52h add a,#01h mov 52h,a mov a,51h addc a,#00h mov 51h,aretinputmain:mov r1,9fh 輸入x、y的初值暫存于9fh開始的四個單元main1:mov dptr,#tab;lcall key; 調(diào)用鍵盤掃描程序movc a,a+dptr;查表后將值送入累加器mov p0,a 送p0口顯示mov r0,a; 將鍵盤的數(shù)輸入x、y對應(yīng)的單元inc r0cjne a,0d7h, main1retkey: lcall ks; 檢測按鍵子程序 jnz k1; 有鍵按下繼續(xù) ajmp key; 若無按鍵按下,返回繼續(xù)檢

39、測k1: lcall delay2 lcall delay2;有鍵按下繼續(xù)延時去抖動 lcall ks;再一次調(diào)用檢測按鍵程序 jnz k2;確認(rèn)有按下,進行下一步 ajmp key;無按鍵按下,繼續(xù)返回檢測k2: mov r2,#0efh;將掃描值送入 r2暫存 mov r4,#00h;r4用于存放列值,并將00h暫存k3: mov p1,r2;l6: jb p10,l1;p10等于1跳轉(zhuǎn)到l1 mov a,#00h;將第一行的行值00h送入acc ajmp lk;跳轉(zhuǎn)到鍵值處理程序l1: jb p11,l2;p1.1等于1跳轉(zhuǎn)到l2 mov a,#04h;將第二行的行值送入acc ajmp lk;跳轉(zhuǎn)到鍵值處理程序進行鍵值處理l2: jb p12,l3;p1.2等于1跳轉(zhuǎn)到l3 mov a,#08h;將第三行的行值送入acc ajmp lk;

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論