Domanda:
Binario a 7 segmenti in esadecimale
Goswin von Brederlow
2018-01-23 18:29:28 UTC
view on stackexchange narkive permalink

Sto cercando di visualizzare un numero binario a 4 bit su un LED a 7 segmenti come numero esadecimale (0-F). Ho un assortimento di circuiti integrati della serie 7400 compreso il 7447. Ma quello funziona solo per BCD (0-9). La serie 7400 non sembra avere un decodificatore esadecimale a 7 segmenti e non ne ho uno a portata di mano.

Quindi immagino che dovrei costruirne uno mio. La scheda tecnica per un 7447 viene fornita con il circuito interno ma non sono riuscito a trovare un circuito simile per esadecimale a 7 segmenti. Ho realizzato manualmente i diagrammi K per ogni segmento LED, ma i termini sono piuttosto grandi, molto più grandi rispetto a BCD.

Qualcuno ha un circuito finito per questo con cui posso controllare il mio lavoro?

Qualcuno ha un circuito ottimizzato per questo che sfrutta i sottotermini comuni? Non ci sono molti termini duplicati (come A0 & ~ A1 & A2) ma forse usare (A0 & A2) & ~ A1 consentirebbe la condivisione del sottotermine (A0 & A2) e nel complesso ridurrebbe il numero di gate.

O forse qualche trucco per usare porte NAND, NOR o XOR per alcune parti?

Non mi interessano le diverse lunghezze del percorso o le gare nel circuito, poiché guiderà solo i LED e dovrebbe essere troppo veloce per vedere nulla di tutto ciò.

So che non è la soluzione giusta che stai cercando, ma ti consiglio di utilizzare una EEPROM come AT28C16 o simile per convertire il binario in esadecimale.Dovrai solo programmare i primi 16 byte.Collegare i quattro numeri binari da convertire in esadecimale alle prime 4 linee di indirizzo e le linee di dati ai pin 7-seg.Programmare ogni byte dei primi 16 byte in modo che per l'indirizzo 0000 si illumini 0 sul display a 7 seg, per l'indirizzo 0001 si accende 1 sul display a 7 seg, e .....Ripeti fino a quando non hai programmato tutti i primi 16 byte.Questo può essere fatto anche con un UC.
@dirac16, non programmereste gli _last_ 16 byte e richiamereste le righe di indirizzo non utilizzate?
@jameslarge Sì, puoi.Ma programmerei i primi 16 byte e tirerei giù le altre linee di indirizzo inutilizzate.
Lo confesso, il mio pensiero è ancora plasmato dall'era TTL, quando tutti gli input inutilizzati erano aumentati.
Domanda veloce: su un display a 7 segmenti, come intendi dire la differenza tra "8, B" e "0, D"?I display che ho visto che erano destinati all'esadecimale hanno tutti utilizzato più di soli 7 segmenti ...
@Baldrickk Esadecimale su un display a 7 segmenti utilizza lettere minuscole per "b" e "d".Quindi hai un problema con "b" e "6" che sono simili, ma "6" ha il segmento superiore riempito e "b" no.(Basato sulla calcolatrice Casio FX-100D che è sulla mia scrivania di fronte a me in questo momento.)
[Correlato] (https://codegolf.stackexchange.com/questions/37648/drive-a-hexadecimal-7-segment-display-using-nand-logic-gates)
Sto downvoting questa domanda poiché anche se mi piace la discussione, la maggior parte riguarda la progettazione logica generica che include CPLD, microcontrollori e PLA.E anche la mia risposta, che voglio eliminare, implica semplicemente l'esecuzione di una ricerca su Internet ("hex 7 segmenti"), il che implica la mia opinione (inconscia?) Che OP avrebbe potuto fare di più.
In effetti, ricordo che in una delle mie lezioni * 30 * dispari anni fa avevo un display esadecimale per programmare una scheda di addestramento Motorola 6800, quindi la tecnica anteriore esiste, anche se mancava Internet.
Dieci risposte:
Olin Lathrop
2018-01-23 19:09:06 UTC
view on stackexchange narkive permalink

Trova in quale museo mancano i circuiti integrati logici 74xx e restituiscili.Quindi prendi un piccolo microcontrollore e fai tutto questo in un singolo chip.Come bonus, sarai pronto per altri progetti avanzati dalla fine degli anni '80 e oltre.

Fino ad oggi la mia vecchia università richiede ancora agli studenti di utilizzare i circuiti integrati LS74.Immagino che ci aiuti nelle nostre fondamenta?
Potrei usare il mio At-Mega e il cappello e-paper.Ma non è quello che ho chiesto.
Richard the Spacecat
2018-01-23 19:14:11 UTC
view on stackexchange narkive permalink

Forse, se ti senti particolarmente avventuroso, potresti persino usare una ROM a diodi, con forse due decoder 74'138 da 3 a 8 linee per decodificare / guidare il materiale.:)

A crude schematic Ecco uno schema grezzo dell'intero aggeggio;Se ti capita di utilizzare alcuni display a LED ad alta efficienza, potresti persino essere in grado di pilotare direttamente uno a anodo comune.

Il pin "! EN" può essere uno dei pin gate del pin "138.Puoi anche collegare entrambi gli altri pin del gate insieme, permettendoti di attivare o disattivare l'uscita del display a tuo piacimento.

Questo ha anche il vantaggio rispetto alla soluzione ROM suggerita che è poco costoso costruire / prototipare se hai le parti a portata di mano, o non puoi essere particolarmente preoccupato di programmare ROM.

Inoltre, si potrebbe anche chiamare questo divertimento da fare :)

