Introducción a la programación pwm
1. El oscilador de cristal del microcontrolador es de 12MHz y el período de salida es de 1s.
2. Se utilizan dos interruptores para controlar el aumento o disminución del ciclo de trabajo, que se divide en 20 niveles.
Para solucionar este problema, se diseña un circuito experimental simple:
Puerto P2 con 8 salidas de forma de onda PWM;
Se conectan dos botones a /INT1 y /INT0. , ajuste el ciclo de trabajo;
Dos pantallas digitales BCD están conectadas al puerto P0 para mostrar el nivel del ciclo de trabajo actual.
Durante el experimento, puedes utilizar un osciloscopio para observar la salida de la forma de onda desde el puerto P2.
Si aumentas la frecuencia de la forma de onda PWM, también puedes observar el efecto de atenuación con LED. Actualmente sólo se cambia el tiempo de flash.
# incluir & ltreg52.h & gt
Unsigned int a, b
// -
void main()
{
TMOD = 0x 01; //T0 Modo de temporización 1
TH0 = (65536-50000)/256 //50ms @ 12MHz
TL0 =(65536-50000)% 256;
TR0 = 1;
ET0 = 1;
EX0 = 1; 1;
IT0 = 1;
b = 10; ;
while(1);
}
// -
Tiempo no válido 0() interrupción 1 p>
{
TL0 = (65536-50000)% 256
TH0 = (65536-50000)/256; //50 ms a 12 MHz
a++;
if(a = = 20)a = 0; //Ajusta el período aquí.
If (a & ltb)P2 = 0x ff; //Ajusta el ciclo de trabajo aquí.
De lo contrario P2 = 0x 00;
P0 =((b/10)& lt;& lt4)+b % 10; //Mostrar nivel de ciclo de trabajo
}
// -
void X0_INT() interrupción 0
{
b++;
If (b & gt19)b = 19 //El nivel máximo del ciclo de trabajo es 19.
}
// -
void X1_INT() interrupción 2
{
B-;
if(b & lt; 1)b = 1; //El nivel mínimo del ciclo de trabajo es 1.
}