Diseñe un contestador automático que permita que 8 personas participen en la competencia al mismo tiempo. Sus números son 0, 1, 2, 3, 4, 5, 6 y 7, cada uno con un botón de respuesta.

Capítulo 1 Análisis funcional del diseño del contestador automático

1.1 Descripción general del contestador automático digital

Todos estamos familiarizados con los contestadores automáticos en muchas situaciones de competencia, primero. Las respuestas por orden de llegada se implementan realmente, lo que permite que el concursante que recibe la pregunta primero responda la pregunta. El contestador automático no sólo pone a prueba la velocidad de reacción del jugador, sino que también requiere que el jugador tenga conocimientos suficientes y cierta cantidad de coraje. Todos los jugadores se encuentran en la misma línea de salida, encarnando el principio de equidad y justicia.

1.2 Tareas y requisitos de diseño

Requisitos básicos:

1. Configure un interruptor para que el host controle la limpieza del sistema (luces de tubo digitales con pantalla numérica). out) y el inicio del timbre.

2. El respondedor tiene las funciones de bloqueo y visualización de datos. Después de que comience la respuesta, si un jugador presiona el botón del contestador automático, el número se bloqueará inmediatamente, el número del jugador se mostrará en el LED digital y el altavoz emitirá un mensaje de audio. Además, el circuito de entrada debe estar bloqueado para evitar que otros jugadores respondan.

Parte de uso:

1. El contestador automático tiene la función de respuesta programada, y el host puede configurar el tiempo de una respuesta (por ejemplo, 30 segundos). Cuando el anfitrión del programa activa el botón "Inicio", el temporizador debe realizar una cuenta regresiva inmediatamente y se muestra en el monitor. Al mismo tiempo, el altavoz emite un sonido breve que dura aproximadamente 0,5 segundos.

2. Los concursantes responden dentro del tiempo establecido. Cuando la respuesta es válida, el cronómetro deja de funcionar. El número del jugador y el tiempo de la respuesta se muestran en el monitor y permanecen hasta que el anfitrión borra el sistema. .

3. Si el tiempo de respuesta programado ha expirado pero ningún concursante responde, la respuesta no será válida. El sistema emitirá una alarma brevemente y bloqueará el circuito de entrada, prohibiendo a los concursantes responder después del tiempo de espera. en la visualización de la hora.

4. Si un jugador infringe las reglas antes de que el anfitrión presione el botón de inicio, el sistema emitirá una alarma y el LED mostrará el número del jugador ilegal y FF hasta que el anfitrión presione el botón de detener.

Capítulo 2 Demostración de la solución del dispositivo contestador

Hay varias formas de implementar el dispositivo contestador, que se realizan mediante la construcción de circuitos con componentes electrónicos puros, como codificadores de prioridad, pestillos, y 555 temporizadores, etc., los dispositivos electrónicos puros se implementan sin participación de software, y la depuración es simple, pero no es fácil de expandir y modificar, y la estructura del circuito es compleja, lo que dificulta la depuración. Y la construcción real requiere mucho tiempo y mano de obra, y la soldadura es propensa a errores. Entonces, pensé en usar un microcontrolador para implementarlo. El microcontrolador es de tamaño pequeño, de precio bajo, fácil de aplicar, estable y confiable. El microcontrolador entrega muchas tareas a la programación de software, simplificando enormemente los circuitos de hardware periféricos y haciendo que la implementación de circuitos periféricos sea simple y conveniente. Dado que el microcontrolador en sí no tiene la función de compilar y probar software, necesitamos usar otro software para compilar y "grabar" el programa compilado en el microcontrolador.

En el diseño de circuito real, primero es necesario probar el circuito y el programa compilado a través de un software de simulación para verificar si el diseño del circuito periférico es razonable, si la compilación del software es correcta y si el software y el hardware Los circuitos pueden funcionar juntos normalmente. Implementar con precisión las funciones diseñadas. Si la prueba pasa y no hay problemas con la simulación del circuito y las funciones se pueden realizar completamente, puedes realizar el trabajo de soldadura en la placa. Bajo la guía del profesor, elegí el software de simulación de microcontroladores proteus6.9 y keil de uso común para la simulación.

