求51单片机控制步进电机程序

1、设置4各按钮,分别代表A、B、C、D 4个水位
2、设置4个发光二极管
3、A点时亮一个二极管,电机开始启动;B点时点亮2个二极管,电机加速;C点时点亮3个二极管,电机减速;D点时点亮4个二极管,电机停止

第1个回答  2012-06-12
给你一段电机走一步的函数吧!
/***************************************************************************************************
函数名:步进电机正反转一步
调 用:MOTOR()
参 数:Mot=0,电机反转一步 ,Mot=1电机正转
返回值:无
结 果:电机坐标 Motor 自动加一或减一,电机走一步
***************************************************************************************************/
void MOTOR(void){ //步进电机正反转一步子程序
code unsigned char MOTOR_DB[]={0x00,0xb0,0x90,0xd0,0x50,0x70,0x60,0xe0,0xa0,0x00};//定义电机输出编码
unsigned char i;
MOIC=0; //开电机电流
i=0; //电机输出编码初值设00
CBB=10; //设减小电机电流时间设为10
if(Mot==1)Mo_data++;
else{if(Mo_data!=0)Mo_data--;}//如果电机反转,并且当前电机坐标不小于1时,坐标减一
while(1)
{
if(Mot)Motor_t ++;//当前电机输出编码加一指向下一编码
else Motor_t --;//电机输出编码减一
i=MOTOR_DB[Motor_t]; //取电机输出编码
if(i!=0)break;
else{
if(Mot)Motor_t=0;
else Motor_t=9;
}
}
i=i&0xf8; //屏蔽低3位,高5位不变
M_data=M_data&0x07;//屏蔽P1口的高5位,低3位不变
M_data=M_data|i; //高5位送P1口,P1口的低3位不变
}
第2个回答  2013-06-10
;//****************************************************************
;//*文件名: 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
第3个回答  2011-10-14
这个程式好写,但要别人免费帮你写,可能就没有人写了追问

我已经写出来了

第4个回答  2011-10-12
偣赜谀信
相似回答