7 seg LED kijelző meghajtása 74HC595N shift regiszterrel

Tartalom:

  • A shift regiszter működése, kivezetése funkciója, felhasználási példák
  • két shiftregiszter sorba kötése, kimentek bővítése
  • Példaprogram a használathoz (7 szegmenses LED kijelző meghajtása)

——————————————————————————————-

A 74HC595 egy 8 bites soros bemenetű és párhuzamos kimenetű IC. Soros adat párhuzamos adattá való átalakítására találták ki. A beírt 8 bitnyi adatot sorban kilépteti a kimenetére és a latch láb felfutó élére azok fizikailag meg is jelennek a kimeneten.

A chip műszaki adatai:

Kivezetések funkciója:

GND: földvezeték.

Q0..Q7:   kimenetek. Ezekre közvetlenül ráköthető egy-egy LED egy soros áramkorlátozó ellenállással. Amennyiben a kijelző szegmensenként egy LED-et tartalmaz, kb. 220ohm. Amennyiben a kijelző szegmensben 2 LED került beépítésre, tapasztalatom szerint piros LED esetén egy 47ohm-os soros ellenállás megfelelő lehet. Ekkor az LED árama kb 15-20mA 5V tápfeszültség esetén.

DS:          Adatbemenet. Amikor az SH_CT órajel bemeneten egy felfutó él jelenik meg (0-ról 1-re vált), a DS bemeneten abban a pillanatban található értéket beolvassa és tárolja az IC.

SH_CP:   Órajel bemenet. Amikor az órajel bemeneten egy felfutó él jelenik meg (0-ról 1-re vált), akkor a DS bemeneten éppen meglévő értéket belépteti az IC a tárolójába. A beléptetett érték a Q0 kimeneten fog megjelenni amikor az ST_CP bemeneten felfutó él jelenik meg (LATCH bemenet). A következő órajel felfutó él egy újabb adatot olvas be a DS bemenetről. Az előzőleg beolvasott adat ilyenkor tovább lép a soron következő kimenetre (Q2). Az adatok beolvasása folyamatos, a nyolcadik órajelet követően az elsőként beolvasott adat megjelenik a Q7’ kimeneten, ami egy bővítő kimenet, és lehetővé teszi több IC sorba kötését.

ST_CP:   Latch bemenet. Amikor ezen a bemeneten felfutó él jelenik meg (0-ról 1-re vált) az IC-be beléptetett adatok kiíródnak a Q0-Q7 kimenetekre. Az ST_CP bemenet tetszőleges időpillanatban visszaválthat 1-ről 0-ra (lefutó él), ezt az IC figyelmen kívül hagyja. A felfutó él tetszőleges pillanatban bekövetkezhet, tehát nem kell megvárni, hogy minden adatot beléptessünk az IC-be.

OE (negált):  Output Enable (kimenet engedélyezés) bemenet. A negált (adatlapokban felülvonás jelzés) azt jelenti, hogy a bemenet alacsony szinten aktív, azaz engedélyezi a kimeneteken az adtok megjelenését. A kimenetek három állapotot vehetnek fel (tri-state kimenet), ami azt jelenti, hogy a szokásos HIGH és LOW kimeneti állapotok mellett van egy harmadik, amikor a kimenet, nem vezető állapotba kerül. Ez azt jelenti, hogy bármilyen LED-et is kötünk a kimenetre (0-ra világít vagy 1-re világít), a led ebben az állapotban biztosan nem fog világítani. Ezt a harmadik állapotot érhetjük el, ha erre a bemenetre LOW szintet kapcsolunk. Ez a bemenet remekül használható PWM fényerő szabályozásra, vagy a teljes kijelző kikapcsolására.

MR (negált):     Master reset bemenet. A negált felirat (adatlapokban felülvonás jelölés) azt jelenti, hogy ez a bemenet 0 bemenő szintnél aktív. Ekkor az IC nem fogad adatot mindaddig, amíg a bemeneten 0 szint található. A 0 megszűnését követően minden kimenet tárolója 0 értékbe kerül, és ezt követően fogadja az órajelenként és adatokat. 

Az alábbi ábrán végig követhető a bemenetek és kimenetek működése. Az ábrán látható példában csak az első órajel olvas be 1 értéket a DS bemeneten, és az ezt követő órajelek ezt léptetik végig a kimeneteken. Az ST_CP latch bemenet a példában minden léptetést követően kiírja a kimenetre a belső tárolók tartalmát. Lehetséges olyan felhasználás is, amikor beléptetjük mind a nyolc kimenet értékét, és csak ekkor írjuk a kimenetre a tárolókat. Ez utóbbi kifejezetten a 7 segmenses LED kijelzők meghajtásának esetén szükséges.

Az áramköri bekötés a következő (a kimeneteken ledek vannak a példa rajzon, ezek lehetnek a 7 segment kijelző ledjei):

Mindez Arduino bekötéssel:

Több IC sorba köthető. Ekkor a következő IC bemenetére a megelőző IC adat kimenetét kell kötni. Sok IC sorba kötése esetén a teljes bitsorozat egyben beléptethető, mintha egyetlen sokszor nyolcbites léptetőregiszter lenne az egész. A bekötés ekkor két IC-re így néz ki:

Egy IC használatának bemutatásához  a következő program szolgál:

int latchPin = 5;
int clkPin = 6;
int dataPin = 4;
byte LED = 0;

void setup()
{
  Serial.begin(9600);
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT); 
  pinMode(clkPin, OUTPUT);
}

void loop()
{
  int i=0;
  LED = 0;
  shiftLED();
  delay(500);
  for (i = 0; i < 8; i++)
  {
    bitSet(LED, i);
    Serial.println(LED);
    shiftLED();
    delay(500);
  }
}

void shiftLED()
{
   digitalWrite(latchPin, LOW);                     //Latc kimenet 0 (lefutó él),
                                                    //nem történik semmi
   shiftOut(dataPin, clkPin, MSBFIRST, LED);        //adatok beléptetése
                                                    //(led vált.bitjei)
   digitalWrite(latchPin, HIGH);                    //Latc felfutó él, beléptetett
                                                    //bitek kikerülnek kimenetre
}

Amikor a programjaimban adatokat kellett kiírnom egy 7 segmenses kijelzőre, sokkal átláthatóbb volt számomra (főleg kezdetben), ha láttam, hogy mely biteknek kell világítaniuk. Ezért a shiftOut függvényben a “LED” változó helyett bináris alakban adtam meg az értékeket. pl.:
shiftOut(4, 3, MSBFIRST, B00111110);

Magyarázatra szorul még a harmadik paraméter, az “MSBFIRST” jelentése. Ide írhattunk volna LSBFIRST paramétert is. A kettő között az akülönbség, hogy milyen sorrendben léptesse a regiszter a negyedik paraméterben megadott bitsorozatot. Ha MSBFIRST-et írsz, akkor a 10000000 bitsorozat kezdő egyese a Q7 kimeneten fog landolni,míg ha LSBFIRST-et használsz, akkor ugyanez a bitsorozat egyese a Q0-ra érkezik.

Mennyire volt hasznos amit olvastál? Értékelés után szövegesen is leírhatod megjegyzéseidet és véleményedet!

Kattints egy csillagra az értékeléshez!

Szövegesen is leírhatod véleményedet! Ha kérdésed van, ne felejtsd el megadni az email címedet!