Capítulo 3 Diseño de circuitos de hardware

3.1 Diseño general

De acuerdo con las funciones básicas del contestador automático, se pueden diseñar los siguientes circuitos periféricos del microcontrolador:

Figura 3-1 Diseño general

Como se muestra en la Figura 3-1, P3.0 es el inicio de la respuesta, P3.2 es para detenerse, P1.0-P1.7 es la entrada de respuesta de ocho vías y el puerto de selección de segmento de tubo digital P0, seleccione los 3 bits inferiores del puerto P2 y la salida del zumbador (reemplazado por una luz verde) es el puerto P3.6. P3.2 es el tiempo más 1 ajuste y P3.3 es el tiempo menos 1 ajuste.

3.2 Circuito de oscilación externo

Figura 3-2 Circuito de oscilación externo

Generalmente se utiliza un oscilador de cristal de cuarzo. En este circuito, el oscilador comienza a oscilar después de un retraso de encendido de aproximadamente 10 ms, y se genera una señal de reloj de onda sinusoidal con una amplitud de aproximadamente 3 V en el pin XTAL2. La frecuencia de oscilación está determinada principalmente por la frecuencia del cuarzo. oscilador de cristal.

Los dos condensadores C1 y C2 del circuito tienen dos funciones: una es ayudar al oscilador a comenzar a oscilar y la otra es ajustar la frecuencia del oscilador. El valor típico de C1 y C2 es 30PF.

3.3 Diseño del circuito de reinicio

El noveno pin RST del microcontrolador es el terminal de reinicio del hardware. Siempre que este terminal permanezca en un nivel alto durante 4 ciclos de la máquina, el reinicio puede realizarse. Después del reinicio, cada estado del microcontrolador se restaura al estado de inicialización y su diagrama de circuito se muestra en la Figura 4:

Figura 3-3 Circuito de reinicio

Reinicio de ambos hardware. y el reinicio de software se utilizan en la solución Función, el reinicio de hardware anterior puede restaurar los valores de los registros y las memorias a sus valores iniciales. La función anterior mencionó que el tiempo de cuenta regresiva requiere una función de memoria. El microcontrolador no se puede restablecer por hardware, por lo que se activa la función de reinicio por software. El restablecimiento parcial en realidad significa que una vez completada la ejecución del programa, el puntero del programa salta a la dirección inicial de ejecución del programa mediante una instrucción de salto.

3.1.4 Diseño del circuito de visualización

El circuito de visualización utiliza un tubo digital de siete segmentos 7SEG-MPX4-CC, que es un cátodo positivo y está iluminado por un nivel alto.

Figura 3-4 Tubo digital catódico de siete segmentos

4.1.5 Diseño del circuito de entrada del botón

El botón de entrada del contestador automático utiliza un botón normalmente abierto interruptor,

p>

Figura 3-5 Botón de respuesta

Estos interruptores normalmente abiertos forman el botón de respuesta. El circuito de hardware es simple y el diseño del programa no es complicado. Siempre que el error generado durante el proceso de pulsación de teclas se elimine en el programa, el fenómeno de las "rebabas" estará bien. El método más utilizado aquí es el método de retardo. Su principio es: debido a que el pulso de "rebaba" generalmente dura poco tiempo, aproximadamente unos pocos ms, y el tiempo de pulsación de la tecla es generalmente mucho más largo que este tiempo, cuando el microcontrolador. detecta el movimiento de pulsación de tecla. Luego retrasa durante un período de tiempo (10 ms aquí) y luego juzga si el nivel mantiene el estado original. Si es así, es un botón válido; de lo contrario, no es válido.

3.1.6 Sonido

Aquí puede usar el programa para controlar la línea del puerto P3.6 del microcontrolador para generar repetidamente un nivel alto o bajo, es decir, generar un cierto frecuencia en la línea del puerto. Una onda rectangular puede emitir un sonido de una determinada frecuencia cuando se conecta a un altavoz. Al utilizar un programa de retardo para controlar la duración de los niveles "alto" y "bajo", se puede cambiar la frecuencia de salida. cambiando así el tono y haciendo que el altavoz emita sonidos diferentes.

