Question:
CI décimaux codés en binaire
hisker
2011-02-19 16:07:03 UTC
view on stackexchange narkive permalink

Existe-t-il un circuit intégré pouvant être utilisé pour convertir un code binaire 9 bits en affichage à sept segments? EX: 100101100-> 300 Je veux afficher 300 dans un affichage à sept segments lorsque le code binaire 100101100 est appliqué à l'entrée. en utilisant uniquement des circuits intégrés sans microcontrôleurs.

Pourquoi ne voulez-vous pas utiliser un microcontrôleur? Ce serait probablement l'option la meilleure et la moins chère.
Un microcontrôleur est le choix évident.Puisque vous n'avez donné aucune justification pour laquelle vous ne voulez pas en utiliser, nous ne pouvons que supposer que c'est pour des raisons religieuses stupides et donc ignorer cette spécification.
100101100 n'est pas un BCD pour 300, 001100000000 est
100101100 est juste binaire ... pas décimal codé binaire.et l'ic que vous recherchez s'appelle un microcontrôleur, d'autant plus que vous devez faire une division (ou une multiplication par 1/10) si vous voulez une décimale.
Sept réponses:
W5VO
2011-02-20 03:09:54 UTC
view on stackexchange narkive permalink

Je peux penser à trois façons de procéder. Je vais commencer par le plus cher et le plus compliqué et travailler mon chemin vers le bas.

  1. Tous les CI Logic: Utilisez un compteur binaire 9 bits haut / bas à chargement parallèle (tel que 3x 74hc190) et un compteur BCD réinitialisable à 3 chiffres (3x 74hc163). Chargez le compteur binaire avec votre nombre de 9 bits et effacez le compteur BCD à 0. Horloge les deux compteurs jusqu'à ce que le compteur binaire atteigne zéro. Chargez la sortie du compteur BCD dans un verrou, puis transmettez-la à un décodeur BCD-7seg. Répétez.
    • Avantages:
      • Répond à l'exigence de n'utiliser que des CI logiques standard
      • Ne nécessite aucune programmation
    • Inconvénients :
      • Cher (les puces de compteur coûtent environ 1 à 2 $ chacune)
      • Sujettes à des pannes de câblage
      • Nécessite un signal d'horloge de 31 kHz pour un rafraîchissement à 60 Hz
      • Nécessite 8 à 12 CI logiques (je dessinerai un schéma plus tard)

  2. ROM Look- Up Table: Utilisez une petite mémoire FLASH asynchrone parallèle (telle que celle-ci) pour prendre toutes les entrées de données comme adresse, puis programmez la ROM pour générer des sorties BCD pour 2 chiffres. Introduisez le résultat dans un décodeur BCD-to-7seg. Vous pouvez également utiliser une ROM pour générer un seul chiffre décimal décodé en broches à 7 segments.
    • Avantages:
      • Prix par chiffre assez bon marché
      • S'adapte mieux
      • Rapide (mais la vitesse n'a pas vraiment d'importance)
      • Simple à câbler / concevoir
    • Inconvénients:
      • Chaque ROM nécessite une programmation différente
      • Besoin d'acheter une ROM beaucoup plus grande que nécessaire
      • La programmation nécessite une automatisation informatique.

  3. Microcontrôleur: un microcontrôleur simple avec suffisamment d'entrées et les sorties peuvent convertir le nombre binaire en BCD, puis le coder en signaux de commande à 7 segments. La solution la moins chère (ma recherche digikey a choisi ce PIC) multiplexera les chiffres de sortie. Vous aurez peut-être besoin de transistors pour piloter l'anode / cathode commune de vos écrans 7 segments, mais ceux-ci peuvent être des transistors bon marché.
    • Avantages:
      • La solution la moins chère à 1,50 USD - 2,00 USD au total
      • Câblage simple
      • Facilité d'implémentation de l'algorithme Binary-> BCD dans le logiciel
      • Ajout de fonctionnalités simplifiées
      • Système le moins cher pour piloter l'affichage
    • Inconvénients:
      • Un programmeur de puce est nécessaire
      • Vous avez besoin pour écrire un logiciel (pas seulement un problème matériel)
      • La solution la moins chère nécessite le multiplexage des chiffres, qui est plus compliqué que l'entraînement direct.

Je rédigerai quelques schémas plus tard

BarsMonster
2011-02-19 16:14:45 UTC
view on stackexchange narkive permalink

J'ai peur qu'il n'y ait pas de puces standard de ce type. Bien qu'il y ait des puces BCD à 7 segments, il sera difficile d'extraire des chiffres individuels, car cela nécessiterait des puces 'diviser par 10'.

Aussi, les CPLD sont là pour vous.

Si vous pouvez générer des chiffres séparés au lieu d'un seul numéro de 9 bits, vous pourrez utiliser des puces standard.

+1 pour avoir souligné que les données source sont des données décimales codées binaires et non binaires, ce qui complique les conversions basées sur la logique. Mais tout type de puce ROM pour une table de consultation est une solution simple.
Jaroslav Cmunt
2011-02-19 17:29:04 UTC
view on stackexchange narkive permalink

Le moyen le plus simple serait peut-être de créer une table de conversion et de la mettre en EPROM ou FLASH avec au moins 9 adresses et 12 lignes de données. Sinon CPLD ou petit FPGA ( opencores.org a un peu de HDL pour cela).

Si vous vouliez vraiment faire cela en utilisant des IC discrets, vous devriez construire une machine d'état implémentant l'algorithme, qui serait la solution la plus complexe et pas vraiment différente du microcontrôleur, sauf pour un prix, une taille et une complexité accrus.

