Question:
7 segments binaire à hexadécimal
Goswin von Brederlow
2018-01-23 18:29:28 UTC
view on stackexchange narkive permalink

J'essaie d'afficher un nombre binaire de 4 bits sur une LED à 7 segments sous forme de nombre hexadécimal (0-F). J'ai un assortiment de circuits intégrés de la série 7400, y compris le 7447. Mais celui-ci ne fonctionne que pour BCD (0-9). La série 7400 ne semble pas avoir de décodeur hexadécimal à 7 segments et je n'en ai pas sous la main.

Je pense donc que je devrais construire le mien. La fiche technique pour un 7447 est livré avec le circuit interne mais je n'ai pas pu trouver un circuit similaire pour hex à 7 segments. J'ai fait des diagrammes en K pour chaque segment de LED à la main mais les termes sont plutôt grands, beaucoup plus grands que pour BCD.

Quelqu'un a-t-il un circuit terminé pour cela contre lequel je peux vérifier mon travail?

Quelqu'un a-t-il un circuit optimisé pour cela qui tire parti des sous-termes courants? Il n'y a pas beaucoup de termes en double (comme A0 & ~ A1 & A2) mais peut-être utiliser (A0 & A2) & ~ A1 permettrait de partager le sous-terme (A0 & A2) et de réduire globalement le nombre de portes.

Ou peut-être quelques astuces pour utiliser des portes NAND, NOR ou XOR pour certaines parties?

Je ne me soucie pas de la longueur de chemin ou des courses différentes dans le circuit car cela ne fera que conduire des LED et devrait être beaucoup trop rapide pour voir tout cela.

