導航:首頁 > 操作系統 > 單片機進電機編碼

單片機進電機編碼

發布時間:2023-10-23 10:49:42

『壹』 編碼器與單片機的連接

可以直接和單片機IO相接,但有的設計者為了降低外部干擾,一般通過D觸發器或者光耦後與IO相連,一般的光電編碼器都是集電極開路輸出型的,你看其說明書有具體電路。一般將A、B相接到定時器輸入的IO上,這樣比較好處理,將定時器設為計數器模式就可以了。檢測步進電機轉動角度當然可以做到,這只是基本應用。360線,一個脈沖輸入就是1度,所以很容易的。接收到45個脈沖就證明轉動了45度了。

『貳』 關於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;

}

}

}

『叄』 旋轉編碼器通過單片機控制步進電機怎麼編程

我也在弄這個控制原理,哥們兒你的成功了嗎,我在某音的視頻上看過一個是這么弄的,很厲害,但是一直找不出那個驅動器和控制原理,有點想不明白,

『肆』 求51單片機控制步進電機程序

;//****************************************************************
;//*文件名: StepM FOR 51MCU
;功能: 開關控制步進電機的正轉、反轉和停止。
;接線: 用導線對應連接步進電機模塊的SMA~SMD到CPU模塊的P10~P13,
; 八位邏輯電平輸出的K0~K2對應連接CPU模塊的P15~P17。
;//****************************************************************
;K0——停止
;K1——正轉
;K2——反轉
ORG 0000
LJMP START
ORG 0100H
START:
LOOP: MOV P1,#00H ; 步進電機停止
ORL P1,#0E0H
MOV A,P1
JNB ACC.5,STOP ; 停止
JNB ACC.6,FOR ; 正轉
JNB ACC.7,rev ; 反轉
JMP LOOP ;

FOR: MOV R0, #00H ; 正轉到tab取碼指針初值
for1: MOV A,R0 ; 取碼
MOV DPTR,#TABLE ;
MOVC A,@A+DPTR
JZ LOOP ; 是否到了結束碼00h
CPL A ;把acc反向
MOV P1,A ;輸出到p1開始正轉
CALL DELAY ;轉動的速度
INC R0 ;取下一個碼
JMP FOR1 ;繼續正轉

rev: MOV R0,#0AH ;反轉到tab取碼指針初值
rev1: MOV A,R0
MOV DPTR,#TABLE ;取碼
MOVC A,@A+DPTR
JZ LOOP ;是否到了結束碼00h
CPL A ;把acc反向
MOV P1,A ;輸出到p1開始反轉
CALL DELAY ;轉動的速度
INC R0 ;取下一個碼
JMP REV1 ;繼續反轉

stop:
MOV P1, #00H
JMP LOOP

DELAY: MOV R1,#150 ;步進電機的轉速20ms
D1: MOV R2,#248
DJNZ R2,$
DJNZ R1,D1
RET
TABLE:
db 01h,03h,02h,06h,04h,0ch,08h,09h ;正轉表
db 00 ;正轉結束
db 01h,09h,08h,0ch,04h,06h,02h,03h ;反轉
db 00 ;反轉結束
END

閱讀全文

與單片機進電機編碼相關的資料

熱點內容
編譯內核找不到工具鏈 瀏覽:447
java常見模式 瀏覽:500
典欣空調壓縮機 瀏覽:421
app如何認定許可權 瀏覽:849
兩個復數相除的角度計演算法則 瀏覽:584
電商類app開發怎麼收費 瀏覽:300
打造電子書反編譯工具 瀏覽:74
壓縮比115 瀏覽:558
pdf怎麼摳圖 瀏覽:864
霍妮pdf 瀏覽:808
反編譯VMP 瀏覽:47
hello編譯器 瀏覽:771
apk程序加密 瀏覽:595
如何給app重命名 瀏覽:603
怎麼幽默調侃程序員 瀏覽:285
忘記密碼解壓視頻 瀏覽:912
運城機場春運加密 瀏覽:287
安卓手機如何關閉app後台 瀏覽:154
安卓數字密碼忘記怎麼破解 瀏覽:253
pythonzmq模式 瀏覽:182