![]() |
謝謝分享,正好在用57步進電機 |
非常好支持下 我拿來放在57上同是1.8角卻轉(zhuǎn)動一點正反轉(zhuǎn) 不知哪里問題 |
我的這個是2個中心抽頭 所以出來6根線 5線的就是把2個抽頭合并成一個了 |
太詳細(xì)了,謝謝樓主分享,果斷收藏保存.我以前只驅(qū)動過5線的步進電機 |
我寫的驅(qū)動代碼 僅僅供壇友做參考 ;試驗57步進電機驅(qū)動匯編代碼 ;11.0592MHz晶振+AT89C2051/4051 ;Lxa0最后修改于2016-9-17--V2.0 ;t0備用,t1產(chǎn)生9600波特率 ;p10p11p12p13分別對應(yīng)步進電機ABCD,低電平有效 ;步進角為1.8度,一圈360度,需要200個脈沖完成 ;A組線圈 P1.0 ;B組線圈 P1.1 ;C組線圈 P1.2 ;D組線圈 P1.3 org 0000h ajmp mm ;轉(zhuǎn)主程序 org 0023h ajmp qz ;轉(zhuǎn)串口讀取指令 ;主程序******************************************************* org 0100h mm:nop mov p1,#0ffh ;關(guān)閉全部 mov r0,#00h ;讀dptr首址用 mov r1,#00h ;存放正反轉(zhuǎn)脈沖數(shù)據(jù)(1圈200個脈沖,16制為c8h) mov r2,#00h ;存放改變轉(zhuǎn)速的數(shù)據(jù) mov r3,#00h ;備用 mov r4,#00h ;r4和r5短延時用 mov r5,#00h mov r6,#00h ;r6和r7長延時用 mov r7,#00h mov 20h,#00h ;20h設(shè)置wifi標(biāo)志 mov 21h,#00h ;21h設(shè)置動作標(biāo)志 mov 22h,#00h ;動作代碼存放單元 mov sp,#4fh ;設(shè)堆棧入口50h mov scon,#50h ;設(shè)置串口方式1,允許串口接收 mov pcon,#00h ;設(shè)置波特率9600 mov tmod,#21h ;T0設(shè)方式1,T1方式2(自動重裝) mov th1,#0fdh ;T1設(shè)初始值 mov tl1,#0fdh ;TH1=TL1=#0fdh(波特率9600) clr et1 ;禁止T1中斷 clr ri clr ti setb tr1 ;開T1定時器 setb es ;開串口中斷 setb ea ;開總中斷 mm1:nop acall ssd ;雙閃溝? acall ssd acall ssd acall zz ;調(diào)用正轉(zhuǎn) acall ssd ;雙光燈 acall ssd acall ssd acall fz ;調(diào)用反轉(zhuǎn) sjmp mm1 ;正轉(zhuǎn)子程序*********************************************************************** ORG 0200H zz:push acc MOV R1,#0c8h ;正轉(zhuǎn)1圈發(fā)200個脈沖,單八拍 zz1:MOV R0,#00h zz2:mov p1,0ffh mov p1,#0ffh MOV A,R0 MOV DPTR,#0380h MOVC A,@A+DPTR JZ zz1 ;當(dāng)A=0時轉(zhuǎn)完1圈完畢 MOV P1,A LCALL ys ;這個時間是調(diào)速的,時間越長速度越慢 INC R0 DJNZ R1,zz2 MOV P1,#0ffh mov p1,#0ffh pop acc ret ;反轉(zhuǎn)子程序*********************************************************************** org 0280h fz:push acc MOV R1,#0c8h ;反轉(zhuǎn)1圈發(fā)200個脈沖,單八拍 fz1:MOV R0,#00H fz2:MOV P1,#0ffh mov p1,#0ffh MOV A,R0 MOV DPTR,#03c0h MOVC A,@A+DPTR JZ fz1 ;當(dāng)A=0時反轉(zhuǎn)1圈完畢 MOV P1,A CALL ys INC R0 DJNZ R1,fz2 MOV P1,#0ffh mov p1,#0ffh pop acc ret ;轉(zhuǎn)速控制子程序*********************************************************************** org 0300h ys:djnz r2,ys ;步進電機的轉(zhuǎn)速 RET org 0380h TABLE1: DB 0feh,0fcH,0fdh,0f9H,0fbh,0f3H,0f7h,0f6H ;正轉(zhuǎn)表 DB 00h ;正傳結(jié)束 org 03c0h TABLE2: DB 0feh,0f6h,0f7h,0f3h,0fbh,0f9h,0fdh,0fch ;反轉(zhuǎn)表 DB 00h ;反轉(zhuǎn)結(jié)束 ;接收并取出串口接收到的數(shù)據(jù)指令******************************* org 0400h qz:nop clr ri ;先清零串口接收中斷位 qz00:reti ;閃光燈代碼*************************************************** org 0500h ssd:clr p3.7 ;Gled閃爍發(fā)光 acall dys setb p3.7 acall dys acall cys clr p3.7 acall dys setb p3.7 acall cys acall cys acall cys acall cys acall cys ret dys:mov r4,#0ffh ;短延時 mov r5,#10h dys1:djnz r4,dys1 dys2:djnz r5,dys1 ret cys:mov r6,#0ffh ;長延時 mov r7,#0ffh cys1:djnz r6,cys1 cys2:djnz r7,cys1 ret end ;四相八拍步進電機順序 ;正轉(zhuǎn):A-AB-B-BC-C-CD-D-DA----------0feh,0fcH,0fdh,0f9H,0fbh,0f3H,0f7h,0f6h ;反轉(zhuǎn):A-AD-D-DC-C-CB-B-BA----------0feh,0f6h,0f7h,0f3h,0fbh,0f9h,0fdh,0fch |
Powered by 單片機教程網(wǎng)