Red de conocimiento informático - Espacio del host - 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?

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?

Según DAC 0832 = sin[j] se puede ver que el valor de la matriz se asigna directamente al DAC. En la matriz, el valor máximo es 127, el valor mínimo es 0 y el rango es 0 ~ 127. La amplitud de voltaje que desea depende del circuito. Supongamos que los datos 255 (0xFF) generan 5 V y los datos 0 generan 0 V, entonces la amplitud de voltaje correspondiente a 0 ~ 127 es 0 ~ 2,5 v.

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.