Je sais que ce n'est pas la bonne solution que vous recherchez, mais je vous recommande d'utiliser une EEPROM telle que AT28C16 ou similaire pour convertir le binaire en hexadécimal.Il vous suffira de programmer les 16 premiers octets.Connectez les quatre nombres binaires à convertir en hexadécimal aux 4 premières lignes d'adresse et les lignes de données aux broches à 7 segments.Programmer chaque octet des 16 premiers octets de sorte que pour l'adresse 0000 il s'allume à 0 sur l'affichage à 7 segments, pour l'adresse 0001 il s'allume à 1 sur l'affichage à 7 segments, et ....Répétez ceci jusqu'à ce que vous ayez programmé les 16 premiers octets.Cela peut également être fait avec un uC.
@dirac16, ne programmeriez-vous pas les _derniers_ 16 octets et tireriez-vous les lignes d'adresse inutilisées?
@jameslarge Oui, vous pouvez.Mais je programmerais les 16 premiers octets et abaisserais les autres lignes d'adresse inutilisées.
Je l'avoue, ma réflexion est toujours façonnée par l'ère TTL où toutes les entrées inutilisées étaient élevées.
Question rapide: sur un affichage à 7 segments, comment comptez-vous faire la différence entre «8, B» et «0, D»?Les écrans que j'ai vus qui étaient destinés à l'hexadécimal ont tous utilisé plus que seulement 7 segments ...
@Baldrickk Hexadécimal sur un affichage à 7 segments utilise des minuscules pour «b» et «d».Vous avez alors un problème avec "b" et "6" étant similaires, mais "6" a le segment supérieur rempli et "b" ne le fait pas.(Basé sur la calculatrice Casio FX-100D qui se trouve sur mon bureau devant moi en ce moment.)
[En relation] (https://codegolf.stackexchange.com/questions/37648/drive-a-hexadecimal-7-segment-display-using-nand-logic-gates)
Je vote contre cette question car même si j'aime la discussion, la plupart concerne la conception logique générique, y compris les CPLD, les microcontrôleurs et les PLA.Et même ma réponse, que je souhaite supprimer, implique simplement de lancer une recherche sur Internet ("hex 7 segments"), ce qui implique mon opinion (inconsciente?) Est que OP aurait pu faire plus.
En effet, je me souviens que dans l'un de mes cours * 30 * il y a quelques années, j'avais un tel écran hexadécimal pour programmer une carte d'entraînement Motorola 6800, donc l'art antérieur existe, même s'il manquait Internet.
Dix réponses:
#1
+16
Olin Lathrop
2018-01-23 19:09:06 UTC
view on stackexchange narkive permalink

Trouvez quel musée ne dispose pas de leurs CI logiques 74xx et renvoyez-les.Ensuite, procurez-vous un petit microcontrôleur et faites tout cela dans une seule puce.En prime, vous serez prêt pour d'autres projets avancés de la fin des années 1980 et au-delà.

Jusqu'à aujourd'hui, mon ancienne université oblige encore les étudiants à utiliser des IC LS74.Je suppose que cela nous aide dans nos fondations?
Je pourrais utiliser mon chapeau At-Mega et e-paper.Mais ce n'est pas ce que j'ai demandé.
#2
+11
Richard the Spacecat
2018-01-23 19:14:11 UTC
view on stackexchange narkive permalink

Peut-être, si vous vous sentez particulièrement aventureux, vous pourriez même utiliser une diode ROM, avec peut-être deux décodeurs 74'138 3 à 8 lignes pour décoder / piloter le truc.:)

A crude schematic Voici un schéma grossier de l'ensemble de l'engin;Si vous utilisez des écrans LED à haut rendement, vous pourrez peut-être même piloter directement une anode commune.

La broche '! EN' peut être l'une des broches de gate du '138.Vous pouvez également connecter les deux autres broches de gate ensemble, ce qui vous permet d'activer ou de désactiver la sortie d'affichage à votre guise.

Cela présente également l'avantage par rapport à la solution ROM suggérée qu'il est peu coûteux à construire / prototyper si vous avez les pièces sous la main, ou que vous ne pouvez pas être particulièrement dérangé pour programmer des ROM.

D'ailleurs, on pourrait même appeler ça amusant à faire :)

Un 22V10 coûte environ 2 $ et peut le faire en une seule puce, mais j'admire votre intrépidité.
Si vous êtes encore plus aventureux, il peut être amusant de trouver une approche plus «économique» si vous êtes prêt à mettre deux diodes en série.Par exemple, si l'on utilisait deux diodes pour chaque «coin» pour éclairer un segment supérieur ou inférieur avec le bord adjacent (huit diodes), cela permettrait d'économiser deux diodes de chacun des 0, 2, 3, 5, 8, unde 7, et un ou deux de 6 et 9 (selon la police).Une simple disposition de ROM à diodes est probablement plus facile à construire, mais trouver une solution moins chère pourrait être un casse-tête intéressant.
L'astuce à utiliser ici est de programmer les segments sombres, car ils sont moins nombreux.Utilisez également le décodeur '154 4 lignes à 16 lignes.:)
Les diodes 1n4148 coûtent 40 pence britanniques par cent chez Farnell.Je me souviens d'avoir fait ce circuit.En 1975.
J'aime ça.Je connecterais probablement les sorties de la "ROM" à des portes NON pour conduire réellement les LED.Sinon, pour 8, vous devez conduire les 7 segments avec une seule broche de sortie d'un 74138. Cela ferait 4 circuits intégrés + beaucoup de diodes.
@GoswinvonBrederlow Oui, l'utilisation de portes NON est fondamentalement la manière traditionnelle de piloter des LED avec TTL, afaik.Joignez-vous à cela avec la suggestion de Lurker Larry, et vous êtes prêt à partir.:)
#3
+9
Spehro Pefhany
2018-01-23 20:45:41 UTC
view on stackexchange narkive permalink

Si vous voulez jouer avec les portes, une autre possibilité est d'utiliser un petit FPGA ou CPLD.Vous pouvez vous lancer avec un FPGA basé sur flash pour quelques dizaines de dollars.

Reprogrammez-le autant de fois que nécessaire pour bien faire les choses, et vous obtenez généralement beaucoup de broches d'E / S par dollar.

Exemple de code VHDL ici

Par exemple, (une boucle tremblante et pas tout à fait complète, mais vous voyez l'idée):

enter image description here

#4
+6
Anonymous
2018-01-23 19:15:35 UTC
view on stackexchange narkive permalink

Mais celui-là ne fonctionne que pour BCD (0-9).

En fait, 7447 peut physiquement accepter les valeurs hexadécimales de A-F, mais ils affichent des images erronées pour eux, voir ici page 3.

À mon avis, créer un décodeur hexadécimal à sept segments peut être un bon moyen pour l'éducation et la visualisation du fonctionnement de l'électronique numérique, mais c'est vraiment une mauvaise idée d'un point de vue pratique - c'est un complexe inutile et consomme beaucoup d'énergie par rapport à d'autres solutions.

Je me souviens d'avoir eu une carte de diagnostic PC en ~ 1995 qui affichait des codes d'erreur / d'état en hexadécimal (quelque chose comme ceci), et cette carte utilisait des puces GAL - prédécesseurs du CPLD.

Si vous avez recherché la solution sur Internet, vous avez peut-être vu de nombreux projets similaires utilisant la logique programmable ou des dispositifs basés sur MCU comme Arduino.

@ dirac16 a suggéré une autre façon - en utilisant une puce ROM parallèle, une sorte de table de recherche avec des octets représentant des segments activés / désactivés pour l'adresse respective (valeur d'entrée).

