步进电机将电脉冲信号转变成角位移,实质上是一种数字/角度转换器。
步进电机区别于其他控制电机电大的特点是:它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。电路图如下
一:步进电机系统单片机及键盘部分电路图
步进电机系统脉冲分配与驱动部分电路图
程序流程图
[localimg=168,150]3[/localimg]
程序
******************************************************************************
程序功能为通过按键控制步进电机转动控制,按键的识别采用行列扫描,51单片机的P2口用于对步进电机驱动芯片STK672-0的控制以及模式设定。四个按键功能分别为
*******************************************************************************
//位定义
M1 BIT P2.0 ;相激励位
M2 BIT P2.1
M4 BIT P2.2 ;转向轨迹位
M5 BIT P2.3
EN BIT P2.4 ;电机脱机位
CWB BIT P2.5 ;转向位
RET BIT P2.6 ;归零位
CLK BIT P2.7 ;时钟位
CNTER0 DATA 30H ;20ms软件延时用变量
CNTER1 DATA 31H
KEYCODE DATA 32H ;按键代码值存放单元
SCANCODE DATA 33H ;按键扫描代码值存放单元
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0
;主程序开始,,以下为程序中变量的初始化设定
MAIN: MOV SP,#60H
MOV CNTER0,100 ;软件延时变量赋初值
MOV CNTER1, 10
MOV TMOD,#01H ;定时器0方式0工作
SETB EA ;定时器中断设定
SETB ET0
CLR M1 ;两相激励
CLE M2
SETB M4 ;环形转向轨迹
SETB M5
CLR EN ;切断驱动输出,步进电机脱机
CLR RET ;归位输入无效
SETB CWB ;初始设定电机顺时针方向转动
;START程序段为一个循环过程,通过按键判断,电机按照相应按键确定的轨迹运行。
START: LCALL KEYSCAN ;调用键盘扫描函数
MOV A, KEYCODE ;获得键值
CJNE A, #11H,NEXT1 ;启动键判断,否则另行判断
SETB EN ;启动键子程序
SETB TR0
LJMP EXIT
NEXT1: CJNE A, #21H,NEXT2 ;停止键判断,否则另行判断
CLR TR0
CLR EN
LJMP EXIT
NEXT2: CJNE A, #41H,NEXT3 ;转向键判断,否则另行判断
CPL CWB
LJMP EXIT
NEXT3: CJNE A,#81H, EXIT ;归位键判断,否则转回START
SETB RET
LCALL DELAY
CLR RET
EXIT: LJMP START
;键盘扫描子程序
KEYSCAN:
MOV P1,#0F0H ;P1口低四位拉低扫描键盘
MOV A,P1 ;读取键盘状态
ANL A, #0F0H
CJNE A, #0F0H, RESCAN ;判断有无键按下,有键按下则延时去抖动再扫
MOV KEYCODE,#0FFH ;没有按键按下,返回
LJMP EXIT002
RESCAN:LCALL DELAY300 ;延时去抖动
MOV A ,P1
ANL A, #0F0H
CJNE A, #0F0H, KEYPROC ;转到判断按键
MOV KEYCODE,#0FFH ;是抖动,返回
LJMP EXIT002
;按键处理函数
KEYPROC:MOV R4, #04H ;
MOV SCANCODE, #0FEH
MOV A, SCANCODE
REKEYPROC: ;四次行扫描
MOV P1, A
MOV A, P1
ANL A, SCANCODE
CJNE A, SCANCODE, KEYVALUE
MOV A, SCANCODE
RL A
MOV SCANCODE, A
DJNZ R4, REKEYPROC
RET
KEYVALUE: ;获得按键代码值
CPL A
MOV KEYCODE , A
RET
EXIT002:RET
;定时器0中断服务子程序
;定时10ms,产生20ms周期时钟,50Hz
TIMER0:MOV TH0, #0D8H ;重装定时初值
MOV TL0, #0F0H
CPL CLK ;CLK翻转
;软件延时,用于消除按键抖动
DELAY: ;软件延时约20ms
DJNZ CNTER0,DELAY300
MOV CONTER0,100
DJNZ CNTER1,DELAY300
MOV CNTER1,10
RET |