Capítulo 4 Diseño del software del sistema

4.1 Diagrama de la estructura del sistema del programa

Después de determinar el circuito del hardware, la programación del software debe coincidir con el hardware para que el software y El hardware se puede combinar. Complete la función deseada. El siguiente diagrama de estructura de software se obtiene del análisis funcional:

Figura 4-1 Diagrama de estructura del sistema de software

4.2 Diagrama de flujo del programa

El programa completo está compuesto principalmente del temporizador T0, temporizador T1, interrupción externa 0 y programa principal.

El temporizador T0 se utiliza para hacer sonar el altavoz. Cuando sea necesario sonar, establezca el indicador de timbre en 1. Invierta P3.7 para cada interrupción. El altavoz sonará y el valor inicial del temporizador. se puede cambiar. Cambiar la frecuencia del altavoz. El diagrama de flujo del proceso del temporizador es el siguiente:

Figura 4-2 Diagrama de flujo del programa de timbre

El temporizador T1 se utiliza para la cuenta regresiva. Cada interrupción es de 50 ms. Es Durante un segundo, el número mostrado disminuye en uno. El diagrama de flujo es el siguiente:

Figura 4-3 Diagrama de flujo de interrupción de cuenta regresiva

La interrupción externa 0 se utiliza para ajustar el tiempo de cuenta regresiva, el diagrama de flujo es el siguiente:

Figura 4- 4 Ajustar el diagrama de flujo del tiempo de respuesta

El programa principal coordina las tres interrupciones para que trabajen juntas para realizar la función de respuesta. El diagrama de flujo es el siguiente:

Figura 4-5 Diagrama de flujo del programa principal

Apéndice:

Código del programa:

P3.0 es comenzar a responder, P3.1 es detener, P1. 0-P1.7 son entradas de respuesta de ocho vías, y el puerto de selección de segmento de tubo digital P0, seleccione los tres bits inferiores de P2 y la salida del zumbador es el puerto P3.6.

ORG 0000H

AJMP PRINCIPAL

ORG 0003H

AJMP INT0SUB

ORG 000BH

AJMP T0INT

ORG 001BH

AJMP T1INT

OK EQU 20H; bandera de inicio de respuesta

RING EQU 22H;

ORG 0040H

MAIN: MOV R1,#0FH; El tiempo de respuesta inicial es 15s

MOV R2,#0AH El tiempo de respuesta inicial es 10s<; /p>

MOV TMOD,#11H; Establecer temporizador/modo 1

MOV TH0,#0F0H

MOV TL0,#0FFH Cuanto mayor sea la frecuencia del sonido, mayor será cuanto más nítido

MOV TH1,#3CH

MOV TL1,#0B0H 50 ms es una interrupción de desbordamiento

SETB EA

SETB ET0;

SETB ET1

SETB EX0

SETB EX1 permite cuatro interrupciones, T0/T1/INT0/INT1

CLR OK

p>

CLR RING

SETB TR1

SETB TR0 Ejecute el temporizador desde el principio para comenzar a mostrar FFF. Si desea volver a contar, restablecer TH1 /TL1 es suficiente.

Programa de consulta:

INICIO: MOV R5,#0BH

MOV R4,#0BH

MOV R3 ,#0BH

ACALL DISPLAY; FFF se muestra cuando no se inicia la respuesta

JB P3.0,NEXT

ACALL DELAY

JB P3 .0, NEXT;Antirrebote, si se presiona la "tecla Inicio", ejecútela hacia abajo; de lo contrario, salte a una consulta de respuesta ilegal

ACALL BARK;sonido de tecla

MOV A, R1

MOV R6,A; Enviar R1->R6, porque el tiempo de respuesta se guarda en R1

SETB OK El indicador de respuesta se utiliza en el programa COUNT para determinar si se consulta la respuesta

MOV R3, #0AH; La respuesta solo muestra el tiempo, el número de llamadas realizadas

AJMP COUNT Ingrese al programa de cuenta atrás, "consulte el programa de respuesta efectivo" en COUNT

SIGUIENTE: JNB P1.0,FALSE1

