Red de conocimiento informático - Computadora portátil - "El tubo digital muestra cíclicamente de 00 a 99, con un intervalo de visualización de 100 ms"

"El tubo digital muestra cíclicamente de 00 a 99, con un intervalo de visualización de 100 ms"

Ahora usemos los dos tubos digitales en el tablero experimental para hacer un experimento de visualización de números del 00 al 99 en un bucle. Primero, complete las piezas de hardware necesarias.

El tubo digital se divide en yin y yang. Ambos microcontroladores se pueden controlar, pero los métodos de control son diferentes y los códigos de visualización correspondientes de 0 a 9 también son exactamente opuestos.

En primer lugar, introduzcamos el método de control del microcontrolador de dos tubos digitales positivos. El circuito se muestra a continuación:

Los internautas pueden ver: los puertos P2.6 y P2.7 son. controlado por separado Los dígitos de decenas y unidades del tubo digital se alimentan. Cuando el puerto correspondiente pasa a un nivel bajo, el transistor de accionamiento correspondiente se enciende +5 V suministra energía a los bits correspondientes del tubo digital a través del diodo IN4148 y el controlador. Transistor en este momento, siempre que el puerto P0 envíe el código de visualización digital y el tubo digital pueda mostrar los números normalmente.

Debido a que es necesario mostrar dos números diferentes, se debe implementar mediante un método de escaneo dinámico, es decir, el dígito de las unidades se muestra durante 1 milisegundo y luego el dígito de las decenas se muestra durante 1 milisegundo, y el ciclo continúa, de modo que mientras el tiempo de escaneo sea inferior a 1/50 segundos, verá dos números diferentes mostrados de manera estable debido al efecto visual residual del ojo humano.

Ahora presentaremos un método de control del microcontrolador para el tubo digital negativo. El circuito es el siguiente:

Los internautas pueden ver: +5 V se suministran directamente al digital a través de la resistencia de 1 K. Los 8 segmentos del tubo están alimentados. Los puertos P2.6 y P2.7 controlan la fuente de alimentación de los dígitos de las decenas y las unidades del tubo digital respectivamente. Cuando el puerto correspondiente alcanza un nivel bajo, el bit correspondiente puede consumir corriente. La salida de datos por el puerto P0 del microcontrolador equivale a cortocircuitar el campo digital que el tubo digital no quiere mostrar al suelo, de modo que el tubo digital muestre el número requerido.

Los internautas pueden ver que el hardware del ** tubo digital negativo es más simple, por lo que en la producción en masa, la sobrecarga de hardware es pequeña, se ahorra el área de PCB, se reduce la carga de trabajo de soldadura y el costo total. se reduce, por lo que ** *los tubos digitales Yin son más propicios para la producción en masa. Todas las placas de prueba vendidas ahora utilizan tubos digitales ***yin.

El siguiente es un programa en lenguaje ensamblador que utiliza el tubo digital de dos dígitos de la placa experimental AT89C51 para mostrar 00~99 en secuencia:

a_bit equ 20h; el tubo digital almacena la ubicación de la memoria

p>

b_bit equ 21h;El dígito de las decenas del tubo digital se almacena en la ubicación de la memoria

temp equ 22h;El valor del contador es almacenado en la ubicación de la memoria

star: mov temp,#0;Inicializa el contador, comenzando desde 0

stlop: llama a la pantalla; llama a la subrutina de visualización

inc temp; agrega 1 al contador

mov a,temp

cjne a,#100,next; ¿Determinar si el contador está lleno de 100?

mov temp,#0; Bórralo y comienza de nuevo cuando llegue a 100

siguiente: ljmp stlop; Si no, entonces ejecuta el bucle

;Mostrar subrutina

display: mov a,temp ;Convierte el número hexadecimal en temp a decimal

mov b ,#10 ;Decimal/10=Decimal

p ab

mov b_bit,a ;El dígito de las decenas está en a

mov a_bit,b ; El dígito de las unidades está en b

mov dptr,#numtab ;Especifique la dirección inicial de la búsqueda en la tabla

p>

mov r0,#4

dpl1: mov r1,#250

dplop: mov a,a_bit ;Obtener el número de un solo dígito

MOVC A,@A+DPTR ;Comprueba el código de 7 segmentos del número de un solo dígito

mov p0 ,a ;Envía el código de 7 segmentos del dígito de las unidades

clr p2. 7 ;Encienda la pantalla de dígitos

acall d1ms ;Mostrar 162 microsegundos

setb p2 7;Apague la pantalla de unidades para evitar imágenes fantasma

mov a, b_bit;Obtener el dígito de las decenas

MOVC A,@A+DPTR;Verificar el código de 7 segmentos para el dígito de las decenas

mov p0,a ;Enviar código de 7 segmentos de las decenas digit

clr p2.6 ;Activar la visualización de decenas de dígitos

acall d1ms ;Mostrar 162 microsegundos

setb p2.6; Desactivar la visualización de decenas de dígitos para evitar fantasma

djnz r1,dplop; Ejecución de bucle 250 veces

djnz r0,dpl1; Ejecución de bucle 250X4= 1000 veces

ret

;2+2X80=162 microsegundos, el retraso se calcula según 12MHZ

D1MS: MOV R7, #80

DJNZ R7,$

RET

;El código de visualización negativo del tubo digital de 7 segmentos de 0 a 9 en el tablero experimental

numtab: DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H ,0DFH,0DBH

end

;Si es el código de visualización del ***tubo digital yang

numtab: DB 30H,0FCH,0A2H,0A4H ,06CH,25H,21H,0BCH,20H,24H

Este es el archivo de programación del programador obtenido después de compilar el programa anterior: 205.hex