Un 22V10 costa circa $ 2 e può farlo in un unico chip, ma ammiro la tua intrepidità.
Se sei ancora più avventuroso, potrebbe essere divertente elaborare un approccio più "economico" se sei disposto a mettere due diodi in serie.Ad esempio, se si usassero due diodi per ogni "angolo" per illuminare un segmento superiore o inferiore insieme al bordo adiacente (otto diodi), si salverebbero due diodi da ciascuno di 0, 2, 3, 5, 8, unoda 7 e uno o due da 6 e 9 (a seconda del carattere).Un semplice layout ROM a diodi è probabilmente più facile da costruire, ma trovare una soluzione più economica potrebbe essere un bel puzzle.
Il trucco da usare qui è programmare i segmenti scuri, poiché ce ne sono meno.Utilizzare anche il decodificatore '154 da 4 linee a 16 linee.:)
I diodi 1n4148 costano 40 pence britannici per cento a Farnell.Ricordo di aver fatto solo questo circuito.Nel 1975.
Mi piace questo.Probabilmente collegherei le uscite della "ROM" a porte NOT per pilotare effettivamente i LED.Altrimenti per 8 devi pilotare tutti e 7 i segmenti con un singolo pin di uscita di un 74138. Ciò renderebbe 4 circuiti integrati + molti diodi.
@GoswinvonBrederlow Sì, l'utilizzo di porte NOT è fondamentalmente il modo tradizionale di pilotare i LED con TTL, afaik.Unisciti a questo con il suggerimento di Lurker Larry e sei a posto.:)
Spehro Pefhany
2018-01-23 20:45:41 UTC
view on stackexchange narkive permalink

Se vuoi armeggiare con i gate, un'altra possibilità è usare un piccolo FPGA o CPLD.Puoi iniziare con un FPGA basato su flash per poche decine di dollari.

Riprogrammalo tutte le volte che è necessario per farlo bene e generalmente ottieni molti pin I / O per dollaro.

Codice VHDL di esempio qui