JNB P1.1,FALSE2

JNB P1.2,FALSE3

JNB P1.3,FALSE4

JNB P1.4,FALSO5

JNB P1.5,FALSO6

JNB P1.6,FALSE7

JNB P1.7,FALSE8

AJMP START

Manejador de respuestas ilegales:

FALSE1: ACALL BARK ; sonido del botón

MOV R3,#01H

ERROR AJMP

FALSE2: ACALL BARK

MOV R3,#02H

p>

ERROR AJMP

FALSE3: ACALL BARK

MOV R3,#03H

ERROR AJMP

FALSE4: ACALL BARK

MOV R3,#04H

ERROR AJMP

FALSE5: ACALL BARK

MOV R3,#05H

ERROR AJMP

FALSE6: ACALL BARK

MOV R3,#06H

ERROR AJMP

FALSE7: ACALL BARK

MOV R3,#07H

ERROR AJMP

FALSE8: ACALL BARK

MOV R3,#08H

ERROR AJMP

Programa de cuenta regresiva (incluido el programa de respuesta válido):

COUNT: MOV R0,#00H; restablece el número de interrupciones del temporizador

MOV TH1,#3CH

p>

MOV TL1,#0B0H; Restablecer temporizador

RECOUNT: MOV A,R6; guarda el tiempo de cuenta regresiva

MOV B,#0AH

DIV AB; divide decenas y obtiene dígitos de unidades/decenas

MOV 30H,A; el dígito de las decenas se almacena en (30H)

MOV 31H,B; almacenado en (31H)

MOV R5,30H toma el lugar de las decenas

MOV R4,31H toma el lugar de las unidades

MOV A,R6

p>

CLR C

SUBB A,#07H

JNC MÁS GRANDE; Salta a MÁS GRANDE si es mayor que 5 segundos y recordará si es menor o igual. a 5 segundos

MOV A, R0

CJNE A,#0AH,FULL corre hacia abajo durante 0,5 s en 1 s

CLR RING

<; p> AJMP CHECK

FULL: CJNE A,# 14H, CHECK ; A los 1s, suena y muestra el número y borra R0, reinicia el temporizador

SETB RING

MOV A,R6

JZ SALIR ; Tiempo completado

<

p> MOV R0,#00H

DEC R6 ; Marca de un segundo menos 1

AJMP CHECK

MAS GRANDE: MOV A,R0

CJNE A, #14H, CHECK ; si corre hacia abajo durante 1 s, de lo contrario salta para verificar "parar/mostrar"

DEC R6 disminuye automáticamente en 1 después de un segundo.

MOV R0,#00H

COMPROBAR: JNB P3.1, SALIR Si presiona la tecla detener para salir

ACALL DISPLAY

JNB P1. 0,VERDADERO1

p>

JNB P1.1,VERDADERO2

JNB P1.2,VERDADERO3

JNB P1.3,VERDADERO4

JNB P1.4,VERDADERO5

JNB P1.5,VERDAD6

JNB P1.6,VERDADERO

JNB P1.7,VERDADERO

AJMP RECOUNT

p>

SALIR: CLR OK ; Si se presiona la "tecla de parada", regresa al principio

CLR RING

ACALL BARK

AJMP START

Procedimiento normal de procesamiento de respuesta:

TRUE1: ACALL BARK sonido de pulsación de tecla

MOV A,R2

MOV R6,A; el tiempo de respuesta R2 obtiene R6

MOV R3,#01H

CLR OK

AJMP LOOP2

TRUE2:ACALL BARK;

MOV A,R2

MOV R6,A

MOV R3,#02H

CLR OK

AJMP LOOP2

TRUE3:ACALL BARK;

MOV A,R2

MOV R6,A

MOV R3,#03H

CLR OK

AJMP LOOP2

TRUE4:ACALL BARK;

MOV A,R2

MOV R6,A

MOV R3,#04H

CLR OK

AJMP LOOP2

TRUE5: ACALL CORTEZA;

MOV A,R2

MOV R6,A

MOV R3,#05H

CLR OK

AJMP LOOP2

TRUE6: ACALL BARK;

MOV A,

R2

