2016-03-27 3 views
0

J'utilise la carte Digilent Basys 3.! Il a 4 x 7 segments d'affichage. Actuellement mes codes sontAffichage de nombres différents sur le segment 7

module segmentdisplay(input clk, 
         output segA, segB, segC, segD, segE, segF, segG, segDP,D1,D2,D3,D4 
); 


assign D1 = 1'b1; //to switch off the Right most 7 segment display 

assign {segA, segB, segC, segD, segE, segF, segG, segDP} = 8'b00100100; // light the leds to display '2' 

endmodule 

dès maintenant, tous mes trois 7 segments montrent le chiffre '2'.

Je comprends que que tous les 4 7segments sont liés à la même a, b, c, d, e, f, g

Comment je les fais montrent '1' '2' '3' au en même temps? Merci les gars.

+1

Typiquement, les broches de cathode sont connectées aux bits de segment et les broches d'anode sont connectées à 'D1 ... D4'. Vous devez implémenter un algorithme de multiplexage temporel qui commute les bits de segment en fonction des broches d'anode codées à chaud unique. – Paebbels

Répondre

0

L'affichage à 7 segments fonctionne avec 4 entrées de D1 à D4, et vous avez raison, tous les 4 écrans utilisent les mêmes a à g.

L'astuce consiste à configurer l'affichage de façon à ce qu'un seul affichage à 7 segments s'allume et affiche le numéro à tout moment. Cependant, la durée pendant laquelle le code passe à l'affichage suivant pour afficher le numéro suivant doit être très petite. Ce que cela signifie essentiellement est qu'à un tel taux de commutation rapide entre D1 et D4, et alors que chaque affichage montre un nombre différent, nos yeux sont trompés en pensant que les affichages montrent réellement quelques nombres à la fois (ou dans votre cas 3).

Étant donné que vous ne voulez afficher qu'un nombre à 3 chiffres, le code ne doit alterner qu'entre D2 et D4, avec leur entrée respective pour le chiffre à afficher.