Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo utilizar el lenguaje C del microcontrolador para escribir el circuito y el código de programa que hace que el timbre emita 7 tonos (preferiblemente con instrucciones).

Cómo utilizar el lenguaje C del microcontrolador para escribir el circuito y el código de programa que hace que el timbre emita 7 tonos (preferiblemente con instrucciones).

Conecte el puerto P1.2 del microcontrolador 51 a un pin del zumbador y conecte el otro pin a tierra. Si el sonido es bajo, agregue un circuito amplificador triodo o conéctelo directamente a UL2003.

/* - */

# include ltreg52.h gt//Incluye archivos de encabezado, ¿generalmente no es necesario modificarlos?

//El archivo de encabezado contiene la definición de registros de funciones especiales.

/* -

Definición del puerto de hardware

- */

sbit spk=p1^2 //Definir la salida de música; port

Temporizador de caracteres sin firmar 0_H, temporizador 0_L, hora

// Solo mamá tiene una buena tabla de datos en el mundo.

código sin signo char MÚSICA[]={ 6, 2, 3, 5, 2, 1, 3, 2, 2, 5, 2, 2, 1, 3, 2, 6, 2, 1 ,5,2,1,

6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1, 2, 1,

6, 1, 1, 5, 2, 1, 3, 2, 1, 2, 2, 4, 2, 2, 3, 3, 2, 1, 5 ,2,2,

5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3,3, 2, 1,

2, 2, 1, 1, 2, 1, 6, 1, 1, 1, 2, 1, 5, 1, 6, 0, 0, 0

};

//Los ocho bits superiores del temporizador del contador de frecuencia de escala

código unsigned char FREQH[]={

0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,

0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC, //1, 2, 3, 4, 5, 6, 7, 8 , I

0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,

0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x Fe, 0xFF,

} ;

//Los ocho bits inferiores del temporizador del contador de frecuencia de escala

código unsigned char FREQL[]={

0x42, 0xC1, 0x17 , 0xB6 , 0xD0, 0xD1, 0xB6,

0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1, 2, 3, 4, 5, 6, 7, 8, I

0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D,

0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16,

};

}; p>

/* -

Función de retardo del usuario, el parámetro de entrada es el carácter sin signo t y no hay valor de retorno.

Unsigned char es una variable que define caracteres sin signo y su rango de valores es

El oscilador de cristal 12M de 0 ~ 255 utilizado aquí es. Utilice componentes para obtener la latencia exacta y la latencia aproximada.

La longitud es la siguiente: T=tx2 5 uS.

- */

void DelayUs2x(carácter sin firmar t)

{

mientras(-t);

}

/* -

Función de retardo de MS, el parámetro de entrada es el carácter sin signo t y no hay valor de retorno.

Unsigned char es una variable que define caracteres sin signo y su rango de valores es

El oscilador de cristal 12M de 0 ~ 255 utilizado aquí es. Utilice componentes para obtener una latencia precisa.

- */

símbolo de retraso nulo (carácter sin firmar t)

{

mientras(t -)

{

//Retraso de aproximadamente 1 milisegundo

retraso 2x(245);

retraso 2x(245);

}

}

/* -

Función de retardo de tiempo

Cada canción tiene un tiempo de 1/4 de tiempo:

Ajuste de 4/4 a 125 milisegundos.

2/4 250 milisegundos

Ajuste 3/4 187 milisegundos.

- */

Retraso no válido (caracter sin firmar)

{

Caracter sin firmar I;

for(I = 0; iltt; i)

Daremus(250);

TR0 = 0;

}

/* -

Interrupción del temporizador 0

- */

void TIM0_ISR() interrupción 1

{

TR0 = 0;

SPK=! SPK;

TH0 = Temporizador 0_H

TL0 = Temporizador 0 _ L

TR0 = 1

}

/* -

Función de procesamiento de canciones

- */

Canción no válida()

{

TH0 = Temporizador 0_H; //Asigna el tiempo del temporizador y determina la frecuencia.

TL0 = Temporizador 0_L;

TR0 = 1; //Activar el temporizador

Retraso(tiempo); //Retrasar el tiempo requerido

}

/* -

Funciones principales

- */

Administrador no válido (no válido)

{

Carácter sin firmar k, I;

TMOD | = 0x 01; //Establece el modo de trabajo 1 del temporizador 0.

EA = 1; //Activar interrupción global

ET0 = 1; //Activar interrupción de tiempo 0

while(1)

{

I = 0;

while(I lt100)

{// La duración de la matriz musical, comienza de nuevo después de cantar.

k =Music[I] 7 *Music[I 1]-1; //Elimina los datos requeridos para la frecuencia de oscilación de la nota

Temporizador 0_H = FREQH[k] ;

Temporizador 0_L = FREQL[k];

Tiempo = música[I 2]; //duración del tiempo

I = I 3 ;

Canción();

}

}

}