MOV R6,A

MOV R3,#06H

CLR OK

AJMP LOOP2

TRUE7 : ACALL BARK;

MOV A,R2

MOV R6,A

MOV R3,#07H

CLR OK

AJMP LOOP2

TRUE8: ACALL BARK;

MOV A,R2

MOV R6,A

MOV R3, #08H

CLR OK

LOOP2: AJMP DISPLAY ;Detenga el cronometraje después de responder y espere el retorno

SETB RING

JNB P3. 1 SALIR

AJMP LOOP2

Programa de respuesta incorrecto:

ERROR: SETB RING; p> p>

MOV R4,#0BH; Muestra FF y número de falta

LOOP3: ACALL DISPLAY

JNB P3.1 QUIT1; tecla a pulsar

LOOP3: ACALL DISPLAY

p>

AJMP LOOP3

SALIR1: CLR RING

CLR OK

AJMP START

Programa de visualización:

DISPLAY:MOV DPTR,#DAT1; programa de visualización de tabla de búsqueda, utilizando el puerto P0 como salida del puerto de selección de código de segmento/ P2 bajo tres bits como salida de selección de código de bits

MOV A,R5

MOVC A,@A+DPTR

MOV P2,#01H

MOV P0,A

RETARDO DE LLAMADA

MOV DPTR,#DAT2

MOV A,R4

MOVC A,@ A+DPTR

MOV P2,#02H

MOV P0 ,A

RETARDO DE LLAMADA

MOV A,R3

MOVC A,@A+DPTR

MOV P2,#04H

MOV P0,A

RETARDO DE LLAMADA

RET

DAT1:DB 00H,06h,5bh,4fh,66h,6dh,7dh, 07h,7fh,6fh,00H,71H

;"Destruir","1"," 2","3","4","5","6","7"," 8","9","aniquilación","F"

DAT2:DB 3FH, 06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

RETARDO1: MOV 35H,#08H

BUCLE0: ACALL DISPLAY

DJNZ 35H,LOOP0

RET

p>

Retraso (usado para visualización y antirrebote):

RETARDO: MOV 32H, #12H

BUCLE: MOV 33H, #0AFH

LOOP1 : DJNZ 33H,LOOP1

DJNZ 32H,LOOP

RET

Programa de sonido:

BARK: SETB RING

ACALL DELAY1

ACALL DELAY1

CLR RING sonido del botón

RET

INT0 (programa de ajuste del tiempo de respuesta R1):

INT0SUB:MOV A,R1

MOV B,#0AH

DIV AB

MOV R5,A

MOV R4,B

MOV R3,#0AH

ACALL DISPLAY; primero muestra R1 en los dos LED de tiempo

JNB P3.2, INC0; .2 es la tecla +1s, si se presiona salta a INCO

JNB P3.3,DEC0; P3.3 es la tecla -1s, si se presiona salta a DECO

JNB P3.4, BACK0; P3.4 es la tecla de confirmación, si se presiona, salta a BACKO

AJMP INT0SUB

INC0: MOV A,R1

CJNE A,#63H,ADD0; Si no es 99, agregue 1 a R2. Si llega a 99, establezca R1 en 0 y agréguelo nuevamente

MOV R1,#00H

ACALL DELAY1

AJMP INT0SUB

ADD0: INC R1

ACALL DELAY1

AJMP INT0SUB

DEC0: MOV A, R1

JZ SETR1; Si R1 es 0, R1 se establece en 99,

DEC R1

ACALL DELAY1

AJMP INT0SUB

SETR1: MOV R1,#63H

ACALL DELAY1

AJMP INT0SUB

BACK0: RETI

TO interrupción de desbordamiento (programa de anillo):

T0INT:MOV TH0,#0ECH

MOV TL0,#0FFH

JNB RING,OUT

CPL P3.6; cuando el indicador RING es 1, el puerto P3.6 no está corto y la inversión hace que el altavoz emita un sonido de una determinada frecuencia

OUT: RETI

Interrupción por desbordamiento T1 (programa de temporización):

T1INT: MOV TH1,#3CH

MOV TL1,#0B0H

INC R0

RETI

FIN