導航:首頁 > 編程語言 > 實現步進電機單步運行一個步距匯編程序

實現步進電機單步運行一個步距匯編程序

發布時間:2023-06-13 07:26:05

Ⅰ 5線4相步進電機如何應用51單片機實現單步運轉,求C程序(用ULN2003控制電機)

ULN2003驅動電機可能不夠吧。你電機是什麼參數?

根據你電機的控制時序圖,一個口一個口的去控制就行了。

Ⅱ AT89S52或S51單片機控制步進電機的匯編語言程序

P0口做驅動要加上拉電阻,建議用P1口驅動,這是一個步進電機的驅動,如果驅動兩個,可以在每個電機的VCC分別用一個繼電器做開關
;這是一個使用單片機通過NUL2003驅動步進電機程序.
;步進電機: 5伏,500MA/STEP.
;將步進電機的A B C D四個繞組連接到UML2003A的13,14,15,16,P1口的4567分別接UML2003A的1234腳,將公用抽頭並接在VCC上.
BUFF_STEP EQU 21H
SW1 BIT P3.1
org 000h
JMP START
ORG 100H
;----------------------------------------
start:MOV BUFF_STEP,#00H
mov P0,#0fFh ;初始化MCU埠
mov P1,#0ffh
mov P3,#0ffh
MOV P2,#0ffH
MOV A,#00H ;初始化寄存器
MOV PSW,#00H
MOV IE,#00H
MOV SP,#30H
MAIN: JNB SW1,CCW_LP ;正常電機正向轉動
MOV DPTR,#TAB_CW ;按下SW1(P31)鍵,電機反向轉動
JMP LOOP
CCW_LP:MOV DPTR,#TAB_CCW
LOOP: MOV A,BUFF_STEP
MOVC A,@A+DPTR
MOV P1,A ;這里可以改成用P0口驅動
LCALL DEL
INC BUFF_STEP
MOV A,BUFF_STEP
CJNE A,#08H,MAIN
MOV BUFF_STEP,#00H
JMP MAIN

DEL: MOV R6,#500
DEL0: MOV R7,#200
DJNZ R7,$
DJNZ R6,DEL0
RET

TAB_CW: DB 10001111B,11001111B,01001111B,01101111B,00101111B,00111111B,00011111B,10011111B ;正轉相序(八拍)
TAB_CCW: DB 10001111B,10011111B,00011111B,00111111B,00101111B,01101111B,01001111B,11001111B, ;反轉相序(八拍)

END

再給你一個串口通信的程序,你自己按需要改吧,是用MAX232轉換電平
ORG 0000H
AJMP MAIN
ORG 0023H
AJMP RECEIVE ;跳轉到接收中斷入口
ORG 0030H

MAIN: MOV TMOD,#20H ;T1工作方式2
MOV TH1,#0FDH ;波特率9600
MOV SCON,#50H ;傳口工作方式1,允許中斷接受
SETB EA ;打開總中斷
SETB ES ;打開串口中斷
SETB TR1 ;打開定時器1
AJMP $

RECEIVE:
CLR RI
MOV A,SBUF ;串口接收數據
MOV R0,A
MOV SBUF,A ;將接收的數據再傳送給計算機
JNB TI,$
CLR TI
MOV A,R0
MOV DPTR,#TAB ;查表顯示
MOVC A,@A+DPTR
MOV P2,#0FFH
NOP
MOV P2,#00H ;送LED顯示
MOV P0,A
RETI

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共陽字碼表

END

Ⅲ 單片機控制一相步進電機的匯編程序,謝謝

ORG 00H
START: MOV DPTR , #TAB1
MOV R0, #03H
MOV R1 , #4H
MOV R4, #00H
MOV P0, #03H
WAIT: MOV P0, R0
MOV P0, #0FFH
JNB P3.4,TIZ ;P3.4有停止鍵按下時,跳到停止子程序專
JNB P3.0,ZHENG ;P3.0有啟動正轉鍵按下時,跳到停止子程序
JNB P3.1,FAN
SJMP WAIT
ZHENG : ;正轉子屬程序
MOV A,R4
MOVC A,@A+DPTR
ACALL DELAY
INC R4
AJMP KEY

Ⅳ 單片機步進電機控制實驗,求編程代碼,最好匯編語言,c也行

