Paso 4: El numitrons
Numitrons son displays de 7 segmentos, por lo que necesitamos para construir nuestras cifras con estos segmentos. Hay un montón de IC´s para conducir 7 segmento aparece como el HEF4511 (BCD a 7 segmentos), pero para ahorrar espacio en la pcb, les conducimos directamente con el microcontrolador. Para ello, usaremos portb a segmentos de coche los 7 y a los cuatro primeros pines de portc para multiplexar numitrons entre los cuatro.
Cuando se utiliza numitrons multiplex, necesitará utilizar diodos en las patillas todas, excepto el común. Esto para evitar que 'fantasma dígitos' en otros numitrons. Usé el 1N4007 muy común para mi reloj.
Anteriormente, dije que numitrons necesita entre 3, 5V y 4, 5V. Pero cuando nosotros los múltiplex, no ves nada suceder. Ya que permite a cada numitron de sólo 5 ms en un momento, necesitaremos una tensión más alta para hacer el fillaments del resplandor. Cualquier voltaje entre 7, 5V y 12V funciona bien, pero elegir 7, 5V porque no quiero que sea brillante.
Pues utilizamos un voltaje más alto para los numitrons que nuestro microcontrolador, necesitaremos algunos transistores demasiado. Usé el común 2N3906 PNP-transistor a conducir el transistor NPN BD137 para ayudar a la multiplexación y los segmentos.
Por código:
Primer lugar: cuando queremos mostrar tiempo en cuatro numitrons, tendremos que dividirlo en 4 dígitos. Hay numerosas maneras de hacer esto, pero lo hago con este código:
Para este código necesitará dim tube(4) como byte y temp como byte. Los dígitos están numerados de derecha a izquierda para los minutos numitron 1 y 2 y las horas 3 y 4.
Tube(2) = minutos / 10
Temp = Tube(2) * 10
Tube(1) = minutos - temperatura
Tube(4) = horas / 10
Temp = Tube(4) * 10
Tube(3) = horas - Temp
Si la hora es 9:24: Tube(2) = 24/10 = 2 (se eliminan los decimales)
Temp = 2 * 10 = 20
Tube(1) = 24-20 = 4
Tube(4) = 9/10 = 0
Temp = 0 * 10 = 0
Tube(3) = 9-0 = 9
Ahora que ya tenemos las cifras, las podemos conectar:
Para este código, necesitará dim como byte y j como byte.
Para I = 1 a 4
Temp = 7seg(tube(i))
PORTB = Temp
J = I -1
Set Portc.j
Waitms 5
Restablecer Portc.j
Siguiente
Este código selecciona uno de los numitrons, convierte su valor correspondiente en 7 segmentos y permite a la luz hasta estableciendo el eje derecho de portc alta de 5ms. Como las numitrons son numeradas 1 a 4 y los pernos de 0 a 3, j variable será variable me descuentan por 1.
Ahora por último la función de 7seg:
Vamos a añadir esta función en el código para convertir el valor de los dígitos en un 7 segmento pines de portb.
Primero necesitamos declarar la función.
Declarar la función 7seg (byval Q como bytes) como Byte
Luego al final del código se agregue el código para la función.
Función 7seg (byval Q como bytes) como Byte
Seleccione caso Q
Caso 1:
7seg = & B01111100
Caso 2:
7seg = & B00010010
Caso 3:
7seg = & B00011000
Caso 4:
7seg = & B00101100
Caso 5:
7seg = & B00001001
Caso 6:
7seg = & B00000001
Caso 7:
7seg = & B01111000
Caso 8:
7seg = & B00000000
Caso 9:
7seg = & B00001000
Caso 0:
7seg = & B01000000
Final seleccione
End Function
Importante aquí es que, como utilizamos transistores PNP, un 0 significa que el segmento está activado y un 1 que el segmento está desactivado. Si cable su munitrons diferentemente a portb, usted necesitará saber qué poco se necesita para cada segmento.
En el siguiente paso vamos a ver en el cerebro de nuestro artilugio: el atmega48.