7-szegmenses kijelző vezérlése

Szerzők: Makan Gergely, Somogyi Anikó, Dr. Mingesz Róbert és Mellár János
A tananyag elsősorban az Elektronikai alapok programozóknak és a Digitális architektúrák című kurzusokhoz készült, az elsajátításához szükséges idő: 45 perc.

Összefoglalás

A lecke bemutatja a 7-szegmenses kijelzők felépítését, valamint azt, hogy hogyan kell bekötni a szegmenseket a digitális kimenetekre és hogyan lehet egyszerűen használni. A megértésben képek és szimulációk segítenek. A lecke végén önellenőrző kérdések találhatók.

Tartalom

  • A 7-szegmenses kijelző felépítése
  • 7-szegmenses kijelző bekötése
  • 7-szegmenses kijelző típusai
  • Számjegyek megjelenítése
  • Számjegyek egyszerűbb megjelenítése
  • Önellenőrző kérdések

A 7-szegmenses kijelző felépítése

A 7-szegmenses kijelző egy elektronikai alkatrész, ami 0-tól 9-ig tud számokat megjeleníteni. Általában 7+1 szegmens található egy kijelzőn: 7 szegmens tartozik a számhoz plusz 1 szegmens a tizedesponthoz. A vezérlés feladatát elláthatja például egy Arduino is.

A 7-szegmenses kijelző fényképe.

Az egyes szegmenseket LED-ek alkotják, amik egy alkatrészbe vannak tokozva.

Minden szegmens egy különálló LED.

7-szegmenses kijelző bekötése

Korábbi tananyagrészekben már szerepelt, hogy a LED-eket úgy kell használni, hogy egy áramkorlátozó ellenállással sorba kapcsoljuk. Erre azért van szükség, mert a LED ellenállása nem elég nagy, ezért túl nagy áram folyna rajta, ami a LED-et és az őt meghajtó elektronikát is tönkreteheti. Az ellenállás értéke attól függ, hogy mekkora áram vehető ki a feszültségforrásból (pl. egy Arduino digitális kimenetéből), mekkora maximális áramot enged meg a LED adatlapja és, hogy mekkora fényerőt szeretnénk. Általában 1 kOhm-os ellenállás megfelelő szokott lenni.

A soros áramkorlátozó ellenállás 7-szegmenses kijelző esetén is szükség minden szegmenshez.

7-szegmenses kijelző típusai

A 7-szegmenses kijelzőknek két fő típusa van. Az egyik a közös anódos, a másik a közös katódos. Mint az már korábban szerepelt, a LED katódja az a kivezetése, amire a pozitívabb potenciált kell kapcsolni ahhoz, hogy a LED világítani tudjon.

Egy normál tokozású LED esetén a hosszabb láb az anód.

A kijelzőben lévő egyes szegmensek betűvel vannak jelölve A-tól G-ig. Az A a legfelső és óramutató járásával megegyezően következnek sorrendben a betűk, a legutolsó a G, ami a középső vízszintes szegmens.

A 7-szegmenses kijelző lábkiosztása.

A közösített pontnak kettő egyenértékű kivezetése van, a 3. és a 8. láb. A további 8 db láb a LED-ek másik lábainak kivezetései.

A közös anódos 7-szegmenses kijelző esetén a 8 db LED valójában párhuzamosan van kapcsolva, anódjaik pedig az alkatrészen belül össze vannak kapcsolva.

Közös anódos 7-szegmenses kijelző felépítése.

A közös katódos kijelző esetén a LED-ek katódjai vannak közösítve.

Közös katódos 7-szegmenses kijelző felépítése.

A közös anódos kijelzőt negatív logikai módban vezérelhetjük, azaz a közösített anódot tápfeszültségre kötve az egyes szegmensek akkor világítanak, ha az egyes LED-ek katódjára logikai alacsony értéknek megfelelő feszültségszintet kapcsolunk. A közös katódos kijelzőt egyenes logikai módban vezérelhetjük, azaz a közösített katódot földre (GND) kötve az egyes szegmensek akkor világítanak, ha az egyes LED-ek anódjára logikai magas értéknek megfelelő feszültségszintet kapcsolunk.

A következő szimulációban a bal oldali kijelző közös katódos, a jobb oldali pedig közös anódos. A közös katódosnál a közösített kivezetés földre, a B és a C szegmensek pedig tápfeszültségre vannak kötve. A közös anódosnál a közösített kivezetés tápfeszültségre, a B és a C szegmensek pedig földre vannak kötve. A szimulációt elindítva azt láthatjuk, hogy a két különböző típusú kijelzőn ugyanaz a karakter, egy 1-es jelenik meg.

Számjegyek megjelenítése

Hogyan jeleníthetünk meg számjegyeket a kijelzővel? A következő ábrán az egyes számjegyekhez tartozó világító szegmensek láthatók.

Világító szegmensek a 0-tól 9-ig tartó számjegyek esetén.

Az alábbi szimulációban egyesével kapcsolhatjuk be kétállású kapcsolókkal a szegmenseket, miután elindítottuk a szimulációt. Próbaképpen jelenítsük meg az 5-ös számjegyet.

A szegmensek be- és kikapcsolását vezérelhetjük egy Arduinóval, viszont a digitalWrite függvénnyel csak egyesével tudjuk be- és kikapcsolni a LED-eket, ami elég hosszú kódot eredményez. Ennek ellenére mégis ez számít az elterjedtebb megoldásnak.

