南昌航空大学实验报告
二0一一 年 10月15 日
课程名称:单片微型机 实验名称: 实验三 硬件实验1、11 班级: 080611 姓名: 谈家平 学号: 08061123 指导教师评定: 签名:
一、实验目的
1 掌握P3口、P1口简单使用。 2 学习延时程序的编写和使用。 3了解步进电机控制的基本原理。 4掌握步进电机转动编程方法。
二、实验内容
1 P3.3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加一。
2 P1口做输出口,编写程序,使P1口接的8个发光二极管L1—L8按16进制加一方式点亮发光二极管
3 从键盘上输入正、反转命令,转速参数和转动步数显示在显示器上,CPU再读取显示器上显示的正、反转命令,转速级数(16级)和转动步数后执行。转动步数减为零时停止转动。
三、实验步骤
P3.3 输入,P1 口输出实验 1、实验程序框图
延时子程序 R6设初值FFH R7设初值FFH N R7-1=0否? Y N R6-1=0否? Y 返回 实验电路原理图
开始 P3.3为高吗? N 延时 P3.3真的高吗? Y YN Y P3.3为低吗? N 延时 A+1送P1口 循环
2 、实验操作
①P3.3用插针连至K1, P1.0—P1.7用插针连至L1—L8。 ②从起始地址0540H开始连续运行程序(输入0540后按EXEC键)。 ③开关K1每拨动一次,L1—L8发光二极管按16进制方式加一点亮 RG 0540h
HA1S: MOV A,#00H
HA1S1: JB P3.3,HA1S1 ;判P3.3为低电平否 MOV R2,#20H LCALL DELAY ;调延时子程序 MOV R2,#20H LCALL DELAY
JNB P3.3,HA1S2 ;判P3.3为高电平否 INC A ;加1 PUSH ACC
CPL A ;取反后送P1显示
步进电机控制实验 实验程序框图
开始 从键盘输入数据,数码管显示 N 执行键是否按下? Y 显示缓冲区(7E)=1吗? Y 逆时针转动一部 步距数-1,送显示缓冲区 根据显示缓冲区(7D)内容计算延时 步距数为0吗? 步距数-1,送显示缓冲区 N 步距数为0吗? Y
MOV P1,A POP ACC
AJMP HA1S1 ;循环 DELAY: PUSH 02H ;延时子程序 DELAY1: PUSH 02H DELAY2: PUSH 02H
DELAY3: DJNZ R2,DELAY3
POP 02H
DJNZ R2,DELAY2 POP 02H
DJNZ R2,DELAY1 POP 02H
DJNZ R2,DELAY RET END
N 顺时针转动一步 (7D)内容计算延时 停止
停止
1步进电机插头
插到实验系统J3插座中,P1.0—P1.3接到BA—BD插孔。
2在“P.”状态下,从始地址开始(0A30H)连续执行程序。输入始地址后按EXEC键。 3在键盘上输入数字在显示器上显示,第一位为0表示正转,为1表示反转,第二位0—F为转速等级,第三到第六位设定步数,设定完按EXEC键,步进电机开始旋转。
步进电机控制程序(源文件名:H511S.ASM) ORG 0A30H ;不是执行键转 MONIT: MOV SP,#50H LCALL DISP ;调显示子程序
MOV A,7AH MOV 7EH,#00H ;设步进电
机正转标志显示在第一位 ;取步距数送R6、R7
ANL A,#0FH MOV 7DH,#02H ;设步进
SWAP A 电机速转控制值显示在第二位
ADD A,79H MOV R0,#7CH ;设步距数
MOV R6,A 值为8888,显示在第三到第六位
MOV A,#08H MOV A,7CH MOV R4,#04H ANL A,#0FH SWAP A MONIT1: MOV @R0,A ADD A,7BH DEC R0 MOV R7,A DJNZ R4,MONIT1 MOV A,7EH
CJNE A,#00H,MONIT4 MOV A,#7EH ;置显示位置标志
MOV DPTR,#1FFFH ;判转动方向 MOVX @DPTR,A MONIT3: MOV P1,#03H ;顺时针 MOV 76H,#00H 转 MOV 77H,#00H LCALL DELAY0 KEYDISP0:LCALL KEY LCALL MONIT5
MOV P1,#06H ;调显示键扫子程序
JC DATAKEY LCALL DELAY0
LCALL MONIT5 ;转数字键处理
AJMP MONIT2 MOV P1,#0CH
LCALL DELAY0 ;转功能键处理
DATAKEY:LCALL DATAKEY1 LCALL MONIT5 DB 79H,7EH MOV P1,#09H SJMP KEYDISP0 LCALL DELAY0 MONIT2: CJNE A,#16H,KEYDISP0 LCALL MONIT5
SJMP MONIT3
MONIT4:MOV P1,#09H ;逆时针转 LCALL DELAY0 LCALL MONIT5 MOV P1,#0CH DJNZ R6,KEY1 SJMP KEY0 KEY2: MOV R6,A MOV A,R7 MOV @R0,A MOV A,R6 KEYEND: RET
KEYDISP:LCALL DISP LCALL KEYSM ;调键扫子程序 MOV R4,A ;键消抖 MOV R1,#76H MOV A,@R1 MOV R2,A INC R1 MOV A,@R1 MOV R3,A XRL A,R4 MOV R3,04H MOV R4,02H JZ KEYDISP1 MOV R2,#88H MOV R4,#88H KEYDISP1: DEC R4 MOV A,R4 XRL A,#82H JZ KEYDISP2 MOV A,R4 XRL A,#0EH JZ KEYDISP2 MOV A,R4 ORL A,R4 JZ KEYDISP3 MOV R4,#20H DEC R2 LJMP KEYDISP5
KEYDISP3: MOV R4,#0FH KEYDISP2: MOV R2,04H MOV R4,03H
KEYDISP5: MOV R1,#76H
MOV A,R2 MOV @R1,A INC R1 MOV A,R3 MOV @R1,A MOV A,R4 CJNE R3,#10H,KEYDISP4 KEYDISP4: RET DISP: SETB 0D4H ;显示子程序 MOV R1,#7EH MOV R2,#20H MOV R3,#00H DISP1: MOV DPTR,#0FF21H MOV A,R2 MOVX @DPTR,A MOV DPTR,#DATA1 MOV A,@R1 MOVC A,@A+DPTR MOV DPTR,#0FF22H MOVX @DPTR,A DISP2: DJNZ R3,DISP2 DEC R1 CLR C MOV A,R2 RRC A MOV R2,A JNZ DISP1 MOV A,#0FFH MOV DPTR,#0FF22H MOVX @DPTR,A CLR 0D4H RET DATA1:DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H, 0F8H,80H,90H DB
88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH KEYSM: SETB 0D4H ;键扫子程序 MOV A,#0FFH MOV DPTR,#0FF22H MOVX @DPTR,A ;关显示 KEYSM0: MOV R2,#0FEH MOV R3,#08H MOV R0,#00H
KEYSM1: MOV A,R2 ;使第一列为0 MOV DPTR,#0FF21H MOVX @DPTR,A NOP RL A MOV R2,A MOV DPTR,#0FF23H MOVX A,@DPTR CPL A ;读行值 NOP NOP NOP ANL A,#0FH JNZ KEYSM2 INC R0 ;无键继续扫描下一行 DJNZ R3,KEYSM1 SJMP KEYSM10
KEYSM2: CPL A ;有键,计算键值 JB 0E0H,KEYSM3 MOV A,#00H SJMP KEYSM7
KEYSM3: JB 0E1H,KEYSM4 MOV A,#08H SJMP KEYSM7
KEYSM4: JB 0E2H,KEYSM5 MOV A,#10H SJMP KEYSM7
KEYSM5: JB 0E3H,KEYSM10 MOV A,#18H KEYSM7: ADD A,R0 CLR 0D4H CJNE A,#10H,KEYSM9 KEYSM9: JNC KEYSM10 MOV DPTR,#DATA2 MOVC A,@A+DPTR KEYSM10: RET DATA2: DB
07H,04H,08H,05H,09H,06H,0AH,0BH ;键值表(0—F) DB 01H,00H,02H,0FH,03H,0EH,0CH,0DH EN
四、实验小结
通过本次实验学习P3口、P1口简单使用。学习延时程序的编写和使用。了解步进电机控制
的基本原理。掌握步进电机转动编程方法。
相关推荐: