Domanda:
IC decimali con codice binario
hisker
2011-02-19 16:07:03 UTC
view on stackexchange narkive permalink

Esiste un circuito integrato che può essere utilizzato per convertire il codice binario a 9 bit in un display a sette segmenti? EX: 100101100-> 300 Voglio visualizzare 300 in un display a sette segmenti quando il codice binario 100101100 è applicato all'ingresso. utilizzando solo circuiti integrati senza microcontrollori.

Perché non vuoi usare un microcontrollore? Questa sarebbe probabilmente l'opzione migliore e più economica.
Un microcontrollore è la scelta più ovvia.Dal momento che non hai fornito alcuna giustificazione sul motivo per cui non vuoi usarne uno, possiamo solo presumere che sia per stupide ragioni religiose e quindi ignorare quella specifica.
100101100 non è BCD per 300, 001100000000 è
100101100 è solo binario ... non decimale in codice binario.e l'IC che stai cercando si chiama microcontrollore, specialmente perché devi fare la divisione (o la moltiplicazione per 1/10) se vuoi decimale.
Sette risposte:
W5VO
2011-02-20 03:09:54 UTC
view on stackexchange narkive permalink

Posso pensare a tre modi per farlo. Inizierò dal più costoso e complicato e procederò verso il basso.

  1. Tutti i circuiti integrati logici: usa un contatore binario a 9 bit su / giù a caricamento parallelo (come 3x 74hc190) e un contatore BCD azzerabile a 3 cifre (3x 74hc163). Carica il contatore binario con il tuo numero a 9 bit e azzera il contatore BCD a 0. Orologio entrambi i contatori finché il contatore binario non raggiunge lo zero. Carica l'uscita del contatore BCD in un latch, quindi alimentalo a un decoder BCD-7seg. Ripeti.
    • Pro:
      • Soddisfa il requisito di utilizzare solo circuiti integrati logici standard
      • Non richiede programmazione
    • Contro :
      • Costoso (i chip del contatore costano circa $ 1-2 ciascuno)
      • Soggetto a guasti di cablaggio
      • Richiede un segnale di clock di 31 kHz per l'aggiornamento a 60 Hz
      • Richiede 8-12 CI logici (disegnerò uno schema più avanti)

  2. ROM Look- Tabella in alto: utilizza una piccola memoria FLASH asincrona parallela (come questa) per accettare tutti gli input di dati come indirizzo, quindi programma la ROM per generare output BCD per 2 cifre. Inserisci il risultato in un decodificatore da BCD a 7seg. In alternativa, utilizzare una ROM per generare una singola cifra decimale decodificata in pin a 7 segmenti.
    • Pro:
      • Prezzo per cifra abbastanza conveniente
      • Scala migliore
      • Veloce (ma la velocità non ha molta importanza)
      • Semplice da cablare / progettare
    • Contro:
      • Ogni ROM richiede una programmazione diversa
      • È necessario acquistare una ROM molto più grande di necessario
      • La programmazione richiede l'automazione del computer.

  3. Microcontrollore: un semplice microcontrollore con sufficienti ingressi e le uscite possono convertire il numero binario in BCD e quindi codificarlo in segnali di controllo a 7 segmenti. La soluzione più economica (la mia ricerca digikey ha scelto questo PIC) moltiplicherà le cifre di output. Potresti aver bisogno di transistor per pilotare l'anodo / catodo comune dei tuoi display a 7 segmenti, ma quelli possono essere transistor economici.
    • Pro:
      • La soluzione più economica a $ 1,50 - $ 2,00 in totale
      • Cablaggio semplice
      • Facilità di implementazione dell'algoritmo BCD-> BCD nel software
      • Facile aggiunta di ulteriori funzionalità
      • Sistema meno costoso per gestire il display
    • Contro:
      • È richiesto un programmatore di chip
      • È necessario scrivere software (non solo un problema hardware)
      • La soluzione più economica richiede il multiplexing delle cifre, che è più complicato dell'azionamento diretto.

Elaborerò alcuni schemi in seguito

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

Temo che non ci siano chip standard di questo tipo. Sebbene ci siano chip BCD a 7 segmenti, sarà difficile estrarre singole cifre, poiché ciò richiederebbe chip "dividi per 10".

Inoltre, CPLD sono qui per te.

Se puoi generare cifre separate invece di un singolo numero a 9 bit, sarai in grado di utilizzare chip standard.

+1 per indicare che i dati di origine sono binari, non decimali in codice binario, il che rende complicate le conversioni basate sulla logica. Ma qualsiasi tipo di chip ROM per una tabella di ricerca è una soluzione semplice.
Jaroslav Cmunt
2011-02-19 17:29:04 UTC
view on stackexchange narkive permalink

