El control de velocidad PWM del motor CC basado en microcontrolador (requiere el código del microcontrolador) es rápido.
; la luz LED de control PWM se ilumina y se desvanece gradualmente*
; use el control del temporizador para generar una onda PWM con ciclo de trabajo variable*
; el valor de PWM aumenta, el ciclo de trabajo disminuye y la luz LED se atenúa gradualmente. *
; Presione K2, el valor de PWM disminuye, el ciclo de trabajo aumenta y la luz LED se ilumina gradualmente. *
; Cuando el valor de PWM aumenta al valor máximo o disminuye al valor mínimo, el zumbador emitirá una alarma *
; Recursos: puerto p0, luz indicadora de 8 vías. p1.4, p1.5 botón de control de brillo (botón de puerto) p3.7 alarma de altavoz pequeño*
;——————
PWM EQU 7FH Valor inicial de asignación de PWM;
p>
OUT EQU P0; Interfaz para 8 luces LED
INCKEY EQU P1.4, tecla de aumento de valor PWM.
DECKEY EQU P1.5; K2, tecla de reducción de valor PWM.
BEEP EQU P3.7
;——————
ORG 0000H
INICIO SJMP
ORG 000BH
SJMP INTT0
ORG 001BH
SJMP INTT1
ORG 0030H
;——— ———
;Programa principal
;El temporizador 0 funciona en modo 1 y el temporizador 1 funciona en modo 2.
;——————
INICIO:
MOV SP, #30H
MOV TMOD, #21H
MOV TH1, PWM; ajuste de ancho de pulso
MOV TL1, #00H
MOV TH0, #0FCH retardo constante
MOV TL0, # 066H; Ajuste de frecuencia
SETB EA
SETB ET0
SETB ET1
SETB TR0
BUCLE: MOV A, PWM;
JB INCKEY, LOOP1; ¿Está presionada la tecla de aumento?
CALL DELAY; Retraso en rebote
JB INCKEY, LOOP1
CJNE A, #0FFH, PWMINC;
CALL BEEP_BL ; Sí, alarma sonora.
SJMP LOOP
PWMINC:
INC PWM; ajusta el ancho del pulso (el ancho del pulso disminuye)
SJMP LOOP
LOOP1: JB DECKEY, LOOP2; ¿Está presionada la tecla de disminución?
CALL DELAY; Retardo de rebote
JB DECKEY, LOOP2
CJNE A, #02H, PWMDEC;
CALL BEEP_BL ; Sí, alarma sonora.
SJMP LOOP
PWMDEC:
DEC PWM; ajustar el ancho del pulso (el ancho del pulso aumenta)
LOOP2: SJMP LOOP
;——————
;Subrutina de servicio de interrupción T0 (frecuencia)
;Interrupción del temporizador de control 1
;————
INTT0:
CLR TR1
MOV TH0, #0FCH; retardo constante de 1ms
MOV TL0, #066H Ajuste de frecuencia <; /p>
MOV TH1, PWM
SETB TR1
MOV OUT, #00H; iniciar salida
RETI
; ----
; subrutina de servicio de interrupción T1 (ancho de pulso)
Control de ancho de pulso PWM
;----
INTT1:
CLR TR1; Fin del ajuste de ancho de pulso
MOV OUT, #0FFH; Fin de salida
RETI
; -----
; subrutina de retraso de 10 ms
;----
RETARDO:
MOV R6, #50
DELAY1:
MOV R7, #100
DJNZ R7, $
DJNZ R6, DELAY1
RET
;----
;Subrutina de sonidos de zumbador
;---
BEEP_BL:
p>MOV R6, #100
BL1: LLAMADA BL2
CPL BEEP
DJNZ R6, BL1
MOV R5, #25
CALL DELAY2
RET
BL2: MOV R7, #180
BL3: NOP
DJNZ R7 , BL3
RET
DELAY2: ; Retardo R5×10MS
MOV R6, #50
BL4: MOV R7, #100
BL5: DJNZ R7, BL5
DJNZ R6, BL4
DJNZ R5, DELAY2
RET
;---
FIN