资源描述
9.4工程应用9.4.1项目1:用8255A端口控制步进电机 1项目要求与目的(1)项目要求:根据开关的状态,用8255端口控制步进电机,编写程序输出脉冲序列到8255的PA口,控制步进电机正转、反转,加速,减速。(2)项目目的:了解步进电机控制的基本原理。掌握控制步进电机转动的编程方法。了解单片机控制外部设备的常用电路。2项目电路连接与说明 (1)项目电路连接: 8255的片选孔用导线接至译码处200H207H插孔,8255的PA0-PA3用导线接至步进电机的A、B、C和D,PB0-PB3用导线接至开关K0、K1和K2。(2)项目说明: 步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机作步进式旋转。切换是通过8255输出脉冲信号来实现的。所以调节脉冲信号的频率便可以改变步进电机的转速,改变各相脉冲的先后顺序,可以改变电机的旋转方向。步进电机的转速应由慢到快逐步加速。步进电机驱动方式可以采用双四拍(ABBCCDDAAB)方式,也可以采用单四拍(ABCDA)方式,或单、双八拍(AABBBCCCDDDAA)方式。实际控制时公共端是接在+5V上的,所以实际控制脉冲是低有效。8255的PA口输出的脉冲信号经(MC1413或ULN2003A)倒相驱动后,向步进电机输出脉冲信号序列。当开关K0=0时,步进电机驱动方式采用单/双八拍工作方式,当开关K1=0时,步进电机驱动方式采用双四拍工作方式,当开关K2=0时,步进电机驱动方式采用单四拍反转工作方式。3项目电路原理框图项目电路原理框图如图7-1所示。电路由8255A芯片、驱动和步进电机等组成。图7-1 用8255A端口控制步进电机电路框图 4项目程序设计(1)程序流程图用8255A端口控制步进电机程序流程图如图7-2所示。 图7-2 程序流程图(2)程序清单用8255A端口控制步进电机程序清单如下所示。ASTEP EQU 01HBSTEP EQU 02HCSTEP EQU 04HDSTEP EQU 08HCODE SEGMENT ASSUME CS:CODESTART : MOV DX, 203H ;8255控制口地址 MOV AL, 82H ;PA口输出,B口输入 OUT DX, AL ;写控制字 K0:MOV DX, 200H ;PA口地址 MOV AL,0 ;输出低电平 OUT DX,AL ;电机停止转动 MOV DX,201H ;PB口地址 IN AL,DX ;读开关状态 TEST AL,01H ;PB0位(K0=0吗?) JNZ K1 ;不是零转K1 JMP STEP8 是零转单/双八拍工作方式 K1: IN AL,DX ;读开关状态 TEST AL,02H ;PB1位(K1=0吗?) JNZ K2 ;不是零转K2 JMP STEP4 ;是零转双四拍工作方式 K2:IN AL,DX ;读开关状态 TEST AL,04H ;PB2位(K2=0吗?) JZ STEP41 ;是零转单四拍反转工作方式 JMP K0 ;循环; 单/双八拍工作方式:AABBBCCCDDDAASTEP8:MOV BX,9000H;设置初始延时时间 MOV DX, 200H;PA口地址 MOV AL,ASTEP OUT DX,AL CALL DELAY MOV AL,ASTEP+BSTEP OUT DX,AL CALL DELAY MOV AL,BSTEP OUT DX,AL CALL DELAY MOV AL,BSTEP+CSTEP OUT DX,AL CALL DELAY MOV AL,CSTEP OUT DX,AL CALL DELAY MOV AL,CSTEP+DSTEP OUT DX,AL CALL DELAY MOV AL,DSTEP OUT DX,AL CALL DELAY MOV AL,DSTEP+ASTEP OUT DX,AL CALL DELAY JMP K0; 双四拍工作方式:ABBCCDDAABSTEP4:MOV BX,5000H;设置延时时间 MOV DX, 200H;PA口地址 MOV AL,ASTEP+BSTEP;PA0PA1(AB相)输出高电平 OUT DX,AL CALL DELAY ;调延时 MOV AL,BSTEP+CSTEP ;BC输出高电平 OUT DX,AL CALL DELAY ;调延时 MOV AL,CSTEP+DSTEP;CD输出高电平 OUT DX,AL CALL DELAY ;调延时 MOV AL,DSTEP+ASTEP;DA输出高电平 OUT DX,AL CALL DELAY ;调延时 JMP K0; 单四拍反转工作方式: DCBADSTEP41:MOV BX,1000H;设置延时时间 MOV DX,200H;PA口地址 MOV AL,DSTEP; D输出高电平 OUT DX,AL CALL DELAY;调延时 MOV AL,CSTEP; C输出高电平 OUT DX,AL CALL DELAY;调延时 MOV AL,BSTEP; B输出高电平 OUT DX,AL CALL DELAY;调延时 MOV AL,ASTEP; A输出高电平 OUT DX,AL CALL DELAY;调延时 JMP K0DELAY PROC NEAR ;延时子程序 PUSH CX MOV CX,BXDD1: NOP LOOP DD1 POP CX RETDELAY ENDP ; 延时子程序结束CODE ENDS ;代码段结束 END START
展开阅读全文