Fórum témák

» Több friss téma
Fórum » N bites bináris szám megjelenítése 7 szegmenses kijelzőn
Lapozás: OK   1 / 2
(#) asm hozzászólása Szept 1, 2014 /
 
A témához hasonló kérdések talán már lettek feltéve ezen az oldalon, viszont engem egy általánosabb, IC-mentes, pusztán csak logikai kapukra, és diszkrét elemekre építkező - bár tudom, bonyolultabb - megoldási menet érdekelne. Remélem, hogy a problémára az idők során már kialakult egy bevett eljárás, mivel a józan paraszti eszemmel úgy látom, hogy rengeteg helyen alkalmazott az általam érdekelt megoldás valamilyen formája - így pl. kézi számológépeknél, régebbi multimétereknél, stb.

A probléma a következő - (a kérdés értelemszerűen "hogyan oldjuk meg?"):

Van egy N számú vezetékről (feszültségértékek formájában, pl. ideális esetben 0V/5V értékekként) leolvasható/levehető N bites bináris érték. Magyarán bármilyen hosszú bináris szám szóba jöhet.
Nekünk ezt a bináris számot kell a vele egyenértékű decimális szám formájában megjeleníteni 7 szegmenses kijelzőkön úgy, hogy nem használhatunk IC-t (és 2-nél több bemenetű logikai kapukat sem), csak logikai kapukat és diszkrét elemeket. Ezenfelül lehetőleg olyan megoldás legyen, hogy ne kelljen mind a 2^N előforduló bináris értékre logikai minimalizációt végezni a szerint, hogy az adott érték esetében milyen bináris értékeket kell kialakítani a 7-szegmenses kijelzőkre.

Számomra itt leginkább az a megfoghatatlan, hogy hogy lehet összehozni a 16-os és a 10-es számrendszer között a helyiértékváltást. Nem tudom, érthető-e ez alatt, hogy mire gondolok....
Azonkívül, hogy az egyes számJEGYEK hogyan* jeleníthetők meg a 7-szegmenses kijelzőn, nem tudom elképzelni a megoldást, pedig igazán érdekelne, hogy erre a mérnökök anno mit találtak ki!?

(*):
0 : 0111111
1 : 0000110
2 : 1011011
3 : 1001111
4 : 1100110
5 : 1101101
6 : 1111101
7 : 0000111
8 : 1111111
9 : 1101111
Össz-vissz ennyi, ami megvan. Gondolom ez még bakfity.

Nagyon hálás lennék, ha valaki, aki erről tanult, el tudná magyarázi a dolog nyitját!
A hozzászólás módosítva: Szept 1, 2014
(#) kaqkk válasza asm hozzászólására (») Szept 1, 2014 /
 
Idézet:
„hogy nem használhatunk IC-t csak logikai kapukat és diszkrét elemeket”
Egyik szavaddal ütöd a másikat (a logikai kapuk is ic-k ) De miért akarsz egy diszkrét elemekből álló alkatrész temetőt építeni egy "egyszerű" pár ic-s vagy netán egy mikroprocis pici panelka helyett ? Egyébként ha csak ennyi amit át kell konvertálni lehet hogy egy félmarék diódával és egy db 7szegmenses kijelzővel megoldható a dolog ...
A hozzászólás módosítva: Szept 1, 2014
(#) asm hozzászólása Szept 1, 2014 /
 
Bocsi, csak volt, ahol a logikai kapukat még nem tekintették IC-nek, volt, ahol meg egyenesen a cikk diszkrét elemeknek tekintette a logikai kapukat. De amúgy igen, neked van igazad, bocsi.
A logikai kapukat amúgy még én is be tudnám helyettesíteni a megfelelő kapcsolásokkal - gondolom, abban még nincs buktató.

Amúgy meg egyfelől elméleti szinten érdekelne az egész, ahogy írtam is, hogy vajon hogy a fenébe tudtán annak idején az okosok kitalálni erre az IC-ket. Én magam próbálgattam jegyzettömben felírni, összehasonlítani az értékeket, számológéppel próbálkozni, hátha találok valami összefüggést, amiből ki tudnék indulni, de egyszerűen semmi. Vakvágányon vagyok.

Másfelől meg azért szoktam alapból a diszkrét elemekre építkező megoldásokat keresni, mert mielőtt tényleg megcsinálnék valamit, azt szeretném letesztelni szimulátorban, hogy mégis működne-e rendesen, ami "papíron le van rajzolva". És ugye érthető módon csak a legfontosabb IC-k "virtuális megfelelői" kerülnek be a programba, meg esetleg a gyártótól pár, és egyáltalán nem valószínű, hogy a sok százezer létező IC-ből pont az megvan nekem.

De ez az utóbbi itt most csak másodlagos "ürügy", mivel ezt egyáltalában nem terveztem megépíteni, számítottam rá, hogy nagyon sok alkatrészből állna, ami sok pénz is ugyebár. Csak furdal a kíváncsiság, hogy mi a nyitja a dolognak, hogy aztán ámulhassak, hogy "jé, tényleg, milyen kézenfekvő is a megoldás!!"....
(#) elektroncso válasza asm hozzászólására (») Szept 1, 2014 /
 
Tessék, egy számológép integrál áramkörök nélkül:Ural-2. Kapcsolási rajzot ne kérj. De ezekről a számológépekről van cikk az RT 2011-es évkönyvében. Magyarország első számítógépe címmel.
(#) Hp41C válasza asm hozzászólására (») Szept 1, 2014 /
 
Amikor ezek a feladatok előjöttek, a diszkrét elemekkel és kétbemenetű kapukkal kezelhetetlen méretű áramkörök körvonalazódtak. A fejlesztés inkább a tipukus elemek MSI megvalósítása felé kanyarodott: BIN - BCD átkódoló - 74184 és 74185, BCD - hétszegmenses átkódoló - 7446 .. 7448. Az adatlapjaikon megtalálható a felépítésük, az igazság táblázatuk és még néhány mintapélda is.
Más módszerekkel is megoldható a feladat:
Pl.:
- Számlálókkal. Egy bináris lefelé számlálóba töltjük a bináris értéket, és egy vele azonos órajellel léptetett BCD felfelé számlálóba készítjük az eredményt. Ha a lefelé számláló 0 -ra ért, a BCD számláló a megfelelő értéket tartalmazza, kimenete mehet a hétszegmenses dekóderekre.
- PROM / EPROM, mint univerziális kombinációs hálózat. Egy 64k * 35 bites memóriával, egy 64k * 20 bitessel és 5 db BCD - hétszegmenses dekóderrel meg lehet oldani a 16 bit bináris - 5 digit hétszegmenses átkódolást.
A fenti áramköröm "életképtelenek": költségesek, terjengősek, sokat fogyasztanak.
Manapság ezeket a feladatokat egy mikrokontrollerrel oldják meg. Egy 16 .. 8 lábú tok (méretben alig nagyobb, mint egy 7400) megoldható az analóg jel átalakítása digitális formára, a bináris érték átkonvertálása BCD kóddá és a BCD kód megjelenítése egy 4 bigites, multiplexált kijelződe - mindezt kb. 300 Ft -ert, náhány mW tápigénnyel. Egy kist nagyobb tokkal még elküldhető egy felügyeleti egységnek is 1-wire, soros vagy USB kommunikációval...
(#) asm válasza kaqkk hozzászólására (») Szept 1, 2014 /
 
"Egyébként ha csak ennyi amit át kell konvertálni lehet hogy egy félmarék diódával és egy db 7szegmenses kijelzővel megoldható a dolog"

Ööööö, azt hiszem sajna nem... legalábbis 1 db 7-szegmenses kijelző biztos nem elég.
Vegyünk egy konkrét példát:

Van ez a hosszú bináris szám: 100101110110000101
Ez érkezik 18 vezetéken (18 bit ugye).
Ennek a számnak a decimális értéke 155013, ehhez ugye 6 db 7-szegmenses kijelző kéne.
És a kérdés az, hogy hogyan tudnék a kezdeti 100101110110000101 bináris sorból 0000110-1101101-1101101-0111111-0000110-1001111 sort "varázsolni" (ami az adott decimális jegyeket tudná megjeleníteni a 6 db egyjegyű kijelzőn, konkrétan valamilyen dekódoló áramkörrel.
És arra a dekódoló áramkörre, tegyük fel, érkezhet bármilyen 18 bites másik bináris számérték is, de arra is működnie kéne a dekódolónak.
Itt, ami betesz a dologba, hogy ha 4 bites csoportokra bontanám, akkor mindig ott van az a felső 6 érték, aminél a decimális megfelelő már a következő helyiértékhez ad hozzá egyet, illetve, ésígytovább.
Elnézést, ha nehezen érthető ez a része, de nem tudom máshogy megfogni a dolgot.
(#) kaqkk válasza asm hozzászólására (») Szept 1, 2014 /
 
Az első hsz ben csak 1-9 ig terjedő számsor volt erre írtam amit írtam.
Idézet:
„(*):
0 : 0111111
1 : 0000110
2 : 1011011
3 : 1001111
4 : 1100110
5 : 1101101
6 : 1111101
7 : 0000111
8 : 1111111
9 : 1101111
Össz-vissz ennyi, ami megvan. Gondolom ez még bakfity.”
.De egy kijelző "csak" 0-9 közti számokat tud kijelezni , tehát ha minden kijelzőt megcsinálsz egy egy diódasorral akárhány kijelzőt használhatsz akárhány adat megjelenítéséhez , csak azt nem tudom hogyan különíted el az egyes biteket az
Idézet:
„N számú vezetékről (”
Ezt nem tudod diszkrét elemekkel ic nélkül megoldani (ámbár számítógépet is építettek szóló tranzisztorokból) neked is meg van az esélyed rá hogy egykét év gondolkodás után egy 30-40 kg os szerkezetet építesz és az azt fogja csinálni amit szeretnél , ic nélkül.....
A hozzászólás módosítva: Szept 1, 2014
(#) elektroncso válasza kaqkk hozzászólására (») Szept 1, 2014 /
 
Béka már csinált hasonlót, a második jelgenerátorában a szegmens kódolást diódákból rakta ki.Bővebben: Link
(#) Inhouse válasza asm hozzászólására (») Szept 1, 2014 /
 
A 0..9-ig decimális számokhoz tartozó bináris számsorok hogyan jöttek ki? Mi alapján?
Béka meg nagy kópé ám!
A hozzászólás módosítva: Szept 1, 2014
(#) asm válasza Inhouse hozzászólására (») Szept 1, 2014 /
 
Azokat csak végigpróbálgattam, ennyi. De azt csak érzékeltetésként írtam le, hogy össz-vissz ennyi, ami saját kútfőből ment, a többihez már kb. lövésem sincs, hogy hogy megy a dekódolás.
Még a BCD fogalma is tök új volt nekem, amit páran emlegettetek, most el kezdtem olvasgatni róla neten, de még nem vagyok benne biztos, hogy ez a része világos - mármint hogy mire kell, de kb. már sejtem.

P.S.: elnézést, kicsit hülyén állnak a kapcsolók - ti.: szimuláció után a kapcsolókat mindig visszaállítja a program, de a kijelzőket nem -, a második kép már ilyen szempontból helyes. De ez csak egy példa....
A hozzászólás módosítva: Szept 1, 2014
(#) szabics válasza asm hozzászólására (») Szept 1, 2014 /
 
Ez egy 7 szegmenses közös katódos kijelző szegmenskódjai. A következő sorrendben. GFEDCBA 7 bites csoportokba kell szervezni és közvetlenül a kijelzőt meghajtani. Ahol logkai 1 van ott a szegmens világit.

7segLed.gif
    
(#) proba válasza asm hozzászólására (») Szept 2, 2014 /
 
Én csak abból tudok kiindulni, amikor kontrollerre kerestem erre a feladatra megoldást hosszabb számokhoz , nem igazán logikai kapukkal megoldható megoldásokat találtam. Ott kb az volt a megoldás, minden helyértékhez tartozó 10-es számrendszerű BCD számot add össze BCD szabályainak megfelelően. Ehez minimum BCD összeadókat kellene építened kapukból, a számlánc hosszának függvényében.
A másik microchip appnote-ben volt Ezt valami shift regiszteres, számlálós áramkörrel lehetne megvalósítani.
Ebből számomra az következik ha egy kontrollerrel ennyit küzdenek vele, passzív alkatrészekkel eléggé reménytelennek tartom az egyszerű megvalósítást.
(#) ktamas66 válasza asm hozzászólására (») Szept 2, 2014 /
 
Persze, hogy van megoldás, csak a szoftver egyszerűbb.
(#) Inhouse válasza asm hozzászólására (») Szept 2, 2014 /
 
Én nem értem ezt...az adott decimális számok szerintem nem úgy néznek ki binárisra váltva, nekem ez katyvasz, vagy nem bináris megfeleltetés...maguk az ötleteid is eléggé félre vannak menve...sokkal jobban jársz, ha leírod, hogy mit miért akarsz, mert lehet, hogy már eleve egy félresikerült tervet akarsz itt a fórumon formába önteni...
(#) Hp41C válasza asm hozzászólására (») Szept 2, 2014 /
 
- Az 74184-74185 adatlapján a Figure 8. egy 16 bites bináris szám BCD -vé alakítását mutatja be. Szerintem a 74184 - 74185 elég öreg ahhoz, hogy ismerje bármalyik szimulátor. Ehhez a feladathoz potom 16 darab kell belőlük, darabonként 100mA tápárammal - azaz 8W teljesítményigénnyel. Valamit mond az is, ha egy elemet nem készítenek el modernebb technológiával (LS, HC változat nem készült belőlük).
- Ha a feladat egy analóg feszültség mérése és megjelenítése hétszegmenses kijelzőn, akkor célszerűbb lenne BCD kódolású A/D konvertert használni, amiben benen van a hétszegmenses kódoló is: ICL7106, ADD3105, 74C935.
(#) szabics válasza Inhouse hozzászólására (») Szept 2, 2014 /
 
Igazad van ez még véletlenül sem bináris. Ez egy kijelzőhöz tartozó szegmenskód, csak hasonlisd össze ezt

0 : 0111111
1 : 0000110
2 : 1011011
3 : 1001111
4 : 1100110
5 : 1101101
6 : 1111101
7 : 0000111
8 : 1111111
9 : 1101111
Az igazságtáblával ha az asm által írottakat invertálod. Tökéletesen egyezik.
ha meg valóban bináris szám akkor( kétlem mert a binrisszámot nem szokták 7 bites csoportokra osztani a hossza annyi amennyi) arra van külön ic a texasnak.
A hozzászólás módosítva: Szept 2, 2014
(#) proba válasza szabics hozzászólására (») Szept 2, 2014 /
 
A kezdő hozzászólásból szerintem kiderül, hogy nem is annak szánta, ő is a decimális számból készített kijelzendő képet ( ezek szerint jól).
(#) Inhouse válasza szabics hozzászólására (») Szept 2, 2014 /
 
Köszi.
(#) tcs52 válasza asm hozzászólására (») Szept 4, 2014 / 1
 
A 7 szegmenses kijelzés tömeges elterjedése idejében a számítástechnika már számos nagyszámítógép kifejlesztésén túlesett, és ezekel a numerikus algoritmusokkal, számrendszerekkel, kódolásokkal kapcsolatban jelentős mennyiségű ismeret, tapasztalat halmozódott fel.

Ezért - kissé összefoglalva az előzőeket - és az akkori kor műszaki fejlettségét is figyelembe véve a mérnököknek az alábbi lehetőségeik voltak:

1. Elsősorban - processzorok hiányában - BCD kódolást használva dolgoztak, melyben a decimális számjegyeket 4 biten kódolták (többféle lehetőség közül valamelyiket választva). Ez esetben nem volt szükségük az általad feltett kérdéshez kapcsolódó áramkörökre, hanem csupán a 4 bitből 7 szegmenssé alakítás volt a legbonyolultabb feladat. Ez volt a jellemző a digitális karórákra, a multiméterekre, illetve a zsebszámológépekre.

2. Amennyiben mégis valamilyen módon binárisan állt elő valamilyen decimálisen megjelenítendő érték, akkor valamiféle processzorszerű megoldást kellett választani. A binárisról decimálisra való átalakításnak ugyanis algoritmikus módszerei vannak (ill. lettek kidolgozva a nagyszámítógépekre). Ezeket az algoritmusokat - tudomásom szerint - soha nem kisérelték meg kapukkal realizáni nagyszámú bit esetére.

Az algoritmus képzésének processzorszerű áramkörrel számos leegyszerűsített módját ki lehetett találni (zsebszámológépekben ez tipikus), főleg amikor a beégethető ROM-ok megjelentek (pl. a 74188 - 32x8 bites PROM). Ám azidőtájt a digitális technika rohamosan fejlődött, és a mérnököknek talán mág tíz éven keresztül se kellett ezzel bíbelődni, mert megjelentek a mikroprocesszorok, sőt annak az olcsó fajtái is, nomeg az UV-PROM-ok, és RAM IC-k. Tehát a kapukból kirakás rögös útjai értelmetlenné váltak. Egyébként is a gyakori feladatokra addigra már céláramköröket gyártottak, egy IC-be integrálva a processzoros megoldást.

Ha azonban ezek után felkeltette az érdeklődésedet a binárisból BCD átalakításnak az algoritmusa, akkor erre számos - egymástól különböző - módszer ismeretes (levonogatós-fölszorzós, osztogatós, stb.), s csupán a végére kell egy 4 bitról 7 bitre (szegmensre) való átalakítás, amelyet - ha meg akarjuk kerülni az erre már 5 évtizede létező MSI IC-t - akkor kirakhatjuk diódás mátrixból is.

Egy kis kiegészítés a BCD-hez, mivel úgy tünik még neked nem tiszta:

A bináris aritmetikában, ahol egy jól meghatározott hosszúságú, 2-es számrendszerben ábrázolt számokkal dolgozunk, az aritmetikai műveletek jelentősen leegyszeűsödnek, s az összeadó-kivonó áramkörök viszonylag egyszerűek lesznek, a szorzás sima összadásokra (illetve eltolásokra) vezethető vissza. Hátránya pont az általad kérdésesnek tünő átalakítás.

Az átalakítás kiküszöbölhető, ha továbbra is 10-es számrendszerben maradunk, és csupán a tizes számrendszerbéli számjegyeket ábrázoljuk - külön-külön - 4 bites értékekként, pl. a 0000-1001 értékekkel és az 1010-1111 értékeket nem használva. Ekkor a 10-es számrendszerbéli számjegyek összeadása némileg - de nem nagyon - komplikálódik, de csupán 4 bites összeadó áramkör kell. A több számjegyű összeadás se lesz sokkal bonyolultabb, de a szorzás már kissé gázosabb, az osztást meg most hagyjuk ki a problémák köréből. Tehát az egész olyan mintha papírra leírt 0-9 szájegyek helyet 4 biteken tárolt számjegyekkel dolgoznánk. Ha pl. egy konkrét esetben - önkényesen - kikötjük, hogy 12 decimális számjegynél többel nem dolgozunk, akkor minden tárolt értékünk 12 db 4 bites tárolóba kerül. A föntiek szerint pl. a papíron 9876543210-nek látszó szám (az elején 0-ákkal kiegészítve): 0000 0000 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000 tárolóértékekkel lenne ábrázolva.
(#) krisztian98 hozzászólása Nov 26, 2014 /
 
Sziasztok,

A következőben kérném a segítségeteket.
Egy PIC-hez szeretnék illeszteni 32db 4digites 7 szegmenses kijelzőt.

Az lenne a kérdésem, hogy a PIC és a 4digites 7 szegmenses kijelző közzé milyen IC-t javasoltok.
Minél egyszerűbb megoldás érdekelne, viszont ilyen I2C-s kommunikációs dolgokhoz nem értek.

Köszi:
K
(#) ktamas66 válasza krisztian98 hozzászólására (») Nov 26, 2014 /
 
Szerintem valamilyen soros kommunikáció nélkül nehéz lesz. Esetleg MAX7219-hez hasonló megoldásban lehetne gondolkodni.
(#) krisztian98 válasza ktamas66 hozzászólására (») Nov 26, 2014 /
 
MM74C911-es ICT-t néztem ki. Viszont az RS-nél nincs.
A PIC-en gond nélkül tudom a kimenetket fel-le kapcsolni.
Utána olvasok a MAX7219-es IC-nek.

Köszi:
K
(#) krisztian98 válasza ktamas66 hozzászólására (») Nov 26, 2014 /
 
A MAX7219-es 8 digites.
4 digites változatban lenne IC?
(#) proli007 válasza krisztian98 hozzászólására (») Nov 26, 2014 /
 
Tudod hogy kell négy oroszlánt fogni? Nyolcat megfogsz és négyet elengedsz..
(#) krisztian98 válasza proli007 hozzászólására (») Nov 27, 2014 /
 
Igen néztem ebay-en van teljesen készen, de az mind 2*4digites. Ezért gondoltam, hogy megkérdem, hogy 4 digitesben lenne-e. mert akkor az nekem OK lenne.
(#) Hp41C válasza krisztian98 hozzászólására (») Nov 27, 2014 /
 
Miért is kell oda speciális IC?
A 4 digitet vezéreld időmuliplexelten. Összesen 7 + 4 vagy 8 + 4 kivezetés kell. Példa rengeteg van itt a fórumon.
(#) Peter65 válasza krisztian98 hozzászólására (») Nov 27, 2014 /
 
Szia!
Egy kicsit többet is elárulhatnál a feladatról.
Ha jól értem, 32db kijelzőt szeretnél írni, amelyek egyenként 4 digitesek. Mindre ugyanazt szeretnéd kiírni, vagy mindegyikre mást? Milyen távolságra helyezkednek el? Egy készüléken vannak, vagy nagyobb távolságra?
Ezen adatok nélkül nehéz érdemi segítséget adni. Ha közel vannak a kijelzők, én valószínűleg SPI-re fűznék fel annyi 74HC595-t amennyi digit van (32x4). Egy-egy 74HC595-t egy-egy kijelzőt hajtana meg. Így bármelyikre bármit írhatsz, nem kell a multiplexeléssel sem bajlódni.
(#) krisztian98 válasza Peter65 hozzászólására (») Nov 27, 2014 /
 
Akkor kicsit bővebben:
különböző hőmérsékletet szeretnék mérni.
Összesen 32 csatornás bemenetem van.
pt1000-en mérem a hőmérsékletet ezek után van egy erősítő áramkör, aminek a kimenetén 0V-tól van 4-5V.

A hasznos feszültségtartományom: 1-4V között van.
Utána van 2db 16csatornás analog multiplexer, amik egy PIC analóg bemenetére fognak menni.

A mért feszültségből tudom, hogy hány fok van a PT1000-eknél.
Ehhez kellene kijelzők és valamilyen egyszerű megjelenítés.

Köszi.
K
(#) proli007 válasza krisztian98 hozzászólására (») Nov 27, 2014 /
 
Dejó! Pont a lényeget nem írtad, ami a megjelenítés mikéntjére re vonatkozik.
(#) krisztian98 válasza proli007 hozzászólására (») Nov 27, 2014 /
 
mindegyik 3 digites 7 segmenses kijelzőre logikusan különböző hőmérsékleti értékeket szeretnék kiírni.
A leghosszabb kábel kb: 2 méteres lenne.
Következő: »»   1 / 2
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem