




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
設計題目:基于MCS-51單片機的反應式步進電機控制器設計,要求能夠控制其轉速、正反轉和運行步數。摘要:在中國這個發展中大國,單片機的出現意味著計算機分為通用計算機系統和嵌入式計算機系統。單片機單芯片因它的體積微小和成本低廉的優點而廣泛的應用到家電、儀表、汽車電子、工業控制單元、辦公自動化設備、通信設備等這些產品中去,是現代電子系統中極其重要的智能化工具。在未來,單片機將會進一步的走向低功耗、小體積、大容量、高性能、低價位和混合信號集成化。本設計基于AT89S51單片機,利用反應式步進電機控原理,對其控制進行硬件和軟件的設計。以實現對反應式電機的控制器可對36BF003型步進電機進行正反轉、啟停、速度和步數控制。關鍵字:步進電機;單片機;拍數;控制器;反應式一、控制原理分析1.1三相步反應式進電機工作原理反應式步進電機乂稱可變磁阻式步進電機,它和普通的電機一樣,也是有定子和轉子組成,它利用磁阻轉矩使轉子轉動。三相反應式步進電機定機定子上有六個極,每個極上裝有控制繞組,每相對的兩極組成一相。轉子上有數個均勻分布的齒,其上沒有繞組,當A相通電時,轉子在磁場力的作用下與定子齒對齊,若切斷A相電源,同時接通B相電源,在磁場力的作用下轉子轉過一個步距角(步距角由轉子齒數、控制繞組相數和通電方式決定),如再使B相斷電,同時使C相控制繞組通電,轉子乂轉過一個步距角。如此循環通電,并按AtBTCtA順序通電,步進電機便按一定的方向轉動。電機的轉速取決于控制繞組接通的斷開的變化頻率。若改變通電順序,即按ATCtBTA方式通電,則電機反向轉動。上述通電方式稱為三相單三拍通電方式;這里的“拍”是指定子控制繞組每改變一次通電方式,為一拍;“單”是指每次只有一相控制繞組通電;“三拍”是指經過三次切換控制繞組的通電狀態為一個循環。三相步反應式進電機除上述通電方式外,還有三相雙三拍和三相單雙六拍通電方式,三相雙三拍通電順序為ABTBCTCATAB或AB—CA—BCtAB,三相單雙六拍通電順序為AtABtBtBCtCtCAtA或AtACtCtCBtBtBAtA,這里“AB”表小A、B兩相同時通電,依此類推。三相反應式步進電機的步距角9S的大小是由轉子的齒數、控制繞組的相數和通電方式所決定的,其關系為0s=360/(mZrC)式中C為通電狀態系數,當采用單拍方式時,C=1;而采用單雙拍方式時,C=2;m為步進電機相數,當Zr為步進電機轉子數。若步進電機能電的脈沖頻率為f(每秒的拍數),則步進電機的速度為n=60f/(mZrC)式中:f為頻率,單位為Hz;n為轉速,單位為r/min。1.2基于單片機的步進電機驅動器控制原理步進電機驅動器控制系統的硬件設備由單片機、功率放大器、鍵盤輸入設備和顯示設備幾個部分組成,其示意圖如圖1-1所示:1、鍵盤:鍵盤由0~9號數字健、正轉啟動鍵、反轉啟動鍵、停止鍵、轉速+、轉速-等15個按鍵組成,通過鍵盤可以設置電機運行步數(電機轉動角度)、轉速、正/反轉啟動和停止。2、單片機:單片機是系統的控制單元,它通過對輸入設置運算產生和分配控制電機的脈沖信號,同時也要產生步數和速度的顯示信號。3、功率放大器:單片機輸出的脈沖信號功率很小,不足以驅動電機轉動,故需要功率放大器將信號放大以驅動電機轉動。二、硬件設計2.1電機的選用及其電路2.1.1確定步進電機型號及其參數本設計選擇型號為36BF003反應式步進電機,其參數如表2-1所示:表2-136BF003反應式步進電機技術數據型號相數步距角/(度)電壓/V相電流/A最大靜轉矩(N.m)空載起動頻率/(步/s)繞組電阻/Q分配力式外形尺寸/mm重量/Kg外徑長度軸徑36BF00331.5/3271.50.07831001.6三相六拍36434).222.1.2電機驅動電路原理由表2-1可知電機的額定電壓是27V,本設計采用單電源功率放大電路驅動步進電機,電路原理圖如圖2-1所示。電路中由單片機AT89S51分配的控制脈沖從P0口的P0.0~P0.7輸出,經74LS125反相后控制光電開關,光電隔離后,由功率管TIP122將脈沖信號進行電壓和電流放大,驅動步進電機的各相繞組。使步進電機隨著不同的脈沖信號分別作正轉、反轉、加速、減速和停止等動作。W1、W2、W3分別為電機三相繞阻,RL為繞組內阻,阻值為1.6Q,100Q電阻(R1、R2、R3)是一外接電阻,起限流作用,也是一個改善回路時間常數的元件。VD1、VD2、VD3為續流二極管,使電機繞組產生的反電動勢通過續流二極管(VD1、VD2、VD3)而衰減掉,從而保護了功率管TIP122不受損壞。在100Q外接電阻(R1、R2、R3)上并聯一個200F電容,可以改善注入步進電機繞組的電流脈沖前沿,提高了步進電機的高頻性能。與續流二極管申聯的200Q電阻(R10、R11、R12)可減小回路的放電時間常數,使繞組中電流脈沖的后沿變陡,電流下降時間變小,也起到提高高頻工作性能的作用。
7US125POOP0.1P0.2R4RS33KR6WKh/r眼獺QVT1,常牛f網oVQ2C?JV27US125POOP0.1P0.2R4RS33KR6WKh/r眼獺QVT1,常牛f網oVQ2C?JV2該靠Q¥
viaRL2W3RL3g初Qr?2(?"VT3RW楠□_M)國2"電機瞬電融破2.3單片機選擇及其電路設計2.3.1單片機的選用本設計采用AT89S51,它是低功耗、高性能的單片機,其特性如下:4KB可編程的Flas協儲器(可經受100必的擦除/寫入);全靜態工作:0Hz?24Hz;128-8字節的內存RAM;32可編程I/O線;2個16位的定時/計數器;編程申行通道;片內振蕩器。2.3.2單片機工作電路設計電壓選擇單片機的工作電壓范圍為2.7~5.5V,在本設計中的單片機的工作電壓是5V。復位電路AT89S52單片機的RESET引腳為復位信號輸入端,高電平■有效,,當振蕩器工作時,在此引腳上出現兩個機器周期以上的高電平,就可以使單片機復位。本設計采用TPS3824處理器監控電路復位,電路原理圖如圖2-2所示。RESETGND^2-2單片幗餅戴理囹TPS3824是一個帶有看門狗功能的監控器,在上電期間,監控器REST端向單片機復位引腳(RESET)發出一個復位信號,然后,其內部定時器每延時時間td向單片機發出一個復位信號,因此,在單片機正常工作期間,單片機P0.3口需要在時間t<td時定期向監控器WDI引腳發出一個正跳變或負跳變以觸發監控器定時器復位,以防止單片機被誤復位。當單片機死機無法正常工作時,P0.3無法輸出觸發監控器定時器復位信號,監控器則向單片機發出復位信號使系統復位,所以,使用TPS3824監控器復位電路具有系統死機自動復位功能。時鐘電路本系統運行程序不多,速度要求不高,采用外部時鐘脈沖,選用ZPA(穩定度為1~9x10-4普通石英晶體振蕩器)型12MHz石英晶體振蕩器。其電路原理圖如圖2-3所示。XTAL2XTAL2XTAL1GND時銷電斑如圖2-3,時鐘電路連接單片機引腳XTAL1和XTAL2向單片機提供時鐘脈沖,電路中的電容C1和C2稱為負載電容,也可以理解為諧振電容的一部分,兩電容并申在電路中取值相同,一般為數pF至數十pF,這里選擇30pF。鍵盤輸入電路鍵盤是一組按鍵的集合,它是最常用的單片機輸入設備.操作人員可以通過鍵盤輸入數據或者命令,實現簡單的人機通信。單片機的鍵盤設計方式有獨立式和矩陣式兩種,由丁本系統鍵盤由0~9號數字鍵、正轉控制鍵、反轉控制鍵、停止控制鍵、加速鍵和減速鍵15個按鍵組成,通過鍵盤可以輸入電機運行步數、控制電機正轉/反轉/停止和速度。系統按鍵數量較多,為節省I/O口,簡化電路,降低成本,本設計采用標準的4*4矩陣式由P1號接入單片機。電路原理如圖2-4所示。電路中四個電阻起上拉電阻作用。
顯示電路本設計采用七個八段數碼管顯示電機步數,顯示步數范圍是0~9999999步,由步進電機原理可知,步數x步距角為電機轉角。一個八段數碼管顯示速度,編程設定顯示范圍是1~9,倍率是100,即實際轉速為顯示數x100,例如,速度顯示1,則電機轉速為100r/min。為簡化電路,降低成本,八個八段顯示數碼管的陽極位段選線并聯在一起,由一個8位的P2口控制,形成段選線多路復用。而各位的共陰極分別8位的P3口控制,實現各位的分時選通,構成一個動態顯示器,如圖2-5所示。圖中右七個數碼管顯示步數,左一個數碼管顯示轉速,74LS125為集成四個非門的芯片。蜃示掀JQ例蜃示掀JQ例三、軟件設計3.1控制地址分配為方便程序檢查和修改,在設計程序之前應對所用到或使用較多數據存儲地單元命名標號,本程序數據儲存地址命名如表3-1所示。
表3-1數據儲存地址命名標號表名稱標號地址單元名稱標號地址單元步數個位儲存地址GB40H步數白力位儲存地址BWB46H步數十位儲存地址SB41H電機轉速查詢表偏移量SD47H步數百位儲存地址BB42H電機啟/停控制JK48H步數千位儲存地址QB43H電機控制偏移量輸出脈沖KZ49H步數萬位儲存地址WB44H鍵按下狀態KONZ4AH步數十萬位儲存地址SWB45H鍵按下狀態中間變量KBL4BH3.2主程序設計為節省單片機程序掃描時間,使用定時器T0中斷方式轉入控制電機運行,定時器T0定時時間為電機運轉“拍數”切換時間,即控制電機的脈沖切換時間,根據步進電機控制原理,改變此定時器定時時間可改變電機轉速。由此定時器定時時間未到時不斷進行鍵盤掃描的輸出顯示。時間初值查詢表SD_TAB見程序所用到的查詢表及其說明部分表4-1;主程序流程圖如圖3-1所示。主程序活單如下:MAIN:GBEQU40HMAIN:GBEQU40H;主程序;定義步數十位存儲單元ORG0000HLJMPMAINORG000BHLJMPDJKZORG0050H
SBEQU40H;定義步數白位存儲單元BBEQU40H;定義步數千位存儲單元QBEQU40H;定義步數萬位存儲單元WBEQU40H;定義步數十萬位存儲單元SWBEQU40H;定義步數白力位存儲單兀BWBEQU40H;定義步數個位存儲單元SDEQU40H;定義電機轉速表查詢偏移量存儲單兀JKEQU40H;定義電機控制表偏移量存儲單元KONZEQU40H;定義輸入口按鍵按下狀態暫存單元KBLEQU40H;定義輸入口按鍵按下狀態中間變量存儲單元MOVP0,#00H;I/O口初始化MOVP1,#0FFH;MOVP2,#0FFH;MOVP3,#0FFH;MOVGB,#00H;步數個位初始化MOVSB,#00H;步數十位初始化MOVBB,#00H;步數白位初始化MOVQB,#00H;步數千位初始化MOVWB,#00H;步數萬位初始化MOVSWB,#00H;步數十萬位初始化MOVBWB,#00H;步數白力位初始化MOVSD,#1;電機轉速開機默認為200r/minMOVJK,#0;電機控制狀態開機為停止MOVKZ,#0;速度查詢表偏移初始化0MOVTMOD,#01H;T0控制模式為1MOVDPTR,#SD_TAB;DPRT指向轉速查詢表百地址MOVA,SD;取轉速查詢表偏移量MOVCA,@A+DPTR;取定時器低位初值MOVTL0,A;裝入定時器低位初值MOVA,SD;取轉速查詢表偏移量ADDA,#10;調整轉頊詢表偏移量,為取T0高位做準備DAA;十進制數調整MOVCA,@A+DPTR;取定時器高位初值MOVTH0,A;裝入定時器高位初值MOVIE,#82H;T0開中斷;啟動T0SETBTR0LOOP:LCALLLCALLLJMPLOOP:LCALLLCALLLJMPSD_TAB:DBDB;調用鍵盤掃描錄入程序;調用顯示程序;返回LOOPDISP_SUBLOOP72H,54H,05H,C5H,42H,95H,CEH,FDH,20H,3CHF6H,FBH,FCH,FDH,FEH,FEH,FEH,FEH,FFH,FFH3.2鍵盤錄入子程序實現功能:通過掃描鍵盤,判斷是否有鍵按下,若有鍵按下則改變相應控制地址單元的內容,為后面的顯示和電機控制做準備。鍵盤數據錄入子程序流程圖如圖3-2所示;輸入鍵鍵號查詢表IN_TAB見程序所用到的查詢表及其說明部分表4-2;電機啟/??刂坪惋@示段選
碼表SRDS_TAB見程序所用到的查詢表及其說明部分表4-3;鍵盤掃描子程序流程圖如圖3-2所示。鍵盤掃描方法:由硬件設計可知,鍵盤是4*4的行、列結構設計,行由P1.0~P1.3口輸入,列由P1.4~P1.7H輸入,其中行線通過上拉電阻接+5V,平■時無按鍵動作時,行線處丁高電平'狀態,而當有按鍵按下時,則對應的行線和歹0線短接,行線電平■狀態將由與此行線相連的歹0線電平決定。因此,其掃描方法是:先令P1.4列線為低電平,其余三根列線為高電平,讀行線狀態。如果行線都為高電平,貝U這一列線上沒有鍵閉合,接著使下一列線P1.5為低電平,其余列線為高電平,用同樣方法檢查P1.5列上沒無鍵閉合,依次類推,直到最后一列掃描完成。鞭號AT7DPTMSRDSJAB4-酷+DPTRJK+A(子程后返回]3-2曜盤錄入程序流程3-3鍵盤掃描程序流程鍵盤錄入程序代碼如下:KEY_SUB:LCALLKNUM_SUBMOVA,KONZORLA,#0FHMOVKBL,ACJNEA,#0FFH,KE_NEXT1LJMPKE_NEXTKE_NEXT1:MOVR7,#10LCALLDEL_SUBDJNZR7,KE_NEXT1LCALLKNUM_SUBCJNEA,KONZ,KE_NEXT;鍵盤錄入程序;調用鍵盤掃描程序;保存初次掃描輸入狀態;輸入狀態高四位置1;保存;(A)冬0FFH,有按鍵輸入,轉去抖動;否則轉子程序返回;延時10ms去抖動;調用延時1ms程序再次調用鍵盤掃描程序;若(A)=(KONZ),確認有鍵按下,等待按鍵;釋放否則轉子程序返回KE_LOOP1:LCALLKUNM_SUBORLA,#0FHLCALLKUNM_SUBORLA,#0FHCJNEA,#0FFH,KE_LOOP1MOVR7,#10LCALLDEL_SUBDJNZR7,KE_NEXT1MOVDPTR,#IN_TABMOVR7,#0KE_LOOP2:MOVA,R7MOVCA,@A+DPTRCJNEA,KONZ,KE_NEXT2LJMPKE_NEXT3KE_NEXT2:INCR7LJMPKE_LOOP2KE_NEXT3:MOVA,R7CJNEA,#9,KE_NEXT4LJMPB_SETKE_NEXT4:JCB_SETCJNEA,#12,KE_NEXT5LJMPDJ_SETKE_NEXT5:JCDJ_SETCJNEA,#13,KE_NEXT7MOVA,SDCJNEA,#7,KE_NEXT6LJMPKE_NEXTKE_NEXT6:INCSDLJMPKE_NEXTKE_NEXT7:MOVA,SDCJNEA,#0,KE_NEXT8LJMPKE_NEXTKE_NEXT8:DECSDLJMPKE_NEXTB_SET:MOVBWB,SWBMOVSWB,WBMOVWB,QBMOVQB,BBMOVBB,SB;再次調用鍵盤掃描程序1;若(A)=0FFH,鍵已釋放,執行去抖動,否;則轉KE_LOOP1再次判斷;延時10ms去抖動;調用延時1ms程序?;DPTR指向鍵號查詢表首地址;從0號鍵開始掃描;取鍵號;查表取出相應鍵號狀態碼;與輸入狀態相比較,若;相等,則為該號鍵按下,轉取鍵號;否則取下一鍵號;轉再次掃描;取按下鍵鍵號;若鍵號=9,轉設置步數9;若鍵號<9,轉設置步數,否則順序判斷;若鍵號冬12,;否則轉電機控制設置;若鍵號<12,轉電機控制設置,否則繼續判斷;若鍵號冬13,轉減速設置,;則順序設置加速;取當前速度;若當前速度冬7,轉速度加1檔;否則當前速度為最大值,轉子程序返回1檔;轉子程序返回;取當前速度;若當前速度冬0,轉速度減1檔;否則當前速度為最小值,轉子程序返回1檔;轉子程序返回;步數十萬位移至白萬位;步數萬位移至十萬位;步數千位移至萬位;步數白位移至千位;步數十位移至白位
MOVSB,GB;步數個位移至十位MOVGB,A;步數新數移至個位LJMPKE_NEXT;轉子程序返回DJ_SET:MOVDPTR,#SRDS_TAB;DPTP指向控制與顯示表首地址MOVCA,@A+DPTR;取控制狀態MOVJK,A;控制狀態存入控制單元KE_NEXT:RET;子程序返回IN_TAB:DB77H,B7H,D7H,E7H,7BH,BBH,DBH,EBH;輸入鍵鍵號查詢表DB7DH,BDH,DDH,EDH,7EH,BEH,DEHSRDS_TAB:DBC0H,F9H,A4H,B0H,99H,92HDB82H,F8H,80H,90H,1,2,3;電機啟/停控制和顯示段選碼表鍵盤掃描程序代碼:KUNM_SUB:MOVP1,#0FFH;鍵盤輸入口置1CLRP1.4;掃描第一歹0MOVA,P1;讀入輸入狀態SETBP1.4;關閉掃描第一歹UCLRP1.5;掃描第二列MOVA,P1;讀入輸入狀態SETBP1.5;關閉掃描第二列CLRP1.6;掃描第三列MOVA,P1;讀入輸入狀態SETBP1.6;關閉掃描第二列CLRP1.6;掃描第四列MOVA,P1;讀入輸入狀態SETBP1.6RET;關閉掃描第四列;子程序返回3.3顯小程序實現功能:根據轉速控制單元SD和步數控制單元GB(個位)、SB(十位)、BB(白位)、QB(千位)、WB(萬位)、SWB(十萬位)、BWB(白萬位)的內容查詢SRKS_TAB取相應顯示段碼送相應顯示位顯示。電機啟/停控制和顯示段選碼表SRDS_TAB見程*所用到的查詢表及其說明部分表4-3;程序流程圖如圖3-4所示;8位八段數碼管顯示方法:由硬件結構可知,步數顯示7位八段數碼管和速度顯示1位數碼管的段選線并聯在一起由單片機P2口控制,而各位的共陰極點分別由相應的P3口控制,實現各位的分時選通,構成8位的動態顯示。根據實際情況,每位顯示的字符不同,因此軟件設計必須采用掃描顯示方式,即在每一個瞬間只使某一位顯示相應字符。在此瞬間,段選碼由控制P2口輸出需顯示的段碼,位選P3口輸出位選碼選通該位顯示相應字符。如此輪流,使每一位顯示該應顯示的字符,并延時一段時間,這里延時3ms,以造成視覺暫留效果。@3-4顯示程序流程圈顯示代碼如下:DISP_SUB:MOVP2,#0FFHMOVP3,#00HMOVR7,#8MOVR0,GBMOVDPTR,#SRDS_TABMOVA,#01HPUSHACCMOVA,@R0MOVCA,@A+DPTRMOVP2,APOPACCMOVP3,ADLOOP2:MOVR6,#3;顯示子程序;關顯示;設置顯示位數;取步數個位顯示數字;DPTR指向控制與顯示段碼表首地址;取步數位顯示控制字;保護步數位顯小控制字;取步數顯示數字;取顯示段碼;送顯示;取出位顯示控制字;打開位顯示;延時3msLCALLDEL_TAB;調用延時1ms程序DJNZR6,DLOOP2;判斷時是否到,未到剛返回延時,否則往下執行RLA;取卜一位顯小控制字INCR0;R0;指IW下一位顯小數字存儲地址DJNZR7,DLOOP1;若(R7)-1=0,八位顯示完成,往下執行,否則轉顯示下一位MOVP2,#0FFH;MOVP3,#00H;關顯示RET;子程序返回SRDS_TAB:DBC0H,F9H,A4H,B0H,99H,92HDB82H,F8H,80H,90H,1,2,3;電機啟/??刂坪惋@示段選碼表3.4電機控制程序實現功能:根據地址單元JK的內容控制電機的正轉、反轉和停止。時間初值查詢表SD_TAB見程序所用到的查詢表及其說明部分表4-1;單片機輸出控制字查詢表MQ_TAB見程倉所用到的查詢表及其說明部分表4-4;程序流程圖如圖3-5所示:取控制諦篇星
取控制諦篇星03-5電機控制程序流程圖MOVDPTR,#SD_TABMOV03-5電機控制程序流程圖MOVDPTR,#SD_TABMOVA,SDMOVCA,@A+DPTRMOVTL0,AMOVA,SDADDA,#10DAAMOVCA,@A+DPTRMOVTH0,AMOVR7,#7MOVR0,#GBKLOOP1:MOVA,@R0CJNEA,#0,KNEXT1INCR0DJNZR7,KLOOP1LJMPKNEXTKNEXT1:MOVA,JKCJNEA,#1,KNEXT2電機控制程序代碼如下:KT0_INT:;DPRT指向轉速查詢表首地址;取轉速查詢表偏移量;取定時器低位初值;裝入定時器低位初值;取轉速查詢表偏移量;調整轉速查詢表偏移量,為取T0高位做準備;十進制數調整;取定時器高位初值;裝入定時器高位初值;循環7次,分別判斷7位步數是否為0;R0指向步數個位;取位步數;若位步數=0,判斷下一位,否則轉判斷電機控制狀態;R0指向步數下一位地址;若(R7)-1=0,則步數每一位均為0,轉;程序返回;取電機控制狀態;若電機控制狀態=1,電機正轉,否則判斷是否反轉
LJMPZZKZ;轉電機正轉控制;若電機控制狀態丈2,電機處于停止狀態,;轉返回,否則電機KNEXT2:CJNEA,#2,KNEXTMOVA,KZ;取上一次電機控制表偏移里;右上一次電機控制表偏移里為不;則電機控制表偏移量取50,轉減1,若為0,CJNEA,#0,KNEXT3MOVA,#5LJMPKNEXT6;KNEXT3:DECALJMPDNEXT5ZZKZ:MOVA,KZ;電機控制表偏移量減1;轉取脈沖輸出;取上一次電機控制表偏移里CJNEA,#5,KNEXT4MOVA,#0LJMPKNEXT5KNEXT4:INCAKNEXT5:MOVKZ,AMOVDPTR,#MQ_TABMOVCA,@A+DPTRMOVP0,AMOVR7,#6MOVR0,#GBKLOOP2:MOVA,@R0CJNEA,#0,KNEXT6MOV@R0,#9INCR0;若上一次電機控制表偏移量為不5,轉加1,若為5,;則電機控制表偏移量取0;轉取脈沖輸出;電機控制表偏移量加1;保存當前電機控制表偏移量;DPTR指向電機控制表百地址;取輸出脈沖;輸出脈沖;步數減1循環6次;R0指向步數個位儲存單元;取位步數;若位步數圭0,轉位步數-1,否則;往該位步數存9;R0指向下一位DJNZR7,DLOOP2DECBWBLJMPKNEXTKNEXT6:DECAMOV@R0,AKNEXT:RET;若(R7)-1=0,六位判斷完成,;續判斷;白力位減1;轉程序返回;位步數-1;存回該單元;程序返回白力位減1,否則繼SD_TAB:DB72H,54H,05H,C5H,42H,95H,CEH,FDH,20H,3CHDBF6H,FBH,FCH,FDH,FEH,FEH,FEH,FEH,FFH,FFH;定時器初值查詢MQ_TAB:DB01H,03H,02H,06H,04H,05H;單片機輸出控制字查詢表3.5延時1ms程序實現功能:利用軟件循環運行延時約1msDEL_SUB:MOVR7,#2DLE1:MOVR6,#248DEL2:DJNZR6,DEL2DJNZR7,DEL1RET查指令表可知執行MOV指令需要用1個機器周期,DJNZ指令需要用2個機器用期,本系統使用12MHz晶振,一個機器周期時間長度為1us,所以該段程序執行時間為:[1+(1+2X248+2)X2+2]*1us=999us1ms3.6程序所用到的查詢表及其說明3.6.1時間初值查詢表SD_TAB根據步進電機原理,步進電機的轉速為n=60f/(mZrC)式中:式中C為通電狀態系數,當采用單拍方式時,C=1;而采用單雙拍方式時,C=2;m為步進電機相數,當Zr為步進電機轉子數,,f為頻率,單位為Hz,n為轉速,單位為r/min。因此,當步進電機轉速為n時,步進電機的拍數切換時間與轉速的關系為t=1/f=60/(nmZrC)式中:t為電機拍數切換時間,單位為秒。由此可以算出程序中定時器T0所需定時時間To根據程序查指令表可知定時器定時到開始到脈沖輸出需要運行約648個晶振周期數的程序,系統用的是12MHz晶振,即運行此段程序需要648/12=54us的時間,故定時器T0所需定時時間T與轉速的關系為T=t-(54X10-3)=60/(nmZrC)—(54X10-3)式中:定時器T0所需定時時問T的單位為秒。由選用電機的參數可知:步進電機相數E3,因運行采用單雙拍方式,C=2,步進電機轉子數Zr=40。而定時器工作在模式1下初值X與定時時間T的關系為X=216-TX106因此,由公式可算得電機轉速與定時器初值關系表如表4-1所??;電機轉速與定時器初值關系表表4-1轉速(r/min)1002003004005006007008009001000TL0初值72H54H05HC5H42H95HCEHFDH20H3CHTL1初值F6HFBHFCHFDHFEHFEHFEHFEHFFHFFH表地址偏移量0123456789定時器初值查詢表SD_TAB如下:SD_TAB:DB72H,54H,05H,C5H,42H,95H,CEH,FDH,20H,3CHDBF6H,FBH,FCH,FDH,FEH,FEH,FEH,FEH,FFH,FFH3.6.2輸入鍵鍵號查詢表IN_TAB輸入鍵鍵號與P1口狀態又系如下表4-2所示:
輸入鍵鍵號與P1口狀態關系表表4-2鍵名P1口狀態鍵名P1口狀態077H87DH1B7H9BDH2D7H正轉啟動DDH3E7H反轉啟動EDH47BH停止7EH5BBH加速BEH6DBH減速DEH7EBH輸入鍵鍵號查詢表IN_TAB如下:IN_TAB:DB77H,B7H,D7H,E7H,7BH,BBH,DBH,EBHDB7DH,BDH,DDH,EDH,7EH,BEH,DEH3.6.3電機啟/??刂坪惋@示段選碼表SRDS_TAB電機啟/??刂婆c其狀態、顯示數與顯示段;i碼關系表如下表4-3:電機啟/??刂婆c其狀態、顯示數與顯示段選碼關系表顯示數字顯示段碼顯示數字顯示段碼0C0H880H1F9H990H2A4H正轉啟動13B0H反轉啟動2499H停止0592H682H7F8H電機啟/??刂坪惋@示段選碼查詢表SRDS_TAB如下:SRDS_TAB:DBC0H,F9H,A4H,B0H,99H,92H,82H,F8HDB80H,90H,1,2,33.6.4單片機輸出控制字查詢表MQ_TAB步進電機采用單雙六拍方式輸出,電機繞組通電與單片機輸出控制字關系如下表4-4:電機繞組通電與單片機輸出控制字關系表表4-4通電繞組A相AB相B相BC相C相CA相控制字01H03H02H06H04H05H單片機輸出控制字查詢表MQ_TAB如下:MQ_TAB:DB01H,03H,02H,06H,04H,05HXA—P3.67^LS125c1P3.2pqP3.77^LS125川』jjj”jjjjjj川JUWJrrnjrmtjJJJJJJJJrai舄dMdWdRds嘉ds安二妄mixia?附錄一:系統電路原理Ei.2gg3dsdEg£sTcTL?7£
Hd
s附錄二:系統軟件程序活單ORG0000HLJMPMAIAORG000BHLJMPDJKZORG0050HMAIN:;主程序GBEQU40H;定義步數十位存儲單元SBEQU40H;定義步數白位存儲單元BBEQU40H;定義步數千位存儲單元QBEQU40H;定義步數萬位存儲單元WBEQU40H;定義步數十萬位存儲單元SWBEQU40H;定義步數白力位存儲單兀BWBEQU40H;定義步數個位存儲單元SDEQU40H;定義電機轉速表查詢偏移量存儲單元JKEQU40H;定義電機控制表偏移量存儲單元KONZEQU40H;定義輸入口按鍵按下狀態暫存單元KBLEQU40H;定義輸入口按鍵按下狀態中間變量存儲單元MOVP0,#00H;I/O口初始化MOVP1,#0FFH;MOVP2,#0FFH;MOVP3,#0FFH;MOVGB,#00H;步數個位初始化MOVSB,#00H;步數十位初始化MOVBB,#00H;步數白位初始化MOVQB,#00H;步數千位初始化MOVWB,#00H;步數萬位初始化MOVSWB,#00H;步數十萬位初始化MOVBWB,#00H;步數白力位初始化MOVSD,#1;電機轉速開機默認為200r/minMOVJK,#0;電機控制狀態開機為停止MOVKZ,#0;速度查詢表偏移初始化0MOVTMOD,#01H;T0控制模式為1MOVDPTR,#SD_TAB;DPRT指向轉速查詢表百地址MOVA,SD;取轉速查詢表偏移量MOVCA,@A+DPTR;取定時器低位初值MOVTL0,A;裝入定時器低位初值MOVA,SD;取轉速查詢表偏移量ADDA,#10;調整轉頊詢表偏移量,為取T0高位做準備DAA;十進制數調整MOVCA,@A+DPTR;取定時器高位初值MOVTH0,A;裝入定時器高位初值MOVIE,#82H;T0開中斷SETBTR0;啟動T0LOOP:LCALLKEY_SUB;調用鍵盤掃描錄入程序LCALLDISP_SUB;調用顯示程序LJMPLOOPKEY_SUB:LCALLKNUM_SUBMOVA,KONZORLA,#0FHMOVKBL,ACJNEA,#0FFH,KE_NEXT1LJMPKE_NEXTKE_NEXT1:MOVR7,#10LCALLDEL_SUBDJNZR7,KE_NEXT1LCALLKNUM_SUBCJNEA,KONZ,KE_NEXTKE_LOOP1:LCALLKUNM_SUBORLA,#0FHCJNEA,#0FFH,KE_LOOP1MOVR7,#10LCALLDEL_SUBDJNZR7,KE_NEXT1MOVDPTR,#IN_TABMOVR7,#0KE_LOOP2:MOVA,R7MOVCA,@A+DPTRCJNEA,KONZ,KE_NEXT2LJMPKE_NEXT3KE_NEXT2:INCR7LJMPKE_LOOP2KE_NEXT3:MOVA,R7CJNEA,#9,KE_NEXT4LJMPB_SETKE_NEXT4:JCB_SETCJNEA,#12,KE_NEXT5LJMPDJ_SETKE_NEXT5:JCDJ_SETCJNEA,#13,KE_NEXT7MOVA,SDCJNEA,#7,KE_NEXT6LOOP;鍵盤錄入子程序;調用鍵盤掃描程序;保存初次掃描輸入狀態1;保存;(A)冬0FFH,有按鍵輸入,轉去抖動;否則轉子程序返回;延時10ms去抖動;調用延時1ms程序;再次調用鍵盤掃描程序;若(A)=(KONZ),確認有鍵按下,等待按鍵;釋放否則轉子程序返回;再次調用鍵盤掃描程序1;若(A)=0FFH,鍵已釋放,執行去抖動,否;則轉KE_LOOP1再次判斷;延時10ms去抖動;調用延時1ms程序?;DPTR指向鍵號查詢表首地址;從0號鍵開始掃描;取鍵號;查表取出相應鍵號狀態碼;與輸入狀態相比較,若;相等,則為該號鍵按下,轉取鍵號;否則取下一鍵號;轉再次掃描;取按下鍵鍵號;若鍵號=9,轉設置步數9;若鍵號<9,轉設置步數,否則順序判斷;若鍵號冬12,;否則轉電機控制設置;若鍵號<12,轉電機控制設置,否則繼續判斷;若鍵號冬13,轉減速設置,;則順序設置加速;取當前速度;若當前速度冬7,轉速度加1檔LJMPKE_NEXT;否則當前速度為最大值,轉子程序返回KE_NEXT6:INCSD;當前速度增加1檔LJMPKE_NEXT;轉子程序返回KE_NEXT7:MOVA,SDA,#0,KE_NEXT8KE_NEXT;取當前速度;H前速度豐0,轉速度減1檔;否則當前速度為最小值,轉子程序返回CJNELJMPKE_NEXT8:DECSD;當前速度減1檔LJMPKE_NEXT;轉子程序返回B_SET:MOVBWB,SWB;步數十力位移全白力位MOVSWB,WB;步數萬位移至十萬位MOVWB,QB;步數千位移全力位MOVQB,BB;步數白位移至千位MOVBB,SB;步數十位移全白位MOVSB,GB;步數個位移至十位MOVGB,A;步數新數移至個位LJMPKE_NEXT;轉子程序返回DJ_SET:MOVDPTR,#SRDS_TAB;DPTP指向控制與顯示表首地址MOVCA,@A+DPTR;取控制狀態MOVJK,A;控制狀態存入控制單元KE_NEXT:RET;子程序返回KUNM_SUB:;鍵盤掃描子程序MOVP1,#0FFH;鍵盤輸入口置1CLRP1.4;掃描第一歹0MOVA,P1;讀入輸入狀態SETBP1.4;關閉掃描第一歹UCLRP1.5;掃描第二列MOVA,P1;讀入輸入狀態SETBP1.5;關閉掃描第二列CLRP1.6;掃描第三列MOVA,P1;讀入輸入狀態SETBP1.6;關閉掃描第二列CLRP1.6;掃描第四列MOVA,P1;讀入輸入狀態SETBP1.6;關閉掃描第四列RET;子程序返回DISP_SUB:;顯示子程序MOVP2,#0FFH;MOVP3,#00H;關顯示MOVR7,#8;設置顯示位數MOVR0,GB;取步數個位顯示數字MOVDPTR,#SRDS_TAB;DPTR指向控制與顯示段碼表首地址
MOVA,#01H;取步數位顯示控制字PUSHACC,保護少數位顯示控制子*MOVA,@R0;取步數顯示數字MOVCA,@A+DPTR;取顯示段碼MOVP2,A;送顯示POPACC;取出位顯示控制字MOVP3,A;打開位顯小DLOOP2:MOVR6,#3;延時3msLCALLDEL_TAB;調用延時1ms程序DJNZR6,DLOOP2;判
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國氣體流量測量系統市場調查研究報告
- 2025至2030年中國母排絕緣片行業發展研究報告
- 2025至2030年中國植絨膠行業投資前景及策略咨詢報告
- 2025至2030年中國格柵照明燈市場分析及競爭策略研究報告
- 2025至2030年中國標準襯膠三通行業投資前景及策略咨詢報告
- 2025至2030年中國柔性機械接口鑄鐵管行業投資前景及策略咨詢報告
- 2025至2030年中國機織長毛絨數據監測研究報告
- 2025至2030年中國機制白砂糖行業發展研究報告
- 2025至2030年中國智能便攜式電子白板行業投資前景及策略咨詢報告
- 2025至2030年中國普通仿蠟印花布行業發展研究報告
- 數字美的智慧工業白皮書-2023.09
- 自救器培訓(2023年煤礦安全生產培訓教師培訓班隨堂課程設計)
- 成人癌性疼痛護理指南解讀
- 供應鏈安全風險評估與管理項目風險評估報告
- 2023年-2024年電子物證專業考試復習題庫(含答案)
- 小學語文跨學科學習任務群學習任務設計策略
- 北師大版數學三年級下冊《分一分》(一)課件
- 采空區的勘察設計與治理技術教學課件
- 濟寧港主城港區躍進溝航道工程項目一期工程導助航及監控系統施工招標文件
- 國開學習網電大數據庫應用技術第四次形考作業實驗答案
- 公司與公司簽訂勞務合同范本
評論
0/150
提交評論