Red de conocimiento informático - Material del sitio web - Cómo utilizar el microcontrolador 51 para generar ondas PWM

Cómo utilizar el microcontrolador 51 para generar ondas PWM

El método de utilizar dos temporizadores es utilizar el temporizador T0 para controlar la frecuencia y el temporizador T1 para controlar el ciclo de trabajo. La idea general de programación es la siguiente: la interrupción del temporizador T0 hace que un puerto I0 genere un nivel alto, y el temporizador T1 se inicia durante la interrupción del temporizador T0, y este T1 hace que el puerto IO genere un nivel bajo, cambiando así la sincronización. La frecuencia se puede cambiar cambiando el valor inicial del temporizador T0, y el ciclo de trabajo se puede cambiar cambiando el valor inicial del temporizador T1.

Cuando utilice un temporizador (como el temporizador T0), primero debe determinar el período de PWM T y el ciclo de trabajo D. Después de determinarlos, puede usar el temporizador para generar una base de tiempo t, como El tiempo en el que el temporizador se desborda n veces es el tiempo de alto nivel de PWM, entonces D*T=n*t De manera similar, se puede encontrar cuántas bases de tiempo n' se necesitan para el tiempo de bajo nivel de PWM.

Debido a que aquí estamos generando PWM con un período de 1 ms (1000 HZ), la base de tiempo de la interrupción se puede configurar en 0,01 ms, y luego 100 interrupciones serán 1 ms. En la subrutina de interrupción, puede configurar una variable como el tiempo. En la subrutina de interrupción, hay tres declaraciones importantes: 1. Cuando el tiempo> = 100, el tiempo se borra (esta declaración garantiza que la frecuencia es 1000 HZ), 2. Cuando time Cuando >n (n debe variar entre 0 y 100), deje que el puerto de E/S correspondiente del chip único emita un nivel alto. Cuando time < n, deje que el puerto de E/S correspondiente del chip único emita un nivel bajo. En este momento, el ciclo de trabajo es %n.

Materiales de referencia: /link?url=10ZbI3DZeY5Ij6eLEOpWhZ1rcFqZXote9xKqxZhyudfWgkfZhRmfe-Q74XVCQtStw6zJYtmlveX_O4_p3CkaHS-KIbWcgOIwQVMGTOGUdui