Red de conocimiento informático - Computadora portátil - Codificación de fuente musical con microcontrolador 51

Codificación de fuente musical con microcontrolador 51

La función realiza la recopilación de señales de audio a través del chip ADC0832, las convierte en señales digitales para el microcontrolador y luego utiliza la modulación de ancho de pulso PWM para controlar la altura del par de columnas de agua de la bomba de agua

//Comprenda primero el protocolo serial de conversión digital del módulo ADC0832, lea esta función nuevamente, principalmente para comprenderla de acuerdo con el diagrama de tiempos. Esta función simula el protocolo serial de 0832

/. / 1 1 0 canal

// 1 1 1 canal

carácter sin firmar ad0832read(bit SGL, bit ODD)

{undefinido

carácter sin firmar i=0, valor=0, valor1 =0;

SCL=0

DO=1

CS=0; Inicio

SCL=1; //El primer flanco ascendente

SCL=0

DO=SGL

SCL=1; ; //El segundo flanco ascendente

SCL=0;

DO=ODD;

SCL=1;

SCL=0; // El tercer flanco descendente

DO=1;

for(i=0; ilt; 8; i )

{undefinido

SCL=1;

SCL=0; //Comienza a recibir datos desde el cuarto flanco descendente

valuelt;lt;=1;

if( DO)

valor;

}

for(i=0; ilt; 8; i)

{//recibiendo datos de la prueba escolar

valor1gt;gt;=1;

if(DO)

valor1 =0x80;

SCL=1;

SCL=0;

}

CS=1; >

SCL=1 ;

if(value==value1)//Comparar con los datos de verificación, devolver los datos si son correctos, de lo contrario devolver 0

valor de retorno ;

devuelve 0 ;

}

void penquan() //Regulación de voltaje PWM

{undefinido

date=ad0832read(1, 0); //Leer valor del anuncio

h1=(255-date); //Convertir

out=0;

delay(h1 );

if(h1gt;70) led1=1; else led1=0; //la comparación del valor del anuncio enciende la lámpara correspondiente

if(h1gt;80) led2=1 ; else led2=0; //la comparación del valor del anuncio enciende la luz correspondiente

if(h1gt;90) led3=1; la comparación del valor del anuncio enciende la luz correspondiente

p>

if(h1gt;100) led4=1; else led4=0; //La comparación del valor del anuncio enciende la lámpara correspondiente

if (h1gt;110) led5=1; else led5= 0; //la comparación del valor del anuncio enciende la luz correspondiente

if(h1gt;115) led6=1; comparación enciende la luz correspondiente

if(h1gt; 120) led7=1; else led7=0;

La comparación de valores enciende la luz correspondiente

if(h1gt; 130) led8=1; else led8=0; //la comparación de valores de anuncios enciende la luz correspondiente

out=1; //Apagar la bomba de agua

delay(date); //Tiempo de retraso

}

void main()//Función principal

{undefinido

mientras(1)

{undefinido

penquan(); //número dado de retrasos

}

}

(Reimpreso en CSDN)