LAKI PINGVINI
Nuts and Bolts (3): 74HC595 IC
Još outputa
Dejan PETROVIĆ
1. jul 2019.

Nastavljamo sa pričom o pomeračima (shift) registara iz prošlog broja. Tada smo pričali o PISO pomeračima, a sada će biti reči o SIPO (serial-in, parallel-out) integralnim kolima sa oznakom 74HC595. O ovim integralnim kolima je već bilo reči kada smo pisali o LE diodama (SK 6/2017) i tada smo rekli da su odličan izbor kada nam treba veći broj izlaza od onih koje ima naš mikrokontroler.

Nećemo puno ponavljati kako ova integralna kola funkcionišu. Probaćemo da se usredsredimo samo na specifičnosti komada silicijuma iz naslova. 74HC595 je osmobitni pomerački registar iz 74HC porodice ovakvih kola. Kao i kod 74HC165 i ovde „HC” u oznaci govori da je u pitanju High Speed CMOS, dok se „595” odnosi na SIPO varijantu, sa tim da u našem slučaju dodatno „N” u oznaci govori da ovo kolo može da radi i u SISO režimu (serial-in, serial-out). U našim primerima mi ćemo govoriti o njegovoj upotrebi kao kola koje će našem mikrokontroleru dodati još osam izlaza.

Kao i prethodna dva opisana integralna kola i 74HC595 ćemo koristiti u DIP16 varijanti, koja je pogodna za ubadanje u prototipske ploče ili DIP sokete. Komadi silicijuma u ovakvom formatu su pogodni za razvijanje projekta i mi ćemo se uglavnom držati njih, ali treba znati da ih ima i u SOIC16 i SOP16 pakovanjima koja su pogodna za razrađene projekte i ugradnju na namensku PCB. Pinout ovog čipa je malo drugačiji od 74HC165. Naponski izvodi su standardno dijagonalno postavljeni i na GND i VCC treba dovesti pet volti (iako radi na naponima od dva do šest volti). Sa leve strane imamo sedam izlaznih izvoda sa oznakama od Q1-Q7, dok je osmi Q0 (bolje reći prvi) sa suprotne strane, odmah do VCC. Izvod pod brojem 9 je Q7S i on se koristi za povezivanje više ovakvih integralnih kola kaskadno, poput 74HC165, samo ovaj put kao izlaz. Kako se bitovi pomeraju unutar registra, ukoliko imamo povezan sledeći čip na ovom izvodu, bitovi će nastaviti da se pomeraju dalje, ovaj put u narednom čipu. Na izvodu broj 10 je MR (master reset). Logička nula na ovom izvodu će resetovati pomerački registar. Za njim ide SH_CP (shift register clock input) na izvodu broj 11 i ispisujući LOW ka HIGH na ovom izvodu ćemo pomerati podatke u osmobitnom registru. Pod oznakom ST_CP (storage register clock input) je takozvani Latch Clock Input, a sa LOW->HIGH na ovom pinu postižemo da se podaci iz pomeračkog registra prebace u „Latch blok”. Dovođenjem LOW na OE (output enable) izvod, omogućavamo podacima da se iz latch bloka pojave na izlaznim izvodima. Sa HIGH primoravamo izlazne izvode da budu u stanju visoke impedanse. Na izvodu 14 je DS (serial data input), a podatke koje čip dobije na ovom izvodu kasnije prebacuje u registar. Da se ne bismo i previše ponavljali, predlažemo vam da u vašoj arhivi starijih brojeva bacite oko na pomenuti tekst o LE diodama.

Za povezivanje sa Arduinom tu je fritzing šema. Mi smo ovaj čip dodali na prototipsku ploču sa postavkom iz prethodnog broja, gde smo koristili prekidače i 74HC165 za unos podataka, a sada ćemo te podatke iskoristiti da bismo upalili po jednu LED za svaki prekidač. Na naponske izvode dovodimo pet volti. Pored napajanja, dovodimo GND na OE i pet volti na MR. Izvode od Q0-Q7 vodimo preko otpornika od 330 oma na crvene LED koje su sa druge strane već povezane na GND. Upravljačke izvode DS povezujemo na digitalni pin 4, SH_CP na 2, a ST_CP na digitalni pin 3.

Ovim integralnim kolom možemo upravljati direktno kao na primeru sa LE diodama i na taj primer se nećemo vraćati. Mnogo lakše je za to koristiti biblioteke, a mi smo se odlučili za ShiftRegister595 koju možete preuzeti sa adrese bit.ly/2WR8T4w. Postojeći skeč iz prethodnog broja smo modifikovali u meri da nam stanja DIP prekidača, koje je pročitao Nano preko 74HC165, prikaže LE diodama preko 74HC595. Mi smo se odlučili za LED, ali to mogu biti releji ili bilo šta drugo.

#include <ShiftIn.h>

#include <ShiftRegister595.h>

ShiftIn<1> shift;

int x;

