Problema de programación del anillo
1.1 Descripción general de Digital Responder
Esto no nos resulta desconocido. Utilizado en muchas competiciones, realmente implementa la primera respuesta, permitiendo al jugador que responde primero la pregunta responderla. El clicker no sólo pone a prueba la velocidad de reacción del jugador, sino que también requiere que el jugador tenga suficiente conocimiento y 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. Configurar un interruptor para que el host controle el reinicio del sistema (las luces del tubo digital se apagan) y responda preguntas. Puesta en marcha del servidor.
2. El transpondedor tiene funciones de visualización y bloqueo de datos. Después de responder la pregunta por primera vez, si un jugador presiona el botón de respuesta, el número se bloqueará inmediatamente, el número del jugador se mostrará en el número LED y el altavoz emitirá un mensaje sonoro. Además, el circuito de entrada debe estar bloqueado para evitar que otros jugadores se apresuren a contestar.
Desempeñando el papel:
1. El contestador automático tiene la función de respuesta cronometrada, y el anfitrión puede configurar el tiempo de una respuesta (por ejemplo, 30 segundos). Cuando el presentador del programa activa el botón "Inicio", se requiere que el cronómetro haga una cuenta regresiva inmediatamente y, usando el monitor, el altavoz emite un sonido corto que dura aproximadamente 0,5 segundos.
2. Los concursantes deberán responder dentro del tiempo establecido, y las respuestas serán válidas. El cronómetro deja de funcionar y el número del jugador y el tiempo de respuesta se muestran en la pantalla 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 por un corto tiempo y bloqueará el circuito de entrada. Después del tiempo de espera, los concursantes tendrán prohibido responder. , y 00 se mostrarán en la pantalla de hora.
4. Si un jugador responde ilegalmente antes de que el anfitrión presione el botón de inicio, el sistema emitirá una alarma y el LED mostrará el número y FF del jugador infractor hasta que el anfitrión presione el botón de detener.
Capítulo 2 Demostración del esquema del transpondedor
Hay muchas formas de implementar el transpondedor. Se implementa utilizando componentes electrónicos puros para construir circuitos, como codificadores de prioridad, pestillos, decodificadores de temporizador 555, etc. La implementación de dispositivos electrónicos puros no implica software y la depuración es simple, pero no es fácil de expandir y modificar. La estructura del circuito es compleja y la depuración es difícil. Los dispositivos electrónicos tienen muchos pines, cuya fabricación requiere mucho tiempo y trabajo, y la soldadura también 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, lo que simplifica enormemente los circuitos de hardware periféricos y hace 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 circuitos real, se debe utilizar software de simulación para probar el circuito y el programa escrito para verificar si el diseño del circuito periférico es razonable, si el software está escrito correctamente y si los circuitos de software y hardware pueden trabajar juntos normalmente y si la función diseñada se puede implementar con precisión. Si la prueba pasa, la simulación del circuito puede realizar completamente la función y la placa se puede soldar. Bajo la guía del profesor, elegí proteus6.9 y el software de simulación de microcontroladores 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, podemos diseñar los siguientes circuitos periféricos del microcontrolador:
El diseño general de la Figura 3-1
Como se muestra en la Figura 3-1, P3.0 indica comenzar a responder, P3.2 indica detener, P1.0-P1.7 indica respuesta de ocho vías y selección de segmento de tubo digital en el puerto P0, seleccione los tres bits inferiores del puerto P2 como posición y el zumbador (cambiado a luz verde) emite 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 genera una señal de reloj de onda sinusoidal con una amplitud de aproximadamente 3 V en el pin XTAL2. Su frecuencia de oscilación está determinada principalmente por la frecuencia del sensor de tiempo. oscilador de cristal.
Los dos condensadores C1 y C2 del circuito tienen dos funciones: una es ayudar al oscilador a comenzar a vibrar 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. Se puede reiniciar siempre que permanezca alto durante 4 ciclos de la máquina. Después del reinicio, todos los estados del microcontrolador se restauran al estado de inicialización. El diagrama del circuito se muestra en la Figura 4:
Figura 3-3 Circuito de reinicio
En esta solución, se reinicia el hardware. se utiliza y funciones de reinicio del software. El reinicio de hardware anterior puede restaurar los valores de los registros y la memoria a sus valores iniciales, y la función anterior menciona que se requiere la función de memoria durante la cuenta regresiva. La premisa para realizar esta función es que el microcontrolador no se puede restablecer a través del hardware, por lo que se configura la función de reinicio por software. El restablecimiento parcial en realidad utiliza una instrucción de salto para saltar el puntero del programa a la dirección inicial de ejecución del programa una vez que se completa la ejecución del programa.
3.1.4 Diseño del circuito de visualización
El circuito de visualización utiliza 7 tubos digitales 7SEG-MPX4-CC, que son * * * cátodos y se iluminan a 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 transpondedor utiliza un interruptor normalmente abierto ,
p>
Figura 3-5. Responda la pregunta primero
Estos interruptores normalmente abiertos forman la clave de respuesta. Siempre que se elimine en el programa el fenómeno de "rebabas" generado durante el proceso de presionar la tecla, el circuito de hardware es simple y el diseño del programa. no complicado. El método más utilizado aquí es el método de retardo. El principio es el siguiente: dado que el pulso de "rebaba" generalmente dura muy poco, unos pocos ms, y el tiempo de pulsación de la tecla es generalmente mucho más largo que este tiempo, después de que el microcontrolador detecta el movimiento. de la tecla, determine si este nivel permanece en su estado original (aquí es 10 ms. Si es así, es una pulsación de tecla válida; de lo contrario, no es válida).
3.1.6 Sonido
Aquí puede usar el programa para controlar la línea del puerto P3.6 del microcontrolador para emitir repetidamente un nivel alto o bajo, es decir, un rectángulo con Se genera una determinada frecuencia en la línea del puerto, el altavoz emite un sonido de una determinada frecuencia y luego controla la duración de los niveles "alto" y "bajo" a través de un programa de retardo, cambiando así la frecuencia de salida, cambiando así. el tono, para que el altavoz emita diferentes sonidos.
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 y la combinación de El software y el hardware pueden completar la función a implementar. Mediante el análisis funcional, se obtiene el siguiente diagrama de estructura del software:
Figura 4-1 Diagrama de estructura del sistema de software
4.2 Diagrama de flujo del programa
El programa completo consta principalmente del temporizador T0, consta del temporizador T1, la interrupción externa 0 y el programa principal.
El temporizador T0 se utiliza para hacer sonar el altavoz. Cuando se requiere una campana, coloque la bandera de campana en una posición e invierta P3.7 para cada interrupción. El sonido proviene del altavoz. Cambiar el valor inicial del temporizador cambia la frecuencia del altavoz. El diagrama de flujo del temporizador es el siguiente:
Figura 4-2 Diagrama de flujo del programa de timbre
El temporizador T1 se utiliza para la cuenta regresiva y cada interrupción es de 50 ms. Cuando la marca de conteo es 20, es 1 segundo y el número mostrado se reduce en 1. 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 Ajuste el diagrama de flujo del tiempo de primera 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
<. p>Apéndice:Código de programa:
P3.0 es el inicio de la respuesta, P3.1 es la parada, P1.0-P1.7 son la entrada de respuesta de ocho vías , la sección del tubo digital selecciona el puerto P0 y P2 baja los tres puertos Seleccione, la salida del zumbador es el puerto P3.6.
ORG 0000H
Gerente General de AJMP
ORG 0003H
AJMP INT0SUB
ORG 000BH
AJMP T0INT
ORG 001BH
AJMP T1INT
OK EQU 20H; bit de indicador de inicio de almacenamiento temporal
Anillo EQU 22H; Bandera de timbre
ORG 0040H
Negocio principal: MOV R1, # 0FH El tiempo de respuesta inicial es de 15 segundos.
MOV·R2,#0AH el tiempo de respuesta inicial es de 10 segundos.
MOV TMOD, # 11H; Sin configurar temporizador/modo 1
MOV TH0, #0F0H
MOV TL0, # 0FFH Cuanto más alto es el sonido, más alto La frecuencia, más nítida.
MOV TH1, #3CH
MOV TL1, # 0B0H50 milisegundos es una interrupción por desbordamiento.
SETB Electronic Arts
SETB ET0
SETB ET1
SETB EX0
SETB ex 1 permitido Cuatro; interrupciones, T0/T1/INT0/INT1.
CLR normal
Anillo CLR
SETB TR1
SETB TR0; ejecute el temporizador al principio y comience a mostrar FFF. Si desea volver a contar, simplemente reinicie TH1/TL1.
Programa de consulta:
Inicio: MOV R5, #0BH
MOV·R4
MOV R3, #0BH
Identificador de llamadas; cuando no empieces a contestar, muéstralo primero a FFF.
JB P3.0, siguiente
Retraso de llamada
JB P3.0, siguiente; para agitar, presione la tecla "Inicio" hacia abajo Ejecutar, de lo contrario salte a consulta ilegal.
Un grito; tono de tecla
MOV A, R1
MOV·R6; envía r 1- gt; porque el tiempo de respuesta se guarda en R1; .
SETB está bien; el indicador de respuesta rápida se utiliza para determinar si se debe consultar la respuesta rápida en el programa de conteo.
MOV R3, # 0AH La primera respuesta solo muestra la hora y el número de números faltantes.
AJMP cuenta; ingrese al programa de cuenta regresiva, "programa de consulta de respuesta válida" está contando.
Siguiente: JNB P1.0, falso 1
JNB P1.1, falso 2
JNB P1.2, falso 3
JNB P1.3, Falso 4
JNB P1.4, Falso 5
JNB P1.5, Falso 6
JNB P1.6, Falso 7
JNB P1.7, falso 8
AJMP iniciado
Manejador de respuesta ilegal:
FALSE1: Tono de tecla ACALL; p>
MOV R3, #01H
Error de AJMP
Error 2: pitido
MOV R3, #02H
AJMP Error
Error 3: Gritar
MOV R3, #03H
Error AJMP
Mentira 4: Gritar
MOV R3, #04H
Error AJMP
Error 5: Pitido
MOV R3, #05H
Error AJMP
Error 6: El grito
MOV R3, #06H
Error AJMP
Mentira 7: El grito
MOV R3, #07H
Error AJMP
Mentira 8: Grito
MOV R3, #08H
Error AJMP
Programa de cuenta regresiva (incluido el programa de respuesta válido):
Conteo: MOV R0, #00H restablecer el conteo de interrupción del temporizador
MOV TH1, #3CH
MOV TL1 , #0B0H restablecer el temporizador
Recuento: MOV A, R6; ahorra tiempo de cuenta regresiva.
MOV B, #0AH
DIV AB divide diez lugares entre uno/diez.
MOV 30H, A; entrada de decenas (30H)
MOV 31H, B; almacenamiento de unidades (31H)
MOV R5, 30h ocupa diez ubicaciones
MOV R4, 31H; siéntate
R6 MOV
CLR C
SUBB A, #07H
JNC es más grande; si es mayor que 5 s, saltará más grande, si es menor que 5 s, te lo recordará.
MOV A, R0
CJNE A, #0AH, completo corriendo hacia abajo durante 0,5 s en 1 s.
Timbre CLR
Verificación AJMP
Completo: CJNE A, #14H, verifique cuando sea 1 s, sonará y mostrará el número, borre R0; y reiniciar el reloj.
SETB Ring
R6 MOV
JZ renunció; ha llegado el momento.
MOV R0, #00H
R6 diciembre; marca de un segundo menos 1.
Verificación AJMP
Grande: MOV A, R0
CJNE A, #14H, verifique si 1s corre hacia abajo; de lo contrario, salte a "Detener/mostrar" .
R6 diciembre; R6 resta automáticamente 1 por un segundo.
MOV R0, #00H
Compruebe: JNB P3.1, salga si presiona la tecla detener para salir.
Identificador de llamadas
JNB P1.0, TRUE1
JNB P1.1, TRUE2
JNB P1.2, TRUE3 p>
p>
JNB P1.3, VERDADERO4
JNB P1.4, VERDADERO5
JNB P1.5, VERDADERO6
JNB P1.6, TRUE7
JNB P1.7, TRUE8
Recuento AJMP
Salir: CLR OK Si presiona la "tecla detener" puede comenzar de nuevo .
Anillo CLR
BARK
Inicio AJMP
Manejador de codificación normal:
TRUE1: tecla ACALL Bark; tono
R2 MOV
MOV·R6; tiempo de respuesta R2 a R6.
MOV R3, #01H
CLR OK
AJMP Loop 2
Verdadero 2: un ladrido de llamada;
R2 MOV
MOV·R6
MOV R3, #02H
CLR OK
AJMP bucle 2 p>
Real 3: Un ladrido;
R2 MOV
MOV·R6
MOV R3, #03H
CLR OK
AJMP Loop 2
Verdadero 4: un ladrido de llamada;
R2 MOV
MOV·R6
MOV R3, #04H
CLR OK
Bucle AJMP 2
Verdadero 5: un ladrido de llamada;
R2 MOV
MOV·R6
MOV R3, #05H
CLR OK
AJMP loop 2
Real 6: Se llama uno Ladrar;
R2 MOV
MOV·R6
MOV R3, #06H
CLR normal
AJMP bucle 2
Real 7: Uno se llama ladrido;
R2 MOV
MOV·R6
MOV R3, #07H p>
CLR OK
AJMP loop 2
Real 8: Uno llamado Bark;
R2 MOV
MOV·R6
MOV R3, #08H
CLR normal
LOOP2: pantalla AJMP; responde primero y luego detiene el cronometraje, esperando el regreso.
Bucle SETB
Salida JNB P3.1
Bucle AJMP 2
Procedimiento de respuesta incorrecto:
Error : anillo SETB; anillo de faltas
MOV R5 # 0BH
MOV R4, # 0BH muestra FF y el número de faltas.
Bucle 3: Visualización de llamadas
JNB p 3.1 salir 1; esperar a que se presione la tecla "parar".
Bucle AJMP 3
QUIT1: Bucle CLR
CLR normal
AJMP inicia
Programa de visualización:
Pantalla: MOV DPTR, # dat 1; programa de visualización de tabla de búsqueda, use el puerto P0 para seleccionar la salida del puerto para el código de segmento/P2 bajo tres bits para seleccionar la salida para el código de bits.
MOV A, R5
MOVC A, @A DPTR
MOV P2, #01H
MOV P0, A
Retraso de llamada
MOV DPTR, #DAT2
R4 MOV
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
Retraso de llamada
Remojado en agua para ablandar
DAT1: DB 00H , 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh, 00H, 71H
; ", "5", "6", "7", "8", "9", "extinción" y "F"
DAT2: DB 3FH, 06h, 5bh, 4fh, 66h, 6dh , 7dh , 07h, 7fh, 6fh, 00H, 71H
Retardo 1: MOV 35H, #08H
LOOP0: visualización de llamada
DJNZ 35H, LOOP0
Remojarlo en agua lo suaviza
Retraso (para visualización y rebote):
Retraso: MOV 32H, #12H
Bucle: MOV 33H, #0AFH
LOOP1: DJNZ 33H, LOOP1
DJNZ 32H, loop
Remojado en agua para suavizar
Vocal programa:
p>
Ladrido: Timbre SETB
Retraso de llamada 1
Retraso de llamada 1
Tono de tecla CLR;
Remojo en agua Ablanda
INT0 (programa de ajuste de tiempo de respuesta R1):
INT0SUB: MOV A, R1
MOV B, #0AH
División AB
MOV R5, A
Bahía MOV R4
MOV R3, #0AH
El identificador de llamadas; primero, en R1 se muestra en los dos LED de tiempo.
JNB P3.2, INC0P3.2 es la tecla 1s, si se presiona saltará a INCO.
JNB P3.3, DEC0P3.3 es la tecla -1s. Si se presiona, saltará a DECO.
JNB P3.4, BACK0P3.4 es la tecla OK. Si se presiona, salta a BACKO.
AJMP INT0SUB
INC0: MOV A, R1
CJNE A, #63H, ADD0 Si no es 99, suma 1 a R2; 99, luego R1 se establece en 0 y se agrega nuevamente.
MOV R1, #00H
Retraso de llamada 1
AJMP INT0SUB
ADD0: INC R1
Llamada Retraso 1
AJMP INT0SUB
DEC0: MOV A, R1
JZ setr 1; si R1 es 0, entonces R1 se establece en 99.
Diciembre R1
Retraso de llamada 1
AJMP INT0SUB
Configurar R1: MOV R1, #63H
Retardo de llamada 1
AJMP INT0SUB
Retorno 0: RETI
Interrupción de desbordamiento (procedimiento de llamada):
Internacional: MOV TH0, # 0ECH
MOV TL0, #0FFH
Anillo JNB, fuera
CPL P3.6 Cuando el indicador de timbre es 1, P3.6 El puerto no es corto , permitiendo que el altavoz emita sonidos de una determinada frecuencia.
Saliente: RETI
Interrupción de desbordamiento T1 (temporizador):
T1INT: MOV TH1, #3CH
MOV TL1, # 0B0H
INC R0
Reti
Fin