Quiero usar un microcontrolador 51 para generar una onda sinusoidal de 1 kHz. ¿Cómo escribir un programa y cómo comprobar su amplitud y frecuencia en el siguiente programa?
La frecuencia depende del retraso de delay(), que Está relacionado con el reloj del microcontrolador, por lo que es imposible ver su programa.
Además:
=================================
(1) El valor de la matriz SIN[] se puede calcular simplemente usando EXCEL. Como se muestra en la imagen, A2 comienza a llenarse hacia abajo con 0, 1, 2, 3, 4... hasta 359. Ingrese la fórmula en B2 (como se muestra en la imagen) y la fórmula se copiará hasta B360. El valor calculado es el valor de la matriz SIN[] anterior. Esto es más preciso.
¿Y luego qué?
for(j = 0;j & lt360;j++){
DAC 0832 = sin[j];
delay();
}
Se puede obtener salida de onda sinusoidal. Sin embargo, la frecuencia con retraso () no es precisa y solo se puede determinar mediante prueba y error.
(3) Se pueden utilizar interrupciones programadas. El tiempo de interrupción es 1/(360*1000) segundos. En cada rutina de interrupción:
DAC 0832 = sin[j++]
if(j == 360)j = 0
Esto da un seno de 1000 Hz; ola.