logo资料库

51单片机的两相四线步进电机控制系统.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
基于 51 单片机的两相四线步进电机控制系统(汇编版) 关于步进电机的工作原理大家可以在网上查查,这里主要介绍的是两相四线 的步进电机控制,采用的是四拍方式。 要求如下: 1、有开机停止键。按第奇数次时为开机,第偶数次为停止。此例选择 P3.3 口。 2、有加速键。加速范围为 1~9 档。 3、有减速键。减速范围为 1~9 档。 具体实施方案: 采用 L298N 驱动板驱动步进电机,采用如下相序: 表 1:正转环形脉冲分配表 步数 P0.0 P0.1 A 1 0 0 1 B 1 1 0 0 1 2 3 4 P0.2 /A 0 1 1 0 P0.3 /B 0 0 1 1 源程序如下: ENA EQU P1.0 ENB EQU P1.1 IN1 EQU P1.2 IN2 EQU P1.3 IN3 EQU P1.4 IN4 EQU P1.5 SWITCH EQU P3.3 FAST EQU P3.6 SLOW EQU P3.5 CYCLENUM EQU 50H TEMP EQU 53H ;存放对应定时循环次数 ;存放按键次数。初值为 5,每按加速叠加 1,按减 速递减
;启动停止标识 MARK EQU 56H LEDBUF EQU 57H ORG 0 AJMP START ;*****************检测是否开启启动电机键*************************** START: MOV P0,#0 ;清显示 SETB MARK ;预启动电机工作,标识为 1 MOV TEMP,#5 ;开始工作于 5Hz MOV CYCLENUM,#01H ;循环 1 次 JNB SWITCH,NEXT ;按键按下? SJMP START ;没有返回继续检测 NEXT: CALL DELAY JNB SWITCH,MAIN ;再次确认按键,不为 1 说明按键按下 SJMP START ;没有按下,继续检测 ;消抖确认 ;*****************开始运行电机*************************************** MAIN: MOV A,TEMP MOV DPTR,#TAB4 MOVC A,@A+DPTR MOV LEDBUF,A CALL DISPLAY LOOP: ;送显示 JB MARK,WORK ;检测运行标识是否为 1,为 1 则继续运行,为 0 则 停止运行 NOTWORK: CLR ENA CLR ENB SJMP START P1,#000010111B WORK: MOV CALL TIMER CALL TESTSTOP MOV CALL TIMER CALL TESTSTOP P1,#000011011B ;步进电机运行方式为两相四拍 ;第二拍
;第三拍 ;第四拍 P1,#000100111B P1,#000101011B MOV CALL TIMER CALL TESTSTOP MOV CALL TIMER CALL TESTSTOP CALL TESTKEY SJMP MAIN ;***************************检测是否有按键按下************************ TESTKEY: ;都没有键按下,则返回 ;FAST 按下,若此时 temp 等于 9,则保持速度不 SETB FAST SETB SLOW NEXT1: JNB FAST,YES2 NEXT2: JNB SLOW,YES3 SJMP RETURN YES2: MOV A,TEMP 变,若小于则加 1 CJNE A,#9,CANFAST DEC A CANFAST: INC A MOV TEMP,A SJMP RETURN YES3: MOV A,TEMP CJNE A,#1,CANSLOW INC A CANSLOW: DEC A MOV TEMP,A RETURN: RET TESTSTOP: SETB SWITCH JNB SWITCH,GO
SJMP ENND GO: CALL DELAY JNB SJMP ENND SWITCH,YESSTOP YESSTOP: CPL MARK ENND: RET ;***********************定时器设置******************* TIMER: ;T1 工作于定时方式 1 MOV TMOD,#10H CALL TIMERSET SETB TR1 SETB EA SETB ET1 ;启动定时器工作 WAIT: JBC TF1,HERE SJMP WAIT HERE: ;定时未到继续等待 DJNZ CYCLENUM,TIMER ;循环次数未满继续定时 MOV A,TEMP MOV DPTR,#TAB3 MOVC A,@A+DPTR MOV CYCLENUM,A RET TIMERSET: MOV A,TEMP MOV DPTR,#TAB1 MOVC A,@A+DPTR MOV TH1,A MOV A,TEMP MOV DPTR,#TAB2 MOVC A,@A+DPTR MOV TL1,A ;获取定时器高位 ;存放至定时器高位 ;获取定时器定位 ;存放至定时器低位 RET ;***********************50ms 延时**********************
DELAY: MOV R0,#100 DL1: MOV R1,#10 DJNZ R1,$ DJNZ R0,DL1 RET ;************显示子程序**************************** DISPLAY: CLR P2.7 CLR P2.6 CLR P2.5 SETB P2.4 MOV P0,LEDBUF RET TAB1: DB 15H,0AH,07H,05H,04H,03H,03H,02H,02H ;关闭高三位,保留个位 H1 ;定时器高位 T TAB2: DB 0B3H,0D9H,3BH,6CH,57H,0A5H,19H,0B6H,69H ;定时器 地位 TL1 TAB3: DB 01H,01H,01H,01H,01H,01H,01H,01H,01H ;循环次数 CY CLENUM TAB4: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;数码显 示 0~9
分享到:
收藏