<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于proteus的步進(jìn)電機控制

基于proteus的步進(jìn)電機控制

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/201611/321751.htm

;---------------------------------------

D10ms:

……

;---------延時(shí)程序,鍵盤(pán)處理中調用

KEYPROC:

MOVA,B;獲取鍵值

JBACC.2,StartStop;分析鍵的代碼,某位被按下,則該位為1

JBACC.3,KeySty

JBACC.4,UpSpd

JBACC.5,DowSpd

AJMPKEY_RET

StartStop:

SETB StartEnd;啟動(dòng)

AJMPKEY_RET

KeySty:

CLR StartEnd;;停止

AJMPKEY_RET

UpSpd:

INC SPEED;

MOVA,SPEED

CJNEA,#MaxSpd,K1;到了最多的次數?

DECSPEED;是則減去1,保證下次仍為該值

K1:

AJMPKEY_RET

DowSpd:

DEC SPEED

MOVA,SPEED

CJNEA,#MinSPD,KEY_RET;不等(未到最小值)返回

MOV SPEED,#MinSpd+1;是則加1,保證下次仍為該值

KEY_RET:

RET

KEY:

……獲取鍵值的程序

RET

DjZd: ;定時(shí)器T1用于電機轉速控制

PUSH ACC

PUSH PSW

MOV A,Speed

SUBB A,#MinSpd ;減基準數

MOV DPTR,#DjH

MOVC A,@A+DPTR

MOV TH1,A

MOV A,Speed

SUBB A,#MinSpd

MOV DPTR,#DjL

MOVC A,@A+DPTR

MOV TL1,A

MOV A,DjCount

CPL A

ORL P1,A

MOV A,DjCount

JNB ACC.7,d_Next1

JMP d_Next2

d_Next1:

MOV DjCount,#11110111B

d_Next2:

MOV A,DjCount

RL A

MOV DjCount,A ;回存

ANL P1,A

POP PSW

POP ACC

RETI

DjH: DB 76,82,89,95,100,106,110,115,119,123,12……

DjL: DB 0,236,86,73,212,0,214,96,163,165

……

DISP:;顯示程序

POP PSW

POP ACC

……

RETI

BitTab: DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBH

DISPTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH

END

3、程序分析

本程序主要由鍵盤(pán)程序、顯示器程序、步進(jìn)電機驅動(dòng)程序三部份組成,主程序首先初始化各變量,將顯示器的高3位消隱,步進(jìn)電機驅動(dòng)的各引腳均輸出高電平,然后調用鍵盤(pán)程序,并作判斷,如果有鍵按下,則調用鍵盤(pán)處理程序,否則直接轉下一步。下一步是將當前的轉速值轉換為BCD碼,送入顯示緩沖區;接著(zhù)判斷StartEnd這個(gè)位變量,是“1”還是“0”,如果是“1”,則開(kāi)啟定時(shí)器T1,否則關(guān)閉定時(shí)器T1,為防止關(guān)閉時(shí)某一相線(xiàn)圈長(cháng)期通電,因此,在關(guān)閉定時(shí)器T1時(shí),將P1.0~P1.3均置高。至此,主程序的工作即結束。這里為簡(jiǎn)便起見(jiàn),這里沒(méi)有做高位“0”消隱的工作,即如果速度為10轉/分,則顯示值“010”,讀者可以自行加入相關(guān)的代碼來(lái)處理這一工作。

步進(jìn)電機的驅動(dòng)工作是在定時(shí)器T1的中斷服務(wù)程序中實(shí)現的,由前述分析,每次的定時(shí)時(shí)間到達以后,需要將P1.0~P1.3依次接通,程度中用了一個(gè)變量DjCount來(lái)實(shí)現這一功能,在主程序初始化時(shí),該變量被賦予初值11110111B,進(jìn)入到定時(shí)中斷以后,將該變量取出送ACC累加器,并在累加器中進(jìn)行左移,這樣,該數值就變?yōu)?110 1111,然后將該數與P1相“與”,此時(shí),P1.4即輸出低電平,第二次進(jìn)入中斷時(shí),先將該數取反,成為0001 0000,然后將該數與P1相“或”,這樣,P1.4即輸出高電平,關(guān)斷了相應的線(xiàn)圈,然后將該數重新取出,并作左移,即 1110,1111右移成為1101 1111,將該數與P1相“與”,這樣P1.5即輸出低電平,依次類(lèi)推,P1.7~P1.4即循環(huán)輸出低電平。當這一數據變?yōu)?111 1111后,需要作適當的改動(dòng),將數據重新變回 1111 0111,進(jìn)行第二次循環(huán),相關(guān)代碼,請讀者自行分析。

定時(shí)時(shí)間又是如何確定的呢?這里用的是查表的方法,首先用Excel計算得出在每一種轉速下的TH值和TL值,然后,分別放入DjH和DjL表中,在進(jìn)入T1中斷程序之后,將速度值變量Speed送入累加器ACC,然后減去基數25,使其基數從0開(kāi)始計數,然后分別查表,送入TH1和TL1,實(shí)現重置定時(shí)初值的目的。

看完這一部份內容以后,請讀者自行完成以下工作:

1、更改程序,將S1定義為“啟動(dòng)/停止”,而S2定義為“方向”,按下S2,切換電機旋轉方向。

2、更改程序,要求轉速從1到100。

3、更改程序,實(shí)現首位無(wú)效零消隱。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: proteus步進(jìn)電機控

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>