帮帮忙:80C51单片机对步进电机的控制

来源:百度知道 编辑:UC知道 时间:2024/06/09 08:51:35
步进电机是75BF003,单片机控制步进电机正转,反转.当单片机受到中断信号,步进电机停止.

默认认为步进电机的驱动电路是全步的,输入高电平正传
P1.2连方向线,P1.1连脉冲线,200步为1周,定时中断为5ms,电机转1周1秒
11.0592MHz晶震,5ms中断初值为EE00H
RUNEN BIT 20H;电机动作开关
RUND BIT 21H;方向标志位,1为正传
PUCON DATA 40H;脉冲计数器
SECON DATA 41H;秒钟计数器
STCON DATA 42H;电机停时中断计数器
ORG 0000H
LJMP MAIN
ORG 002BH
LJMP CTC2
ORG 100H
MAIN:
MOV SP,#7FH
MOV PUCON,#200;脉冲数200
MOV SECON,#3;秒数3秒。即3圈
MOV STCON,#100;停时中断次数100
MOV TH2,#0EEH;送初值
MOV TL2,#0
MOV RCAP2H,#0EEH
MOV RCAP2L,#0
SETB P1.2;设定正传
SETB RUNEN;开电机动作开关
SETB RUND;设定正传
SETB ET2
SETB EA
LOOP1:
JB P1.0 ,LOOP2;查询输入
MOV TH2,#0EEH
MOV TL2,#0
MOV T2CON,#00000100B;开始计数,等中断
LOOP2:
SJMP LOOP1
CTC2:
JNB RUNEN,NEXT1;电机动作开关为1,送脉冲,为0,进入0.5秒计时程序
CPL P1.1
DJNZ PUCON,EXIT;脉冲计数
MOV PUCON,#200
JNB RUND,NEXT3;为1,正传,运行下步,为0,反转,到next3
DJNZ SECON,EXIT;计数圈数
MOV SECON,#3

CLR RUNEN;先关电机动作开关,等待0.5秒
SJMP EXIT