基于单片机的步进电机控制器设计

设计者:杨剑锋 桂林理工大学机械控制与控制工程学院

LJMP ZZKZ

KNEXT2:

CJNE A, #2, KNEXT

;转电机正转控制

;若电机控制状态≠2,电机处于停止状态, ;转返回,否则电机

MOV A, KZ ;取上一次电机控制表偏移量

CJNE A, #0, KNEXT3 ;若上一次电机控制表偏移量为不0,转减1,若为0, MOV A, #5 ;则电机控制表偏移量取5 LJMP KNEXT6;

KNEXT3:

DEC A ;电机控制表偏移量减1 LJMP DNEXT5 ;转取脉冲输出

ZZKZ:

MOV A, KZ ;取上一次电机控制表偏移量

CJNE A, #5,KNEXT4 ;若上一次电机控制表偏移量为不5,转加1,若为5, MOV A, #0 ;则电机控制表偏移量取0 LJMP KNEXT5 ;转取脉冲输出

KNEXT4:

INC A ;电机控制表偏移量加1

KNEXT5:

MOV KZ, A ;保存当前电机控制表偏移量 MOV DPTR,#MQ_TAB ;DPTR指向电机控制表首地址 MOVC A, @A+DPTR ;取输出脉冲 MOV P0, A ;输出脉冲 MOV R7, #6 ;步数减1循环6次 MOV R0, #GB ;R0指向步数个位储存单元

KLOOP2:

MOV A ,@R0 ;取位步数

CJNE A, #0, KNEXT6 ;若位步数≠0,转位步数-1,否则 MOV @R0, #9 ;往该位步数存9 INC R0 ;R0指向下一位 DJNZ R7, DLOOP2 ;若(R7)-1=0,六位判断完成,百万位减1,否则继

;续判断

DEC BWB ;百万位减1 LJMP KNEXT ;转程序返回

KNEXT6:

DEC A ;位步数-1 MOV @R0, A ;存回该单元

KNEXT:

RET ;程序返回

SD_TAB: DB 72H, 54H, 05H, C5H, 42H, 95H, CEH, FDH, 20H, 3CH ;定时器初值查询 DB F6H, FBH, FCH, FDH, FEH, FEH, FEH, FEH, FFH, FFH MQ_TAB: DB 01H, 03H ,02H, 06H,04H ,05H;单片机输出控制字查询表

3.5 延时1ms程序

实现功能:利用软件循环运行延时约1ms。 DEL_SUB: MOV R7, #2 DLE1: MOV R6 ,#248 DEL2: DJNZ R6, DEL2

第 16 页 共 25 页

设计者:杨剑锋 桂林理工大学机械控制与控制工程学院

DJNZ R7, DEL1 RET

查指令表可知执行MOV指令需要用1个机器周期,DJNZ指令需要用2个机器用期,本系统使用12MHz晶振,一个机器周期时间长度为1us,所以该段程序执行时间为:

[1+(1+2×248+2)×2+2]*1us=999us≈1ms

3.6 程序所用到的查询表及其说明 3.6.1 时间初值查询表SD_TAB

根据步进电机原理,步进电机的转速为

n=60f/(mZrC)

式中:式中C为通电状态系数,当采用单拍方式时,C=1;而采用单双拍方式时,C=2;

m为步进电机相数,当Zr为步进电机转子数,,f为频率,单位为Hz ,n为转速,单位为r/min。

因此,当步进电机转速为n时,步进电机的拍数切换时间与转速的关系为 t=1/f=60/(nmZrC)

式中:t为电机拍数切换时间,单位为秒。由此可以算出程序中定时器T0所需定时时间T。

根据程序查指令表可知定时器定时到开始到脉冲输出需要运行约648个晶振周期数的程序,系统用的是12MHz晶振,即运行此段程序需要648/12=54us的时间,故定时器T0所需定时时间T与转速的关系为

T=t-(54×10-3)=60/(nmZrC) -(54×10-3)

式中:定时器T0所需定时时间T的单位为秒。

由选用电机的参数可知:步进电机相数m=3,因运行采用单双拍方式,C=2,步进电机转子数Zr=40。而定时器工作在模式1下初值X与定时时间T的关系为

X=216-T×106

因此,由公式可算得电机转速与定时器初值关系表如表4-1所示;

电机转速与定时器初值关系表 表4-1 转速(r/min) TL0初值 TL1初值 表地址偏移量 100 72H F6H 0 200 54H FBH 1 300 05H FCH 2 400 C5H FDH 3 500 42H FEH 4 600 95H FEH 5 700 CEH FEH 6 800 FDH FEH 7 900 20H FFH 8 1000 3CH FFH 9 定时器初值查询表SD_TAB如下: SD_TAB: DB 72H, 54H, 05H, C5H, 42H, 95H, CEH, FDH, 20H, 3CH DB F6H, FBH, FCH, FDH, FEH, FEH, FEH, FEH, FFH, FFH

