Het shift register werkt op een vrij eenvoudige manier, maar kan worden gewijzigd om te worden erg ingewikkeld, maar zeer nuttig.
Het basisconcept is je 8 output pinnen uit de 74HC595. Voor dit voorbeeld alleen maar zeggen dat deze worden verzonden via een weerstand op een LED laat. We hebben dus pinnen Q0 via Q7 als de pennen. De rest kan worden beschouwd als besturingselement pinnen, hun exacte functie is contouren in de bovenstaande tabel.
We kunnen controleren de verschuiving van het register met klok pulsen. Als we het signaal dat naar de pin klok op hoog verhogen, de klok wordt verplaatst een stap vooruit. en wanneer we trek het lage en hoge weer schuift het andere. Telkens wanneer die we de klok verschuiven schakelen we de ingang naar een andere van de acht registers. We zijn in wezen de output van elk van de acht pennen één controle op een moment, en als we een kloksignaal vooruit, schakelen we over naar de volgende uitvoer pin te controleren.
Tot nu toe dit gewoon klinkt als een schakelaar board, dat echt wat het is is, maar hier is de sleutel.
De opslag registreren klok pin kunnen we gebruiken om te controleren de "Master aan/uit" schakelaar. In wezen is hoe dit is gebruikt dat wij kan trekken het laag voordat we onze register waarden sturen. Wij sturen vervolgens alle acht register waarden, of ze nu hoog of laag, en als we klaar bent we Trek de opslag registreren klok pin hoog. Wat zal er gebeuren is de waarde die u zal worden opgeslagen op elke uitgang Pins, maar nog niet geactiveerd. Wanneer u trek de opslag registreren klok pin hoge alle de uitgangen zal vervolgens actief geworden, en die ooit pins u zo hoog toegewezen zal verlichten de LED.
Een ander extraatje is de Master Pin in Reclear. Deze pin kunt wij duidelijk al onze uitgangen en zet alles op laag.
Dus dit slechts een eenvoudig voorbeeld is. Het shift register kunnen een geweldig hulpmiddel wanneer u kort op de output pinnen bent, nemen 8 uitgangen van slechts ongeveer 3 feitelijke gegevens ingangen. Het kan worden toegevoegd aan voor sommige echt ingewikkeld toepassingen, en kunnen zij spelpoortadapters samen voor nog meer uitvoeropties.
Hopelijk zal dit helpen u op weg helpen en geven u enige kennis op hun basisconcept.
Ik heb ook een monster arduino schets en het bedradingsschema van de arduino website die zal weer op elke LED een tegelijk gegeven seriële Monitor input (0-9)
-------------------------------------- CODE START --------------------------------------
/*
Shift Register voorbeeld
74HC595 shift register
Deze sketch leest ingang voor seriële draait en gebruikt het om de pinnen
van een 74HC595 shift register.
Hardware:
* 74HC595 shift register gekoppeld aan pinnen 2, 3 en 4 van de Arduino,
als hieronder.
* LED's gekoppeld aan elk van de uitgangen van het shift register
Gemaakt van 22 mei 2009
Gemaakt op 23 mrt 2010
door Tom Igoe
*/
Pin verbonden met klink pin (ST_CP) van 74HC595
Const int latchPin = 8;
Pin verbonden met klok pin (SH_CP) van 74HC595
Const int clockPin = 12;
Pin verbonden met gegevens in (DS) van 74HC595
Const int dataPin = 11;
VOID Setup {}
pinnen aan output omdat zij zijn gericht in de hoofdlus instellen
pinMode (latchPin, OUTPUT);
pinMode (dataPin, OUTPUT);
pinMode (clockPin, OUTPUT);
Serial.begin(9600);
Serial.println("Reset");
}
void loop {}
Als (Serial.available() > 0) {}
ASCII '0' door '9' tekens zijn
vertegenwoordigd door de waarden 48 via 57.
Dus als de gebruiker een getal van 0 tot en met 9 in ASCII typt,
u kunt aftrekken 48 om de werkelijke waarde te krijgen:
int bitToSet = Serial.read() - 48;
schrijven naar het register van de verschuiving met de juiste bit hoog ingesteld:
registerWrite (bitToSet, hoge);
}
}
Deze methode stuurt bits naar het shift register:
VOID registerWrite (int whichPin, int whichState) {}
de bits die u wilt verzenden
byte bitsToSend = 0;
uitschakelen van de output zodat de pinnen niet oplichten
terwijl u bits verschuiven:
digitalWrite (latchPin, laag);
Schakel op de volgende hoogste bit in bitsToSend:
bitWrite (bitsToSend, whichPin, whichState);
verschuiving van de bits uit:
shiftOut (dataPin, clockPin, MSBFIRST, bitsToSend);
op de uitvoer inschakelen, zodat de LEDs kunnen oplichten:
digitalWrite (latchPin, hoge);
}
--------------------------------------- CODE END ---------------------------------------
Ik zal proberen om terug te gaan naar dit meer uitleg toevoegen aan deze code.