Ce n'est pas censé être pratique mais instructif.
#5
+5
Janka
2018-01-23 20:45:18 UTC
view on stackexchange narkive permalink

MC14495, DM8880 / 9368, V40511, D345, D346, 4311, 4368 ou 74C915

Tout cela est difficile à mettre la main sur de nos jours.

J'ai vu une référence au MC14493 faisant de l'hexagone à 7 segments, mais j'ai été frustré en cherchant une fiche technique.Mais il était disponible pour 8,75 EUR en quantités uniques.J'ai peur qu'il ne s'agisse que de bcd, donc je trouverais d'abord cette fiche technique.
Le 74C915 est un convertisseur 7 segments vers BCD.Donc mauvaise façon et seulement BCD pas hexadécimal.Étrange puce à fabriquer.
Ah oui, tu as raison.Mais je connais un cas d'utilisation pour une telle puce: des balances estampées.Ils exigent que le client voie le poids correct, de sorte que la loi peut vous obliger à reconvertir la sortie visible en BCD si vous avez jamais voulu connecter une imprimante.
@LurkerLarry MC14495 est toujours disponible sur eBay, 1,50 $, et voici la [fiche technique] (http://www.riana.com/electronics/docs/MC14495.pdf).J'en ai acheté un couple récemment, aucun problème rencontré.
#6
+3
Goswin von Brederlow
2018-04-21 00:25:28 UTC
view on stackexchange narkive permalink

Je pense que j'ai réussi à trouver la solution optimale (l'une d'entre elles) maintenant.Il utilise les 24 portes de 6 circuits intégrés:

  • 2x 7486 (quad XOR)
  • 1x 7408 (quad AND)
  • 2x 7402 (quad NOR)
  • 1x 7432 (quad OU)

J'ai réussi à trouver différentes solutions en utilisant seulement 23 portes mais plus de circuits intégrés.J'ai le sentiment qu'il n'y a pas de solution avec seulement 5 circuits intégrés.

Remarque: Le circuit émet LOW lorsque la LED doit être allumée car ma LED à 7 segments a un VCC commun.

schematic

simuler ce circuit - Schéma créé à l'aide de CircuitLab

D3-D0 sont les entrées, D3 étant le MSB.A-G sont les sorties avec A étant la LED supérieure, puis dans le sens des aiguilles d'une montre et le dernier G étant la LED centrale.

Avez-vous envisagé quelque chose comme le 74HC157 [multiplexeur 2 canaux 4: 1] ou éventuellement une variante inverseuse de celui-ci?Cela aurait peut-être été plus agréable s'il y avait une variante qui échangeait les sorties d'activation contre des entrées de sélection gauche / droite séparées, mais de telles puces peuvent parfois être très utiles.
Uniquement comme alternative à une diode rom mais vous en avez besoin en trop grand nombre.Vous pouvez les utiliser comme des portes programmables mais chaque multiplexeur devrait remplacer 2 portes pour dessiner même.
#7
+2
Dmitry Grigoryev
2018-01-23 20:14:10 UTC
view on stackexchange narkive permalink

Si vous souhaitez concevoir les fonctions à la main et vérifier leur exactitude avant (ou au lieu de) les implémenter dans le matériel, vous pouvez utiliser une calculatrice en ligne comme celle-ci.

Il existe également des outils qui peuvent minimiser plusieurs fonctions logiques partageant des entrées communes.L'un est expresso, qui a des implémentations gratuites sous Windows et Linux.

Cela ressemble vraiment à un commentaire offrant des conseils complémentaires, pas à une réponse.
@ChrisStratton Franchement, je ne vois pas l'intérêt d'afficher les solutions réelles ici.
Cette calculatrice ne résout qu'une seule sortie à la fois et n'affiche qu'une seule solution même s'il y en a plusieurs.Cela signifie qu'il peut donner des solutions qui ont moins de termes en commun entre les sorties.C'est à dire.utilisez plus de portes que nécessaire.
@GoswinvonBrederlow Bon point, mais c'est une question de recherche pour trouver un optimiseur logique qui fait ce que vous voulez.
@DmitryGrigoryev J'ai déjà cherché et je n'ai encore jamais trouvé d'optimiseur logique gratuit qui fasse plus que simplement transformer le POS ou le SOP pour utiliser différents types de portes.Rien qui optimise réellement.C'est un problème NP difficile, je crois, et qui prend rapidement trop de temps pour trouver la solution optimale.Alors les gens n'essaient pas.Il devient rapidement plus simple d'utiliser une rom comme table de recherche (comme suggéré ci-dessus).
Selon la page de manuel, l'espresso optimise, bien qu'il utilise l'heuristique pour simplifier la tâche.
J'ai déjà essayé Logic Friday (l'un des outils répertoriés comme utilisant l'espresso) et cela ne serait pas optimisé pour les portes disponibles.Il semble trouver une forme minimale en utilisant l'espresso, puis convertit / exprime cette forme minimale en utilisant les portes que vous sélectionnez.C'est bien si vous ne voulez que NAND ou AND + OR.Mais si vous avez AND + NAND + OR + NOR + XOR, il ne voit pas le besoin de transformer quoi que ce soit et n'utilisera pas les types de portes supplémentaires pour un résultat plus optimal.
#8
+1
Ronan Paixão
2018-01-23 23:46:56 UTC
view on stackexchange narkive permalink

Il a été dit que vous pouvez essayer le ICM7218 ou d'autres puces.

Vous pouvez également essayer de créer votre propre circuit combiné. Ceci est un excellent didacticiel vidéo sur la façon de procéder et ses mécanismes.Si vous souhaitez l'optimiser, il existe des fiches techniques ( 1, 2) avec la partie BCD (0-9).

En guise de suivi, ce type a également réalisé une vidéo de suivi sur la façon de faire de même avec une EEPROM.Certes, vous devez toujours le programmer, mais cela peut en valoir la peine.

Et en parlant de programmation, vous pouvez aussi tout faire avec un microcontrôleur.Il est généralement plus facile à programmer qu'un CPLD ( que vous pouvez également utiliser), et il existe à la fois des implémentations de code et de tabulaire.J'utiliserais cette option, car je suis familier avec les microcontrôleurs (vous n'êtes pas limité à l'Arduino) et uniquement pour la puce, elle pourrait même être votre option la moins chère.

#9
+1
Lurker Larry
2018-01-24 11:51:36 UTC
view on stackexchange narkive permalink

Utilisez Google pour rechercher des éléments "hexadécimaux à 7 segments", y compris http://en.wikipedia.org/wiki/Seven-segment_display qui a une table de vérité hexadécimale (en hexadécimal!).D'autres éléments incluent des diagrammes et des démonstrations vidéo.

Je cherchais en fait des écrans à quatre chiffres et sept segments qui effectuent le décodage hexadécimal pour vous, mais ils sont considérés comme "anciens" (sniff) et les modernes utilisent i2c plutôt que des interfaces parallèles.

Et 95% des résultats parlent en fait de BCD à 7 segments, 4% n'ont pas de circuit mais juste des tables de vérité et tel et 1% sont des vidéos où vous ne pouvez pas comprendre ce qui est censé être un et une porte ou une porte.
Peut-être aurais-je alors dû simplement publier ce lien https://youtu.be/7zffjsXqATg et dire que le circuit que vous avez demandé est à 12 minutes et que sa mise en œuvre TTL est affichée 30 secondes plus tard.Sa liste de pièces est dans la description.Je m'excuse sincèrement de ne pas avoir pris en compte le fait que les résultats des moteurs de recherche ne sont pas prévisibles.
Oui, c'est le 1% dans la recherche qui s'applique réellement, les "vidéos où vous ne pouvez pas comprendre ce qui est censé être un et un portail ou un portail".J'ai de nouveau regardé le circuit et il utilise 49 portes ET et OU.https://codegolf.stackexchange.com/questions/37648/drive-a-hexadecimal-7-segment-display-using-nand-logic-gates a d'autre part une solution avec 37 portes NAND.Jusqu'à présent, c'est le gagnant.
#10
  0
WooShell
2018-01-24 18:43:57 UTC
view on stackexchange narkive permalink

J'utilise le DM9368N à cette fin depuis des années maintenant, et il est raisonnablement facile à obtenir (15 $ pour un pack de 10 sur ebay ou Aliexpress).

Cet appareil a exactement la logique requise pour le travail, mais attention au courant d'alimentation!
@henros Bien sûr, cette puce est conçue pour piloter directement un écran LED .. vous ne pouvez pas l'utiliser simplement comme décodeur pour avancer dans une logique plus poussée.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...