Red de conocimiento informático - Material del sitio web - El control de velocidad PWM del motor CC basado en microcontrolador (requiere el código del microcontrolador) es rápido.

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