单片机课程设计
开 始 初 始 化 显 示 N 启动开关为0? Y 停止计时器 N 速度值为0? Y 停止计时器 启动计时器 延 时 图12主程序流程图
5.3定时中断设计
步进电机的转动主要是给电机各绕组按一定的时间间隔连续不断地按规律通入电流,步进电机才会旋转,时间间隔越短,速度就越快。在这个系统中,这个时间间隔是用定时器重复中断一定次数产生的,即调节时间间隔就是调节定时器的中断次数,因而在定时器中断程序中,要做的工作主要是判断电机的运行方向、发下一个脉冲,以及保存当前的各种状态。程序流程图如图13所示。
15
单片机课程设计
T0中断入保护现N 中断次数-1=0? Y 读方向指发速度脉重送相关状恢复现中断返图13 定时中断程序 5.4外部中断设计
外部中断所要完成的工作是根据按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,也就是改变了电机的转速。速度增加按钮S2为INT0中断,其程序流程为原数据,当值等于7时,不改变原数值返回,小于7时,数据加1后返回;速度减少按钮S3,当原数据不为0,减1保存数据,原数据为0则保持不变。程序流程图如图
16
单片机课程设计
14所示。
外部中断入口 保护现场 延时去抖 速度=上或限值? Y N N 速度值±1 按钮是否弹起? N Y 恢复现场 中断返回 图14外部中断程序流程图
5.5总程序:
SPEED EQU 10H
17
单片机课程设计
FX EQU 11H COUNT EQU 12H ORG 0000H AJMP MAIN ORG 0003H AJMP UP ORG 0013H AJMP DOWN ORG 000BH AJMP ZDT0 ORG 0030H MAIN:MOV SP,#60H
MOV TMOD,#01H MOV TH0,#0CFH MOV TL0,#2CH MOV COUNT,#01H SETB ET0 CLR IT0 CLR IT1 SETB EX0 SETB EX1 SETB EA MOV R1,#11H MOV SPEED,#00H MOV FX,#00H XIANS:MOV A,SPEED
MOV DPTR,#LED MOVC A,@A+DPTR MOV P2,A
18
单片机课程设计
MOV A,FX CJNE A,#11H,ELS MOV P0,#0F9H AJMP QD
ELS:CJNE A,#00H,ZHENG
MOV P0,#0C0H AJMP QD
ZHENG:MOV P0,#0BFH QD: JB P3.4,DD
CLR TR0 MOV P0,#0C0H MOV P2,#0C0H MOV SPEED,#00H MOV FX,#00H AJMP QD DD:MOV A,SPEED
JNZ GO CLR TR0 AJMP QD GO:SETB TR0
ACALL DELAY AJMP XIANS DELAY:MOV R6,#10 DEL1:MOV R7,#250 HERE1:DJNZ R7,HERE1
DJNZ R6,DEL1 RET ZDT0:PUSH ACC
PUSH DPH
19