^#include<reg51.h>
#define uchar unsigned char
uchar stepd[]={0x01,0x03,0x02,0x06,0x04,0xc0,0x08,0x09};
uchar num=0,fx=0;
sbit key1=P3^;
sbit key2=P3^1;
sbit key3=P3^2;
uchar stepn;
void t0isr() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
P2=stepd[num];
if(fx==0){num++;num%=8;}
if(fx==1)
{
if(num==0)num=7;
else num--;
}
stepn--;
if(stepn==0)TR0=0;
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;
ET0=1;
EA=1;
stepn=200;
while(1)
{
if(key1==0)
{
while(key1==0);
TR0=~TR0;
}
if(key2==0)
{
while(key2==0);
fx=0;
}
if(key3==0)
{
while(key3==0);
fx=1;
}
}
}

Ⅳ 關於51單片機控制步進電機編程(c語言),求助

#include<reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

ucharkey_l,key,i;

ucharcodetemp1[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};

ucharcodetemp2[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};

ucharcodeaa[16]=":";

ucharcodesmg[]="";

sbite=P2^6;

sbitrs=P2^4;

sbitrw=P2^5;

voiddelay(inttt)

{

while(tt--);

}

voidw_cmd(uchardd)

{

rs=0;

rw=0;

e=0;

delay(50);

P0=dd;

e=1;

delay(50);

e=0;

delay(50);

}

voidw_dat(uchardd)

{

rs=1;

rw=0;

e=0;

delay(50);

P0=dd;

e=1;

delay(50);

e=0;

}

voidinit(ucharsmg4[],uchartime[])

{

w_cmd(0x38);

delay(2000);

w_cmd(0x38);

delay(500);

w_cmd(0x38);//注意順序,設置工作方式,顯示模式設置

delay(500);

w_cmd(0x08);//注意順序,關閉顯示

w_cmd(0x01);//清屏

w_cmd(0x07);//游標·畫面滾動模式設置

w_cmd(0x0c);//顯示及游標模式設置

w_cmd(0x80);//

for(i=0;i<16;i++)

w_dat(time[i]);

w_cmd(0x80+0X40);

for(i=0;i<16;i++)

w_dat(smg4[i]);

}

voidTb(ucharsmg[],ucharn,uchars,ucharl,uchard)

{

unsignedcharm;

w_cmd(0x82);

for(m=n;m<s;m++)

w_dat(smg[m]);

w_cmd(0x80+0X42);

for(m=l;m<d;m++)

w_dat(smg[m]);

}

voidmain()

{

init(aa,aa);

while(1)

{

P1=0xf0;

key_l=P1;

if(key_l!=0xf0)

{

delay(100);

if(key_l!=0xf0)

{

P1=key_l|0x0f;

key=P1;

}

}

switch(key)

{

case0xee:Tb(smg,0,10,11,21);

for(i=0;i<8;i++)

{

P2=temp1[i];

delay(500);

}

break;

case0xde:Tb(smg,0,10,19,29);

for(i=0;i<8;i++)

{

P2=temp1[i];

delay(300);

}

break;

case0xbe:Tb(smg,0,10,30,40);

for(i=0;i<8;i++)

{

P2=temp1[i];

delay(100);

}

break;

case0x7e:P2=0xff;Tb(smg,0,10,39,49);break;

case0xed:Tb(smg,50,60,11,21);

for(i=0;i<8;i++)

{

P2=temp2[i];

delay(200);

}

break;

case0xdd:Tb(smg,50,60,19,29);

for(i=0;i<8;i++)

{

P2=temp2[i];

delay(120);

}

break;

case0xbd:P2=0xff;Tb(smg,50,60,40,50);break;

}

}

}

閱讀全文

與實現步進電機單步運行一個步距匯編程序相關的資料

熱點內容
省內圓通快遞寄文件夾需要多少錢 瀏覽:740
iphone程序加密 瀏覽:884
win10文件夾調整文件行高 瀏覽:681
創意手繪教程 瀏覽:754
微信刪除帳號信息 瀏覽:596
mysql操作類文件 瀏覽:649
繞過xp密碼 瀏覽:158
大眾速騰專用app有哪些 瀏覽:455
arpa首先將計算機網路劃分為 瀏覽:617
蘋果系統開機音樂 瀏覽:875
windows8顯示隱藏文件 瀏覽:603
ipad2可以升級到92嗎 瀏覽:857
如何打開ps保存的文件 瀏覽:744
幼兒編程教育有哪些 瀏覽:453
汽車發外地用什麼app 瀏覽:810
網路如何贊美女人漂亮 瀏覽:143
如何把桌面文件放到excel裡面 瀏覽:363
照片文件名是怎麼查的 瀏覽:876
c怎麼在cmd模式下顯示文件 瀏覽:325
手機怎麼把文件夾的圖片移到相冊 瀏覽:440

友情鏈接