Red de conocimiento informático - Problemas con los teléfonos móviles - Problema de programación del anillo

Problema de programación del anillo

El primer capítulo analiza la función de diseño del contestador automático.

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>

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

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

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