¿Cómo utilizar el temporizador del microcontrolador 51 para simular la onda PWM?
PWM significa "modulación de ancho de pulso"
PWM tiene dos parámetros más básicos: frecuencia y ciclo de trabajo.
La frecuencia es el número de cambios de nivel alto-bajo por segundo, y el ciclo de trabajo se refiere a la relación proporcional entre el tiempo de retención de alto nivel y todo el ciclo de pulso.
Para la simulación con un temporizador, el método más básico es utilizar un puerto IO para realizar un bucle y establecer su valor de salida en nivel alto y nivel bajo.
Entonces el temporizador juega un papel de sincronización aquí y requiere dos tiempos: duración de alto nivel y duración de bajo nivel.
Siempre que estos dos tiempos estén sincronizados, se puede implementar PWM básico.
Para lograr la sincronización de dos tiempos, existen dos soluciones:
1. Solución de temporizador único int?i;//variable de sincronización
timer1(){ // Función de interrupción del temporizador 1 // El ejemplo aquí es que el nivel cambia cada 100 ciclos de tiempo mínimo, es decir, parpadea una vez cada 200 ciclos de tiempo mínimo i++ if?(i==200){
i=0;//Reset variable, completar un ciclo, prepararse para el siguiente ciclo} else?if?(i==100){
LED_OFF;//Apagar la luz} else?if ?(i==0){
LED_ON;//Enciende la luz}
}
2. Esquema de temporizador dual//Solo necesitas diseño dos El valor inicial y el período del temporizador se pueden usar para completar el encendido y apagado alternativo
timer1(){//Función de interrupción del temporizador 1//El ejemplo aquí cambia el nivel cada 100 ciclos de tiempo mínimos Es decir, LED_ON parpadea una vez cada 200 ciclos de tiempo mínimo;//Enciende la luz
}
timer2(){ LED_OFF;//Apaga la luz
.}