Forse il modo più semplice sarebbe creare una tabella di conversione e inserirla in EPROM o FLASH con almeno 9 indirizzi e 12 linee dati. Altrimenti CPLD o piccolo FPGA ( opencores.org ha un po 'di HDL per questo).

Se davvero volessi farlo usando circuiti integrati discreti, dovresti costruire una macchina a stati che implementa l'algoritmo, che sarebbe la soluzione più complessa e non molto diversa dal microcontrollore se non per l'aumento di prezzo, dimensioni e complessità.

Una tabella di ricerca basata su ROM è la soluzione tradizionale, che utilizza qualsiasi tecnologia ROM programmabile per te più economica e facile da gestire. Anche se probabilmente sarà più costoso e richiederà più lavoro per costruire un programmatore di dispositivi rispetto ai moderni microcontrollori. I display a più cifre sono spesso multiplexati - facile con un micro, anche se con una ROM potresti avere un ingresso di indirizzo "cifra" a due bit guidato da un oscillatore e contatore e usarlo per cercare alternativamente una delle tre cifre durante il suo turno di essere visualizzato. Altrimenti avrai bisogno di una ROM abbastanza ampia.
JustJeff
2011-02-20 07:25:50 UTC
view on stackexchange narkive permalink

Il tuo input di esempio, 100101100, è binario grezzo per 300, non decimale codificato in binario; BCD per 300 sarebbe 0011 0000 0000. Se vuoi visualizzare numeri che sono effettivamente BCD, è relativamente semplice. Ma se i tuoi input sono davvero binari, è un problema più complesso.

Per passare da raggruppamenti binari grezzi a raggruppamenti decimali, che saranno necessari per guidare la visualizzazione, devi effettivamente eseguire la conversione di base, il che implica fare qualche divisione intera. Anche se puoi farlo con i circuiti integrati logici, ci vorrà un carico di barca per farlo, il che implica MOLTI cablaggi, il che significa molte opportunità per il debug.

A meno che non ci sia un motivo valido per utilizzare i circuiti integrati logici, questo sarebbe un compito ideale per un microcontrollore a 8 bit.

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

Non credo che tu possa risolverlo facilmente con 1 IC. Potresti guardare i chip MAX7231, ma sembrano vecchi e molto costosi. Forse puoi usare HEF4511 (o DS8669) se riesci a trovare un codificatore <> BCD a 10 bit di qualche tipo. Inoltre, avresti difficoltà a crearlo in questo modo.

Potresti anche essere in grado di annotare le formule booleane per il codice a 10 bit per 3 volte un output BCD. Non mi aspetto che sia molto semplice, perché 10 input per output 3x4 sembrano un sacco di lavoro.

Suppongo che tu stia facendo questo "solo per divertimento", farlo nel mondo dell'ingegneria è non molto conveniente. Probabilmente avrai bisogno di un segnale a 7 segmenti + 3 display e 10 bit di ingresso. Si tratta di circa 20 I / O. Un semplice PIC o AVR con 24 o 28 pin può gestirlo (o un CLPD se hai bisogno di un'elaborazione più veloce, tuttavia i display sono per gli occhi umani, quindi non devono essere ultra veloci).

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

Non è difficile impostare un CPLD o FPGA per convertire i dati binari spostati MSB-first in dati decimali. L'elemento costitutivo principale è un modulo con clock, dati e input di cancellazione, quattro latch D0-D3 e un'uscita di trasporto successivo combinatorio. Metti in cascata i blocchi come si farebbe con un registro a scorrimento. Dopo che il valore binario è stato spostato, i registri conterranno l'equivalente in BCD.

; Riporta se> = 5NextCarry = D3 | D2 e D1 | D2 e D0; Sarà 8 o 9 se l'input era 4 o 9D3: =! D3 & D2 &! D1 &! D0 | D3 e D0; Sarà 4-7 se l'input era 2-3 o 7-8D2: =! D3 &! D2 & D1 | ! D3 e D2 e ​​D1 e D0 | D3 &! D0; Sarà 2-3 o 6-7 se l'input era 1, 3, 6 o 8D1: =! D3 &! D2 & D0 | ! D3 e D2 e ​​D1 e! D0 | D3 &! D0; Sarà strano se e solo il carry-in è setD0: = CarryIn 

Nota che è necessario cancellare il registro prima di ogni utilizzo; lo spostamento di zeri NON sarà sufficiente. La cancellazione dei circuiti non è mostrata, ma dovrebbe essere ovvia.

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

Come accade, c'è un circuito che fa esattamente quello che vuoi - supponendo che tu stia usando livelli logici TTL e 4 DIP IC soddisfano i tuoi requisiti "qualsiasi IC".Questo circuito è il 74185 e la configurazione esatta desiderata può essere trovata nella Figura 6 a pagina 7. Ci sono alcuni inconvenienti, ovviamente.Per cominciare, il 74185 ha 30 anni ed è decisamente obsoleto.Tuttavia, puoi ottenerli su eBay.Secondo, ti serviranno 4 di loro e questo ti farà guadagnare più di 20 dollari.Terzo, la potenza totale richiesta sarà di 5 volt da 300 a 400 mA.

Ma a parte questo, è piuttosto semplice.E per quel che vale, è effettivamente in linea con lo spirito di alcune delle altre risposte.Come afferma la scheda tecnica, l'IC è in realtà una PROM 32 x 8.

Altrimenti, per i ricordi a chip singolo sei sfortunato.Sebbene lsb non richieda la trasformazione, un output di 300 necessita di 9 output IC e semplicemente non troverai (E) (E) PROM con più di 8 output.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 2.0 con cui è distribuito.
Loading...