Ad esempio, (traballante e non proprio un ciclo completo, ma hai un'idea):

enter image description here

Anonymous
2018-01-23 19:15:35 UTC
view on stackexchange narkive permalink

Ma quello funziona solo per BCD (0-9).

In realtà 7447 fisicamente può accettare valori esadecimali di A-F, ma visualizzano immagini sbagliate per loro, vedi qui pagina 3.

A mio parere, realizzare un decodificatore da esadecimale a sette segmenti potrebbe essere utile per l'istruzione e la visualizzazione di come funziona l'elettronica digitale, ma è davvero una cattiva idea dal punto di vista pratico: non è necessario un complesso e consuma molta energia rispetto ad altre soluzioni.

Ricordo di avere una scheda diagnostica per PC nel ~ 1995 che mostrava i codici di errore / stato in esadecimale (qualcosa come questo), e questa scheda utilizzava chip GAL - predecessori di CPLD.

Se hai cercato la soluzione su Internet, potresti aver visto molti progetti simili utilizzando logica programmabile o dispositivi basati su MCU come Arduino.

@ dirac16 ha suggerito un altro modo: utilizzare un chip ROM parallelo, una sorta di tabella di ricerca con byte che rappresentano i segmenti attivati ​​/ disattivati ​​per il rispettivo indirizzo (valore di input).

Non dovrebbe essere pratico ma istruttivo.
Janka
2018-01-23 20:45:18 UTC
view on stackexchange narkive permalink

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

Al giorno d'oggi è difficile mettere le mani su tutte queste cose.

Ho visto un riferimento all'MC14493 che faceva esadecimale a 7 segmenti, ma mi sono sentito frustrato mentre cercavo una scheda tecnica.Ma era disponibile per 8,75 EUR in quantità singole.Ho paura che sia solo bcd, quindi prima troverei quella scheda tecnica.
74C915 è un convertitore da 7 segmenti a BCD.Modo sbagliato e solo BCD non esadecimale.Strano chip da fare.
Ah sì, hai ragione.Ma conosco un caso d'uso per un tale chip: bilance stampate.Richiedono che il cliente veda il peso corretto, quindi la legge potrebbe richiedere di riconvertire l'output visibile in BCD se si desidera collegare una stampante.
@LurkerLarry MC14495 è ancora disponibile su eBay, $ 1,50, ed ecco il [datasheet] (http://www.riana.com/electronics/docs/MC14495.pdf).Ne ho acquistati un paio di recente, nessun problema riscontrato.
Goswin von Brederlow
2018-04-21 00:25:28 UTC
view on stackexchange narkive permalink

Penso di essere riuscito a trovare la soluzione ottimale (una di queste) ora.Utilizza tutte le 24 porte di 6 circuiti integrati:

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

Sono riuscito a trovare diverse soluzioni utilizzando solo 23 porte ma più circuiti integrati.Ho la sensazione che non ci sia una soluzione con solo 5 circuiti integrati.

Nota: il circuito emette BASSO quando il LED dovrebbe essere acceso poiché il mio LED a 7 segmenti ha un VCC comune.

schematic

simula questo circuito - Schema creato utilizzando CircuitLab

D3-D0 sono gli ingressi con D3 come MSB.A-G sono le uscite dove A è il LED superiore, quindi gira in senso orario e l'ultima G è il LED centrale.

Hai considerato qualcosa come il 74HC157 [multiplexer 4: 1 a 2 canali] o forse una sua variante invertente?Sarebbe stato più bello se ci fosse una variante che scambiava le uscite di abilitazione per ingressi di selezione separati sinistro / destro, ma tali chip possono essere davvero utili a volte.
Solo in alternativa a un diodo rom ma ne servono troppi.Potresti usarli come porte programmabili ma ogni multiplexer dovrebbe sostituire 2 porte per disegnare in modo uniforme.
Dmitry Grigoryev
2018-01-23 20:14:10 UTC
view on stackexchange narkive permalink

Se desideri progettare manualmente le funzioni e verificarne la correttezza prima (o invece di) implementarle nell'hardware, puoi utilizzare un calcolatore online come questo.

Esistono anche strumenti che possono ridurre al minimo più funzioni logiche condividendo input comuni.Uno è expresso, che ha implementazioni gratuite in Windows e Linux.

Sembra davvero un commento che offre consigli di supporto, non una risposta.
@ChrisStratton Francamente non vedo il vantaggio di pubblicare qui le soluzioni effettive.
Quella calcolatrice risolve solo un output alla volta e mostra solo una soluzione anche se ce ne sono più.Ciò significa che può fornire soluzioni che hanno meno termini in comune tra gli output.Cioèutilizzare più cancelli del necessario.
@GoswinvonBrederlow Buon punto, ma è una questione di ricerca per trovare un ottimizzatore logico che fa quello che vuoi.
@DmitryGrigoryev Ho cercato prima e non ho mai trovato un ottimizzatore logico gratuito che faccia molto di più che trasformare semplicemente POS o SOP per utilizzare diversi tipi di gate.Niente che effettivamente ottimizzi.È un problema difficile NP, credo e impiega troppo tempo per trovare la soluzione ottimale.Quindi le persone non ci provano.Diventa rapidamente più semplice usare una rom come tabella di ricerca (come suggerito sopra).
Secondo la pagina man, espresso ottimizza, sebbene utilizzi l'euristica per semplificare l'attività.
Ho già provato Logic Friday (uno degli strumenti elencati come utilizzo dell'espresso) e non è stato ottimizzato per i gate disponibili.Sembra trovare una forma minimale usando l'espresso e poi converte / esprime quella forma minimale usando le porte selezionate.Va bene se vuoi solo NAND o AND + OR.Ma se hai AND + NAND + OR + NOR + XOR non vede la necessità di trasformare nulla e non userà i tipi di gate extra per un risultato più ottimale.
Ronan Paixão
2018-01-23 23:46:56 UTC
view on stackexchange narkive permalink

È stato detto che puoi provare l ' ICM7218 o qualche altro chip.

Puoi anche provare a costruire il tuo circuito di combinazione. Questo è un ottimo video tutorial su come farlo e sui suoi meccanismi.Se vuoi ottimizzarlo, ci sono alcuni fogli dati ( 1, 2) con la parte BCD (0-9).

Come follow-up, questo ragazzo ha anche realizzato un video di follow-up su come fare lo stesso con una EEPROM.Certo, devi ancora programmarlo, ma potrebbe valerne la pena.

E parlando di programmazione, puoi anche fare tutto con un microcontrollore.Di solito è più facile da programmare rispetto a un CPLD ( che puoi anche usare) e ci sono implementazioni sia di codice che di tabulari.Userei questa opzione, dato che ho familiarità con i microcontrollori (non sei limitato ad Arduino) e solo per il chip potrebbe essere anche la tua opzione più economica.

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

Utilizza Google per trovare elementi "hex 7 segmenti", inclusi http://en.wikipedia.org/wiki/Seven-segment_display che ha una tabella di verità esadecimale (in esadecimale!).Altri elementi includono diagrammi e dimostrazioni video.

In realtà stavo cercando display a quattro cifre e sette segmenti che eseguano la decodifica esadecimale per te, ma sono considerati "antichi" (sniff) e quelli moderni utilizzano interfacce i2c anziché parallele.

E il 95% dei risultati in realtà parla di BCD a 7 segmenti, il 4% non ha circuiti ma solo tabelle di verità e tale e l'1% sono video in cui non è possibile capire cosa dovrebbe essere un cancello e o o cancello.
Forse allora avrei dovuto pubblicare questo link https://youtu.be/7zffjsXqATg e dire che il circuito che hai richiesto è a 12 minuti e la sua implementazione TTL viene mostrata 30 secondi dopo.La sua lista delle parti è nella descrizione.Mi scuso sinceramente per non aver tenuto conto che i risultati dei motori di ricerca non sono prevedibili.
Sì, questo è l'1% nella ricerca che si applica effettivamente, i "video in cui non puoi capire cosa dovrebbe essere un cancello o un cancello".Ho guardato di nuovo il circuito e utilizza 49 porte AND e OR.https://codegolf.stackexchange.com/questions/37648/drive-a-hexadecimal-7-segment-display-using-nand-logic-gates d'altra parte ha una soluzione con 37 porte NAND.Finora questo è il vincitore.
WooShell
2018-01-24 18:43:57 UTC
view on stackexchange narkive permalink

Uso il DM9368N per questo scopo ormai da anni ed è abbastanza facile da ottenere (15 $ per una confezione da 10 su ebay o Aliexpress).

Questo dispositivo ha esattamente la logica richiesta per il lavoro, ma attenzione alla corrente di alimentazione!
@henros Naturalmente, questo chip è progettato per pilotare direttamente un display a LED .. non è possibile utilizzarlo solo come decoder per inoltrare in ulteriore logica.


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