Une table de recherche basée sur la ROM est la solution traditionnelle, utilisant la technologie de ROM programmable la moins chère et la plus facile à gérer. Cependant, la construction d'un programmeur de périphérique sera probablement plus coûteuse et nécessitera plus de travail que les micro-contrôleurs modernes. Les affichages à plusieurs chiffres sont souvent multiplexés - facile avec un micro, mais avec une ROM, vous pouvez avoir une entrée d'adresse à deux bits pilotée par un oscillateur et un compteur et l'utiliser pour rechercher alternativement l'un des trois chiffres pendant son tour à être affichées. Sinon, vous aurez besoin d'une ROM assez large.
JustJeff
2011-02-20 07:25:50 UTC
view on stackexchange narkive permalink

Votre exemple d'entrée, 100101100, est un binaire brut pour 300, pas un décimal codé en binaire; BCD pour 300 serait 0011 0000 0000. Si vous souhaitez afficher des nombres qui sont en fait BCD, c'est relativement simple. Mais si vos entrées sont vraiment binaires, c'est un problème plus complexe.

Pour passer des groupements binaires bruts aux groupements décimaux, qui seront nécessaires pour piloter l'affichage, vous devez effectivement faire une conversion de base, ce qui implique de faire une division entière. Bien que vous puissiez accomplir cela avec des circuits intégrés logiques, il en faudra une grande quantité pour le faire, ce qui implique BEAUCOUP de câblage, ce qui signifie de nombreuses opportunités de débogage.

À moins qu'il n'y ait une raison impérieuse d'utiliser des circuits intégrés logiques, ce serait une tâche idéale pour un microcontrôleur 8 bits.

Hans
2011-02-19 23:12:01 UTC
view on stackexchange narkive permalink

Je ne pense pas que vous puissiez résoudre ce problème facilement avec 1 IC. Vous pouvez regarder les puces MAX7231, mais elles semblent vieilles et très chères.Vous pouvez peut-être utiliser le HEF4511 (ou DS8669) si vous pouvez trouver un encodeur <> BCD 10 bits. De plus, vous auriez du mal à le créer de cette manière.

Vous pourriez également être en mesure d'écrire les formules booléennes pour le code 10 bits en 3x une sortie BCD. Je ne m'attendrais pas à ce que ce soit très simple, car 10 entrées vers des sorties 3x4 semblent beaucoup de travail.

Je suppose que vous faites cela «juste pour le plaisir», faire cela dans le monde de l'ingénierie est pas très rentable. Vous avez probablement besoin d'un signal à 7 segments + 3 affichages et une entrée de 10 bits. Cela représente environ 20 E / S. Un simple PIC ou AVR avec 24 ou 28 broches peut gérer cela (ou un CLPD si vous avez besoin d'un traitement plus rapide - cependant, les écrans sont pour les yeux humains, ils n'ont donc pas besoin d'être ultra rapides).

supercat
2011-03-05 02:11:47 UTC
view on stackexchange narkive permalink

Il n'est pas trop difficile de configurer un CPLD ou FPGA pour convertir des données binaires décalées MSB-first en données décimales. Le bloc de construction principal est un module avec des entrées d'horloge, de données et d'effacement, quatre verrous D0-D3 et une sortie de report combinatoire. Cascade des blocs comme on le ferait avec un registre à décalage. Une fois la valeur binaire décalée, les registres contiendront l'équivalent en BCD.

; Porter si> = 5SuivantCarry = D3 | D2 et D1 | D2 et D0; Sera 8 ou 9 ssi l'entrée était 4 ou 9D3: =! D3 & D2 &! D1 &! D0 | D3 et D0; Sera 4-7 si l'entrée était 2-3 ou 7-8D2: =! D3 &! D2 & D1 | ! D3 et D2 et D1 et D0 | D3 &! D0; Sera 2-3 ou 6-7 ssi l'entrée était 1, 3, 6 ou 8D1: =! D3 &! D2 & D0 | ! D3 et D2 et D1 et! D0 | D3 &! D0; Sera étrange si le report est setD0: = CarryIn 

Notez qu'il est nécessaire d'effacer le registre avant chaque utilisation; changer de zéros ne suffira PAS. L'effacement des circuits n'est pas montré, mais devrait être évident.

WhatRoughBeast
2017-05-09 20:20:31 UTC
view on stackexchange narkive permalink

En l'occurrence, il y a un circuit qui fait exactement ce que vous voulez - en supposant que vous utilisez des niveaux logiques TTL et que 4 DIP IC correspondent à votre exigence "any IC".Ce circuit est le 74185, et la configuration exacte que vous voulez peut être trouvée dans la Figure 6 à la page 7. Il y a bien sûr quelques inconvénients.Pour commencer, le 74185 a 30 ans et est définitivement obsolète.Cependant, vous pouvez les obtenir sur eBay.Deuxièmement, vous en aurez besoin de 4, et cela vous coûtera plus de 20 dollars.Troisièmement, la puissance totale requise sera de 5 volts entre 300 et 400 mA.

Mais à part ça, c'est assez simple.Et pour ce que ça vaut, c'est en fait conforme à l'esprit de certaines des autres réponses.Comme l'indique la fiche technique, le CI est en fait une PROM 32 x 8.

Sinon, vous n'avez pas de chance pour les souvenirs à puce unique.Bien que le lsb ne nécessite pas de transformation, une sortie de 300 a besoin de 9 sorties IC, et vous ne trouverez tout simplement pas (E) (E) PROMS avec plus de 8 sorties.



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 2.0 sous laquelle il est distribué.
Loading...