Red de conocimiento informático - Conocimiento de la instalación - Buscando un programa en lenguaje C sobre el zumbador de un microcontrolador. Si es bueno y factible, obtendré puntos extra ~.

Buscando un programa en lenguaje C sobre el zumbador de un microcontrolador. Si es bueno y factible, obtendré puntos extra ~.

6. ?Generador de alarmas?

1. ?Tarea experimental?

Utilice P1.0 para emitir señales de audio de 1 KHz y 500 Hz para activar el altavoz como señal de alarma. Se requiere que la señal de 1 KHz suene durante 100 ms y la señal de 500 Hz suene durante 200 ms, alternativamente. , y P1.7 está conectado a un interruptor de Control, cuando el interruptor está cerrado, suena la señal de alarma, cuando el interruptor está desconectado, la señal de alarma se detiene y se programa el programa.

?

2. ?Diagrama esquemático del circuito?

Figura 4.6.1?

3. ?Conexión de hardware en la placa del sistema?

(1. Conecte el puerto P1.0 en el área "Sistema SCM" al puerto SPK IN en el área "Módulo de amplificación de audio" con un cable;?

(2.? Conecte un altavoz de 8 ohmios o 16 ohmios al puerto SPK?OUT en el área "Módulo de amplificación de audio";?

(3.? Conecte el P1.7 /RD en el área "Sistema MCU" al puerto K1 en el área "Interruptor de palanca de cuatro direcciones";?

4. ¿Contenido de programación?

(1.? ¿Método de generación de señal?

El período de la señal de 500 Hz es de 2 ms y el nivel de la señal cambia cada 1 ms. El período de la señal de 1 KHz es de 1 ms y el nivel de la señal cambia cada 500 us.

5. ?Diagrama de bloques del programa?

Figura 4.6.2?

6. ?Programa fuente de ensamblaje

FLAG?BIT?00H

ORG?00H

INICIO:?JB?P1.7,INICIO

JNB?FLAG,NEXT

MOV?R2, #200

DV:?CPL?P1.0

LCALL?DELY500

LCALL?DELY500

DJNZ ?R2, DV

CPL?FLAG

SIGUIENTE: ?MOV?R2, #200

DV1: ?CPL?P1.0

LCALL?DELY500

DJNZ?R2, DV1

CPL?FLAG

SJMP?START

DELY500:?MOV?R7 , #250

LOOP:?NOP

DJNZ?R7, LOOP

RET

END

7 .?Programa fuente en lenguaje C

#include?lt;AT89X51.Hgt;

#include?lt;INTRINS.Hgt;

bit?flag;

¿sin firmar? char?count;

void?dely500(void)

{

unsigned?char?i;

for(i=250 ;igt;0;i--)

{

_nop_();

}

}

void?main(void)

{

mientras(1)

{

si (P1_7==0)

{

for(count=200; countgt; 0; count--)

{

P1_0=~P1_0;

dely500();

}

for(count=200; countgt; 0; count--)

{

P1_0=~P1_0;

dely500();

dely500()

}

}

}

}