基于51单片机的步进电机设计.docx
《基于51单片机的步进电机设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的步进电机设计.docx(10页珍藏版)》请在冰豆网上搜索。
基于51单片机的步进电机设计
系统整图
系统整图如图3-1所示,本系统采用外部中断方式,p0口作为信号的输入部分,p1口为发光二极管显示部分,p2口作为电机的驱动部分。
电源部分
利用LM7812和LM7805芯片得到12V和5V的电压,它们的应用要注意以下几点:
(1)输入输出压差不能太大,太大则转换效率急速降低,而且容易击穿损坏;
(2)输出电流不能太大,1.5A是其极限值。
大电流的输出,散热片的尺寸要足够大,否则会导致高温保护或热击穿;(3)输入输出压差也不能太小,大小效率很差。
其中12V电压给步进电机供电,5V电压则给单片机供电。
分别如图3-2、图3-3所示。
(1)、产生12V的电压给步进电机供电
(2)产生5V的电压给单片机供电
按键部分
本次设计选用的是单片机的P0口来控制信号的输入,所以把按键开关和P0口连接起来,当按下开关S1时,相当于给P0.0口一个低电平;当按下开关S2时,相当于给P0.1口一个低电平;当按下开关S3时,相当于给P0.2口一个低电平;当按下开关S4时,相当于给P0.3口一个低电平;当按下开关S5时,相当于给P0.4口一个低电平。
然后通过单片机实行相应的操作。
如图3-4。
驱动部分
此电路是步进电机的驱动部分,我选用的是ULN2004芯片来驱动的,ULN2004系列是一款高耐压,大电流达林顿管驱动器,包含7个NPN达林顿管。
如图3-5。
状态指示部分
状态指示用P1口控制发光二极管的显示,如果相应端口是低电平,相应的发光二极管就会亮,用它来表示步进电机所处的状态。
如图3-6。
实物图:
源程序清单
QIANEQU40H
HOUEQU41H
JIAEQU42H
JIANEQU43H
TINGEQU44H
ORG000H
LJMPMAIN
ORG003H
LJMPDUAN///外部中断0
ORG0030H
MAIN:
///初始化
MOVR0,#0FH
MOV10H,#01H
MOV11H,#03H
MOV12H,#02H
MOV13H,#06H
MOV14H,#04H
MOV15H,#0CH
MOV16H,#08H
MOV17H,#09H
MOV20H,#50
MOV21H,#40
MOV22H,#30
MOV23H,#20
MOV24H,#10
MOV25H,#5
MOVR1,#20H
MOVIE,#B
CLRQIAN
CLRHOU
CLRJIA
CLRJIAN
CLRTING
MOVA,@R1
MOVR2,A
SETBIT0////边沿触发形式
LOOP1:
JNBQIAN,LOOP2
ACALLFRONT1
LOOP2:
JNBHOU,LOOP1
ACALLBACK1
DUAN:
MOVA,P0
CPLA
ANLA,#1FH///去高三位,使按下去的一位为1
CJNEA,#00H,CHA
AJMPDUAN
CHA:
ACALLDELAY10MS
MOVA,P0
CPLA
ANLA,#1FH
JZDUAN///为零转移
ACALLZHAO
RETI
ZHAO:
MOVA,P0//查找是哪一位,下面置1
JNBACC.0,FRONT
JNBACC.1,BACK
JNBACC.2,FAST
JNBACC.3,SLOW
JNBACC.4,STOP
FRONT:
SETBQIAN
RET
BACK:
SETBHOU
RET
FAST:
SETBJIA
RET
SLOW:
SETBJIAN
RET
STOP:
SETBTING
RET
FRONT1:
CLRQIAN
CLRHOU
CLRJIA
CLRJIAN
CLRTING
INCR0///前进子程序R0用于给P2口送不同的值
MOVP2,@R0
MOVA,@R1
MOVR2,A///R2用于延时不同的时间
ACALLDELAY
CJNER0,#17H,XIA
MOVR0,#10H
XIA:
JBQIAN,HUI//回主程序////////XIA子程序用于过度
JBHOU,HUI
JBTING,HUI
JNBJIA,XIA1
ACALLJIA1
XIA1:
JNBJIAN,XIA2///XIA子程序用于过度
ACALLJIAN1
JBTING,HUI
XIA2:
AJMPFRONT1
HUI:
RET//返回主程序
JIA1:
CJNER1,#25H,XIA3///加速
RET
XIA3:
INCR1
RET
BACK1:
CLRQIAN//后退
CLRHOU
CLRJIA
CLRJIAN
CLRTING
CJNER0,#0FH,XIA8
MOVR0,#17H
XIA8:
DECR0
MOVP2,@R0
MOVA,@R1
MOVR2,A
ACALLDELAY
CJNER0,#10H,XIA5
MOVR0,#17H
XIA5:
JBQIAN,HUI
JBTING,HUI
JBHOU,HUI
JNBJIA,XIA6
ACALLJIA1
XIA6:
JNBJIAN,XIA7
ACALLJIAN1
XIA7:
AJMPBACK1
JIAN1:
CJNER1,#20H,XIA4//减速
RET
XIA4:
DECR1
RET
DELAY10MS:
MOVR3,#20
D1:
MOVR4,#250
DJNZR4,$
DJNZR3,D1
RET
DELAY:
MOVR5,#50//根据r2的状态调整步进电机的每一步的时间
D2:
MOVR6,#150
D3:
DJNZR6,$
DJNZR5,D2
DJNZR2,DELAY
RET
END