Számjegyek egyszerűbb megjelenítése

Az egyik alternatív megoldást, ami egyszerűsít a kódon, egy 7-szegmenses kijelző meghajtó áramkör használatával kapjuk, például a CD4511 integrált áramkörrel. Ezek az áramkörök általában egy 4 bites bináris számot várnak, amit a 7-szegmenses kijelzőn megjeleníthető 0-9 számjegyekké alakítanak. Ezen kívül van még három egyéb bemenete, amikkel különböző funkciókat engedélyezhetünk. Fontos megjegyezni, hogy a kijelző meghajtó IC-k esetén is szükséges bekötni a soros áramkorlátozó ellenállásokat minden szegmenshez.

Az alábbi szimulációban a CD4511-es kijelzőmeghajtó IC bekötését láthatjuk. Az Arduino 4 db digitális kimenete az IC alsó részébe, a 7-szegmenses kijelző pedig a felső részére van kötve.

Egy másik alternatív megoldás a kijelzőt vezérlő kód egyszerűsítésére – amihez még meghajtó IC sem szükséges – az Arduino digitális kimeneteinek egyszerre történő vezérlése. A digitalWrite függvény helyett, amivel csak az egyik portbitet tudjuk írni, egy makrót, az egyik PORTx-et kell írnunk. Az Arduino UNO esetén a PORTD makrót használhatjuk, ehhez a kijelzőt a D portra kell kötni, amihez a 0..7-es kivezetések tartoznak. A PORTD = B00110000; utasítás például az 1-es számjegyet fogja megjeleníteni, ha a szegmensek sorban vannak bekötve az Arduinóba és a kijelző közös katódos. A “B” prefix a szám szám elején a bináris formátumú megadáshoz szükséges, de persze 10-es vagy 16-os számrendszerben is megadhatjuk az értéket, amit a PORTD-re írunk.

Mivel a számjegyeknek megfelelő bináris számok nem egymás után jönnek, célszerű létrehozni egy konstans tömböt a 10 darab számjegy tárolásához, amiben már egymás után, növekvő sorrendben szerepelnek a karakterek 0-tól 9-ig.

A 0..7 kivezetéseket digitális kimenetnek konfigurálhatjuk a DDRD makró segítségével, így ezt nem kell egyesével megtenni (8 sor), mint a pinMode függvénnyel. Például a DDRD = B11111111; 0-tól 7-ig az összes kivezetést digitális kimenetre konfigurálja.

A “D” port használatánál arra kell figyelni, hogy a 0 és 1 kivezetések a soros kommunikációs perifériára is rá vannak kötve, ezért nem ajánlott a Serial függvényeket használni, ha ezeket a kivezetéseket digitális ki- van bemenetként szeretnénk használni.

A következő szimulációt elindítva a kijelzőn az 5-ös szám jelenik meg. A kódot megnézve láthatjuk a DDRD és a PORTD használatát, valamint hogy a számkarakterek letárolásához szükséges konstans tömböt egyszerűen csak egy 5-ös számmal kell kiindexelni.

Gyakorló feladat:

Másoljuk le és módosítsuk a 7-segment with Arduino-PORTD nevű szimulációt és módosítsuk a kódot úgy, hogy a számjegyeket a kijelzőn 0-tól 9-ig léptesse másodpercenként, aztán kezdje ismét 0-ról. (A másoláshoz először a szimuláció nevére kell kattintani.)

Ha a megoldandó feladathoz nem lenne elég egy kijelző, akkor egy trükkel több kijelzőt is meghajthatunk ugyanazokkal a digitális kimenettel, mint amit egy kijelző esetén is használnánk. A trükk az, hogy egyszerre csak az egyik kijelző kap tápfeszültséget. Hogy melyik kijelző aktív éppen azt viszonylag gyorsan váltogatjuk, legalább 25 Hz frekvenciával, hogy a szemünk már ne tudja lekövetni a villogást és folyamatosnak lássuk a megjelenítést. Ha két kijelzőt szeretnénk így használni, akkor ehhez szükség van még legalább egy digitális kimenetre és legalább két tranzisztorra. A digitális kimenettel a tranzisztorokat vezérelve a kijelzők tápfeszültségét tudjuk be- és kikapcsolni, ezzel választani a kijelzők között. Ezt a módszert multiplexelt megjelenítésnek is szokás nevezni.

A következő szimulációban a multiplexelt megjelenítésre láthatunk egy példát.

Az önellenőrzéshez következzen egy rövid kvíz a legfontosabb résztémákból:

Results

#1. A 7-szegmenses kijelző...

#2. A 7-szegmenses kijelzőn lévő szegmensek különállók, azokat egyesével be és ki lehet kapcsolni.

#3. A 7-szegmenses kijelzőben lévő LED-ekhez tartozik beépített, soros áramkorlátozó ellenállás.

#4. Egy normál LED esetén melyik kivezetésre kell a pozitívabb feszültséget kötni, hogy a LED világítson?

#5. Egy normál 7-szegmenses kijelzőben a LED-ek egyik kivezetése...

#6. Közös anódos kijelző esetén mikor világít egy szegmens?

#7. A PORTD makróval megtehetjük azt,...

finish