ShiftRegister595 shiftRegister595(4, 2, 3); // DS, SHCP, STCP

void setup() {

Serial.begin(9600);

shift.begin(9, 10, 11, 8);

shiftRegister595.setup(1); //broj shift registara

}

void displayValues() {

for(int i = 0; i < shift.getDataWidth(); i++){

x = i;

if(shift.state(i) == 1){

shiftRegister595.setPin(x, HIGH);

shiftRegister595.write();

}else{

shiftRegister595.setPin(x, LOW);

shiftRegister595.write();

}

}

Serial.println();

}

void loop() {

if(shift.update())

displayValues();

delay(100);

}

Deo koji se tiče 74HC165 nećemo ponovo pojašnjavati. Za potrebe ovog pomerača registra smo uvezli ShiftRegister595.h biblioteku i napravili objekat shiftRegister595 u kome smo definisali na koje izvode smo povezali upravljačke izvode čipa. U setup funkciji smo naveli da imamo samo jedan čip, a ukoliko će u nekom vašem slučaju njih biti više, potrebno je taj broj navesti. Funkciju displayValues() smo blago prepravili i u if petlji proveravamo da li je određeni izvod 74HC165 promenio stanje na HIGH te shodno tome i mi menjamo stanje i palimo LED. U suprotnom, šaljemo logičku nulu odgovarajućem izvodu našeg 74HC595 te gasimo LED.

I ovaj komad silicijuma, kao i prethodni, nije „pravi” SPI uređaj, ali se može povezati po SPI interfejsu. Svakom od izvoda se uz SPI.h biblioteku može pristupiti preko SPI funkcija. Bez obzira na to koji pristup koristili, 74HC595 integralno kolo može biti idealno rešenje. Mi smo u ovom primeru koristili Nano i njegovu pet-voltnu logiku GPIO, ali to ne znači da se u slučaju projekta sa recimo, ESP8266, cela postavka ne može spustiti na 3,3 volta. Mi smo u našem primeru otpornicima ograničili struju na nekih deset miliampera, ali treba znati da se izlazni izvodi mogu maksimalno opteretiti sa 35 miliampera. Maksimalno opterećenje ulaznih izvoda ne sme preći 20 miliampera. Ono što nismo pomenuli u prethodnom broju vezano za 74HC165, a važi i u ovom slučaju, jeste da se svi ulazni izvodi koji se ne koriste moraju vezati za odgovarajuću logiku, što će reći, GND ili VCC. Svi nekorišćeni izlazni izvodi moraju ostati otvoreni.


PRETHODNI TEKST
SLEDEĆI TEKST
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
Aktuelno štampano izdanje
MAJ 2025
Microsoft Majorana 1
Kvantna topologija
Topološki kvantni računar otporan je na uticaj kosmičkog zračenja, ali i dalje mora da se ohladi skoro do apsolutne nule...
AMD Ryzen 9 9950X3D
Jedan, da svima vlada
Ako vam je potreban najbrži procesor, i za igranje, i za ozbiljnije zadatke, Ryzen 9 9950X3D nema konkurenciju...
Gigabyte GeForce RTX 5070 Ti Aero OC 16G i GeForce RTX 5070 Ti Gaming OC 16G
I za kreativce, i za igrače
Sasvim sposoban da se nosi sa 4K rezolucijom u svim igrama i pruži sasvim pristojne performanse, dok u 1440p apsolutno blista...
Asus ROG Strix Scar 18 (G835LX)
Fantastična zver i kako je kupiti (3)
Laptop namenjen onima koji „ne žale pare” da imaju ono što je trenutno najbolje i najbrže...
Deset najboljih Microsoft PowerToys alatki
Najbolji od najboljih
PowerToys Run je alatka kojoj treba da se okrenete ukoliko vam sistemska rutina za pretragu ne odgovara...
Apple iPhone 16e
Malo muzike za mnogo para
Problem nije samo cena i slabiji grafički podsistem, već i trajanje baterije...
Cemu 2.6
Wii U emulacija
Cemu omogućava pokretanje i privođenje kraju oko 57 procenata igara „napisanih” za Wii U...
.rs: nove usluge eUprave - novi propisi - najava 5G
Mnogo eNoviteta
U novom esDnevniku roditelji će dobijati notifikacije za ocene i izostanke...
Trgovinski rat Istoka i Zapada
Velika igra, nesagledive posledice
Kao u igri „kukavice”, dve supersile kreću se velikom brzinom jedna prema drugoj, izazivajući drugu da prva skrene...
Blue Prince
Jedinstveni dijamant i jedna od najoriginalnijih igara u poslednjih nekoliko godina...
Tempest Rising
Skupa i ambiciozna fotokopija legendarnog RTS klasika Command & Conquer...
South of Midnight
Magična igra koja izgleda kao živa bajka, animirana u stilu filmskog serijala „Spiderverse”...
© 2025 Svet kompjutera. Sva prava zadrzana.
Novi broj - Arhiva - Forum - O nama