Étape 4: Les numitrons
Numitrons sont des affichages à 7 segments, et nous devons donc renforcer nos chiffres avec ces segments. Il y a beaucoup de IC´s de conduire 7 segment s’affiche comme le HEF4511 (BCD à 7 segments), mais pour gagner de la place sur le circuit imprimé, nous nous dirigerons eux directement avec le microcontrôleur. Pour ce faire, nous utiliserons portb aux segments de route le 7 et aux quatre premières broches de portc pour multiplex inbetween les quatre numitrons.
Lorsque vous utilisez numitrons multiplex, vous devrez utiliser des diodes sur toutes les broches, exception de la commune. Cette option pour empêcher le « fantôme de chiffres » dans autres numitrons. J’ai utilisé le très commun 1N4007 pour mon horloge.
Je l’ai dit plus tôt, que numitrons besoin entre 3, 5V et de 4, 5V. Mais lorsque nous multiplex eux, vous ne verrez rien arriver. Comme nous permettons chaque numitron pour 5ms seul à la fois, nous aurons besoin une tension supérieure à fait les fillaments briller. Toute tension entre 7, 5V et 12V fonctionne parfaitement, mais j’ai choisi 7, 5V, parce que je ne voulais pas qu’ils soient au clair.
Comme nous utilisons une tension plus élevée pour les numitrons que pour notre microcontrôleur, nous devrons aussi quelques transistors. J’ai utilisé le transistor PNP 2N3906 commune pour conduire les segments et le transistor NPN BD137 afin d’aider le multiplexage.
Maintenant pour du code :
Tout d’abord : quand on veut afficher l’heure sur quatre numitrons, nous aurons besoin de diviser en 4 chiffres. Il existe de nombreuses façons de le faire, mais je le fais avec ce code :
Pour ce code, vous devrez dim tube(4) as byte et temp comme octets. Les chiffres sont numérotés de droite à gauche, alors que les minutes ont numitron 1 et 2 et les heures, 3 et 4.
Tube(2) = mn / 10
Temp = Tube(2) * 10
Tube(1) = minutes - Temp
Tube(4) = heures / 10
Temp = Tube(4) * 10
Tube(3) = heu - Temp
Donc, si le temps est 09:24 : tube(2) = 24/10 = 2 (les décimales sont supprimées)
Temp = 2 * 10 = 20
tube(1) = 24-20 = 4
tube(4) = 9/10 = 0
Temp = 0 * 10 = 0
tube(3) = 9-0 = 9
Maintenant que nous avons les chiffres, nous pouvons multiplexer les :
Pour ce code, vous devez dim i as byte et j comme octets.
For I = 1 à 4
Temp = 7seg(tube(i))
PORTB = Temp
J = I -1
Set Portc.j
Waitms 5
Remise à zéro Portc.j
Prochaine
Copiez le code suivant sélectionne l’un des numitrons, convertit sa valeur correspondante en 7 segments et lui permet à la lumière vers le haut en mettant la broche droite du portc élevé pour 5ms. Comme les numitrons sont numérotés 1 à 4 et 0 à 3 broches, j variable sera variable j’ai soustrait par 1.
Maintenant enfin et surtout la fonction 7seg :
Nous allons ajouter cette fonction dans le code pour convertir la valeur des chiffres en un brochage de 7 segments pour portb.
Tout d’abord, il faut déclarer la fonction.
Déclarer la fonction 7seg (byval Q As Byte) As Byte
Puis à la fin du code, nous allons ajouter du code pour la fonction.
Function 7seg (byval Q As Byte) As Byte
Sélectionnez l’option casse Q
Cas 1 :
7seg = & B01111100
Cas 2 :
7seg = & B00010010
Cas 3 :
7seg = & B00011000
Cas 4 :
7seg = & B00101100
Cas no 5 :
7seg = & B00001001
Cas 6 :
7seg = & B00000001
Cas 7 :
7seg = & B01111000
Cas 8 :
7seg = & B00000000
Cas 9 :
7seg = & B00001000
Case 0 :
7seg = & B01000000
End Select
End Function
Important ici est que, comme nous avons utilisé des transistors PNP, une 0 signifie que le segment est activé et un 1 que le segment est désactivé. Si vous câbler votre munitrons différemment à portb, vous aurez besoin de savoir quel bit est nécessaire pour chaque segment.
Dans l’étape suivante nous allons étudier le cerveau de notre engin : l’atmega48.