3.6.2 输入键键号查询表IN_TAB

输入键键号与P1口状态关系如下表4-2所示:

第 17 页 共 25 页

设计者:杨剑锋 桂林理工大学机械控制与控制工程学院

输入键键号与P1口状态关系表 表4-2

键名 0 1 2 3 4 5 6 7 P1口状态 77H B7H D7H E7H 7BH BBH DBH EBH 键名 8 9 正转启动 反转启动 停止 加速 减速 P1口状态 7DH BDH DDH EDH 7EH BEH DEH 输入键键号查询表IN_TAB如下: IN_TAB: DB 77H, B7H ,D7H, E7H,7BH ,BBH ,DBH ,EBH

DB 7DH, BDH ,DDH ,EDH,7EH ,BEH ,DEH

3.6.3 电机启/停控制和显示段选码表SRDS_TAB

电机启/停控制与其状态、显示数与显示段选码关系表如下表4-3:

电机启/停控制与其状态、显示数与显示段选码关系表 显示数字 0 1 2 3 4 5 6 7 显示段码 C0H F9H A4H B0H 99H 92H 82H F8H 显示数字 8 9 正转启动 反转启动 停止 显示段码 80H 90H 1 2 0 电机启/停控制和显示段选码查询表SRDS_TAB如下: SRDS_TAB: DB C0H, F9H ,A4H, B0H,99H ,92H ,82H ,F8H

DB 80H, 90H ,1, 2,3

3.6.4 单片机输出控制字查询表MQ_TAB

步进电机采用单双六拍方式输出,电机绕组通电与单片机输出控制字关系如下表4-4:

电机绕组通电与单片机输出控制字关系表 表4-4 通电绕组 A相 AB相 B相 BC相 C相 CA相 控制字 01H 03H 02H 06H 04H 05H 单片机输出控制字查询表MQ_TAB如下: MQ_TAB: DB 01H, 03H ,02H, 06H,04H ,05H

第 18 页 共 25 页

设计者:杨剑锋 桂林理工大学机械控制与控制工程学院

附录一:系统电路原理

第 19 页 共 25 页

设计者:杨剑锋 桂林理工大学机械控制与控制工程学院

附录二:系统软件程序清单

ORG 0000H LJMP MAIA ORG 000BH LJMP DJKZ ORG 0050H MAIN:

GB EQU 40H SB EQU 40H BB EQU 40H ;主程序

;定义步数十位存储单元 ;定义步数百位存储单元 ;定义步数千位存储单元 QB EQU 40H WB EQU 40H SWB EQU 40H BWB EQU 40H SD EQU 40H JK EQU 40H KONZ EQU 40H KBL EQU 40H

MOV P0,#00H MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV GB,#00H MOV SB,#00H MOV BB,#00H MOV QB,#00H MOV WB,#00H MOV SWB,#00H MOV BWB,#00H MOV SD,#1 MOV JK,#0 MOV KZ,#0 MOV TMOD,#01H MOV DPTR,#SD_TAB MOV A,SD MOVC A,@A+DPTR MOV TL0,A MOV A,SD ADD A,#10 DA A MOVC A,@A+DPTR MOV TH0,A MOV IE,#82H SETB TR0

LOOP:

LCALL KEY_SUB LCALL DISP_SUB

;定义步数万位存储单元 ;定义步数十万位存储单元 ;定义步数百万位存储单元 ;定义步数个位存储单元

;定义电机转速表查询偏移量存储单元 ;定义电机控制表偏移量存储单元 ;定义输入口按键按下状态暂存单元

;定义输入口按键按下状态中间变量存储单元 ;I/O口初始化 ; ; ;

;步数个位初始化 ;步数十位初始化 ;步数百位初始化 ;步数千位初始化 ;步数万位初始化 ;步数十万位初始化 ;步数百万位初始化

;电机转速开机默认为200r/min ;电机控制状态开机为停止 ;速度查询表偏移初始化0 ;T0控制模式为1

;DPRT指向转速查询表首地址 ;取转速查询表偏移量 ;取定时器低位初值 ;装入定时器低位初值 ;取转速查询表偏移量

;调整转速查询表偏移量,为取T0高位做准备;十进制数调整 ;取定时器高位初值 ;装入定时器高位初值 ;T0开中断 ;启动T0

;调用键盘扫描录入程序 ;调用显示程序

第 20 页 共 25 页

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4