Red de conocimiento informático - Conocimiento informático - Ayúdame a explicar este programa de ajuste de velocidad del motor de control PWM.

Ayúdame a explicar este programa de ajuste de velocidad del motor de control PWM.

No conoces ese lugar, ¿puedes ser más específico? Siento que el programa ha recibido muchas críticas. ?

Lo siguiente es más complicado. Hablemos brevemente:

Primero, la aceleración y desaceleración sirven para aumentar o disminuir el ancho del pulso y cambiar la velocidad del motor. El ancho del pulso está determinado por la siguiente fórmula

1. El estado de CLK=0 continúa, que está determinado por el tiempo de T1. continúa, lo cual está determinado por la decisión de tiempo (T0 -T1);

2 ¿Interrupción del temporizador TH0=0x00? ;? TL0=0x00? ;

Los temporizadores 1 y T0 funcionan en modo 1. Después de que comienza el temporizador T0, los valores de conteo asignados por TH0 y TL0 comienzan a aumentar. Después de alcanzar 0XFFFF, ¡T0 se interrumpe!

2. Después de que T0 se desborde (interrupción), el contador T0 no se detendrá automáticamente, por lo que es necesario reasignar el temporizador T0. ¡Después de la asignación, ingrese al siguiente ciclo de inventario!

3. En el ejemplo, el temporizador T0 comienza a contar desde 0x0000, es decir, ¡se interrumpe después de agregar 0xFFFF! ¿Cuándo es el horario de reserva? (0xFFFF?/?(?Período de oscilación del cristal/12?)))? segundos, si el oscilador de cristal es de 12M, ¡el tiempo es de 65,536ms!

Analice el programa, comenzando desde principal, primero dibuje la secuencia de tiempo de inicio:

¡Como se muestra a continuación!

Como se puede ver en el diagrama de tiempos, CLK es una salida PWM,

1, y el estado de CLK=0 continúa, que está determinado por el tiempo de T1;

2. El estado de CLK=1 continúa, que está determinado por el tiempo de t0 a T1;

Y luego qué. ¿principal? ¿Mientras (1) está en función? La segunda parte es la implementación del programa de ajuste PWM.

1. ¿Y si? (K3==0)? //El nivel alto gira en sentido contrario a las agujas del reloj, el nivel bajo gira en el sentido de las agujas del reloj.

{

ZF = 0

}

Otros

{

ZF = 1;

}

Según el programa, si el programa es controlado por el motor, ZF = 0 cuando el interruptor K3 está en 0, girar en el sentido de las agujas del reloj, ZF = 1 cuando el interruptor K3 es 1, gírelo en sentido antihorario.

2.?

si(K1==0)? //Pulsa la tecla del acelerador.

{

Retraso(1);

pwml;? //Los cuatro dígitos inferiores del valor de ajuste de ancho más 1

if(PWML==0x00)

{

pwmh;

}?//Los cuatro dígitos superiores del valor de ajuste de ancho más 1

If? (PWMH==0xFF)? //Valor máximo

{

PWMH = 0xFE

}

}

Tecla K1, tecla acelerador , aumente el tiempo de inicio del temporizador T1, es decir, reduzca el tiempo de conteo de T1 y el tiempo de CLK=0.

3.

si(K2==0)? //Presiona la tecla de desaceleración.

{

Retraso(1);

PWML -? ;? //Los cuatro bits inferiores del valor de ajuste de ancho se restan en 1.

¿Y si? (PWML==0x00)

{

PWMH-;

}//Los cuatro dígitos superiores del valor de ajuste de ancho se reducen en 1.

¿Y si? (PWMH==0x00)

{

PWMH = 0x 01;

}?//Valor mínimo

}

Tecla K2, tecla de desaceleración, reduce el tiempo de inicio del temporizador T1, es decir, aumenta el tiempo de conteo de T1 y aumenta el tiempo de CLK=0.

4. Independientemente de la aceleración o desaceleración, el tiempo de T0 permanece sin cambios y la duración total de CLK=0 y CLK=1 permanece sin cambios. (Tclk0 Tclk1)=T0? }.

¡El programa no es difícil y los dibujos tampoco son difíciles de dibujar!