跳舞机器人的实现源程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
跳舞机器人的实现源程序
一个典型的A型电机的加速过程amotor.asm程序清单:
;该程序用来驱动A型电机左右各转120度
DRIVE: MOV 81H,#40H ;避免堆栈指针的影响,81H为SP的物理地址ACALL INIT ;调用初始化子程序
MOV D PTR,#004FH ;DPTR指向数据表
MOV R0,05H ;开始为向右转,05H为R5的物理地址TURN: CLR A
MOVC A,@A+DPTR ;取脉冲数
MOV R3,A ;R3存每阶段的脉冲数
STEP: MOV A,#0FH
MOVC A,@A+DPTR ;取该阶段的延时数
MOV R4,A ;延时数存R4中
CJNE @R0,#00H,NEXT ;状态字指针R0到尽头
MOV R0,05H ;指针复位
NEXT: MOV 80H,@R0 ;输出脉冲,89H为P2口的物理地址
MOV 90H,@R0
MOV 0A0H,@R0
MOV 0B0H,@R0
INC R0 ;指针下移
ACALL DELAY ;延时
DJNZ R3,STEP ;该阶段循环
INC D PTR
DJNZ R2,TURN ;执行下一阶段
DEC R6
MOV A,R6
JZ STOP ;总步数结束
MOV R7,#40
REST: MOV R4,#0FFH ;正转120度,休息
ACALL DELAY
DJNZ R7,REST
MOV R2,#0FH ;加速阶段数复位
MOV D PTR,#004FH ;DPTR复位
CJNE R5,#20H,RIGHT ;R5存正反状态字
LEFT: MOV R5,#25H
MOV R0,05H
SJMP TURN
RIGHT: MOV R5,#20H
MOV R0,05H
SJMP TURN
STOP: SJMP STOP ;停机
;
ORG 004FH
PULETAB: D B 9,10,11,12,14,15,16,17
DB 18,19,108,108,108,108,108
TIMETAB: D B 55,50,45,42,36,33,31,29
DB 27,26,24,24,24,24,24
DELAY1: MOV 08H,#34 ;DELAY1为延时0.1MS的标准子程序
LOOP1: NOP
DJNZ 08H,LOOP1
RET
DELAY: ACALL DELAY1
DJNZ R4,DELAY
RET
INIT: MOV 20H,#33H ;INIT为初始化子程序
MOV 21H,#66H
MOV 22H,#0CCH
MOV 23H,#99H
MOV 24H,#00H ;20H――24H存右转状态字
MOV 25H,#33H
MOV 26H,#99H
MOV 27H,#0CCH
MOV 28H,#66H
MOV 29H,#00H ;25H—29H存左转状态字
MOV R5,#20H ;R5暂存状态地址
MOV R6,#14H ;前进10大步
MOV R2,#0FH ;阶段数
RET
END
以上就是一个典型的电机加速驱动过程,其主要的思想是:通过有规律的变化的延时程序来控制送往步进电机的脉冲的快慢,从而使电机得到逐渐加快的脉冲激励,稳定的实现加速过程,而不会出现因为脉冲的陡然加快而抖动的现象。
完整的机器人舞蹈动作程序比这段程序复杂的多,要牵涉到多个电机的协调动作以及舞动动作的配合与连贯,其中主要的是DRIVE子程序,限于篇幅,在此不能一一列出,完整的驱动程序可与笔者联系。(email:yytao008.student@)