导航:首页 > 操作系统 > 单片机进电机编码

单片机进电机编码

发布时间: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

阅读全文

与单片机进电机编码相关的资料

热点内容
怎么理解虚拟服务器 浏览:402
黑马程序员ai培训课资源 浏览:648
abplc加密软件下载 浏览:421
交叉编译内核后 浏览:275
php小程序100行左右 浏览:103
要进行压缩解压的命令是 浏览:736
mscod编程平台 浏览:520
pdf文字转换word文档 浏览:992
php连接mssql2005 浏览:894
库进行编译可以吗 浏览:773
云南石油app推荐码哪里看 浏览:457
ipone有文件加密吗 浏览:72
蝴蝶文件夹怎么使用 浏览:699
wps文件夹安装包在哪里 浏览:439
android2x 浏览:135
知音购物app哪里下载 浏览:527
stc单片机看门狗 浏览:790
单片机与计算机串口通信 浏览:309
linux安装jdk7 浏览:286
因子估算法例子 浏览:240