大家好,又见面了,我是你们的朋友全栈君。
原标题:单片机控制步进电机1步10步100步正反转
一,程序设计方案的构想:
1) 的控制原理
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件.在非超载的情况下,电机的转速,停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响.即给电机加一个信号,电机则转过一个步距角.这一线形关系的存在,加上步进电机只有周期性的误差而无积累误差等特点,使得在线速度,位置等控制领域用步进电机来控制变的非常的简单.
2) 分析设计
使用以软件方式驱动步进电机通过编辑方法,对步进电机的转速,往返转动的角度以及转动次数等进行控制使其在一定的范围下进行,还可以方便灵活的控制步进电机的运行状态:
3)原理图:
4)连接图:
输出端
输入端
A
C1
P2.0
KM1
P1.0
1B
B
C2
P2.1
KM2
P1.1
2B
C
C3
P2.2
KM3
P1.2
3B
D
C4
P2.3
KM4
P1.3
4B
P2.4
KM5
5)运用元件及电路图
元件名称
型号
件数
单片机
AT89C51
1
晶振
CRYSTAL
1
电容
CAP 22PF 47UF
2
电阻
RES 0.6W 10K
1
步进电机
STEPER 4相
1
步进电机芯片
ULN2003A
1
按钮
BUTTON
6
二、 实验程序
org 0000H
start:
jnb p2.0,step
jnb p2.1,step
sjmp start
step:
jnb p2.2,one
jnb p2.3,ten
jnb p2.4,hundred
ljmp start
one:
mov r0,#2
jnb p2.0,zh1
jnb p2.1,fan1
ljmp start
ten:
mov r0,#10
jnb p2.0,zh1
jnb p2.1,fan1
ljmp start
hundred:
mov r0,#100
jnb p2.0,zh1
jnb p2.1,fan1
ljmp start
zh1:
mov p1,#03H
lcall delay
jnb p2.7,stop
djnz r0,zh2
ljmp stop
zh2:
mov p1,#06H
lcall delay
jnb p2.7,stop
djnz r0,zh3
ljmp stop
zh3:
mov p1,#0cH
lcall delay
jnb p2.7,stop
djnz r0,zh4
ljmp stop
zh4:
mov p1,#09H
lcall delay
jnb p2.7,stop
djnz r0,zh1
sjmp stop
fan1:
mov p1,#09H
lcall delay
jnb p2.7,stop
djnz r0,fan2
ljmp stop
fan2:
mov p1,#0cH
lcall delay
jnb p2.7,stop
djnz r0,fan3
ljmp stop
fan3:
mov p1,#06H
lcall delay
jnb p2.7,stop
djnz r0,fan4
ljmp stop
fan4:
mov p1,#03H
lcall delay
jnb p2.7,stop
djnz r0,fan1
sjmp stop
stop:
mov p1,#00H
ljmp start
delay:
mov r2,#200
d1:mov r1,#200
djnz r1,$
djnz r2,d1
ret
end
三、调试记录:
当程序编译完成后,下载到单片机中后,在运行过程当中时发现按下10步按钮无法运行,其他都正常运行,回到程序检查时发现10步程序编写出现错误,经过改正后,可以运行.
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140646.html原文链接:https://javaforall.cn