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: p>
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:
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 p>
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 p>
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 CHECKFULL: 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; p>
TRUE2:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#02H
CLR OK
AJMP LOOP2 p>
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 p>
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
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