74HC595 skiftregister
Skiftregister fungerar på ett ganska enkelt sätt, men kan ändras för att bli mycket komplicerad men mycket användbar.
Det grundläggande konceptet är du har 8 utgångsstift från 74HC595. För detta exempel kan bara säga att dessa skickas via ett motstånd till en LED. Så har vi stift Q0 genom Q7 som utdata stiften. Resten kan anses kontroll stift, deras exakta funktion beskrivs i tabellen ovan.
Vi kan kontrollera förskjutningen av registret med klocka pulser. Som vi höja signalen kommer att klocka pin till hög, klockan flyttas framåt ett steg. och när vi drar det låga och höga igen det skiftar en annan. Varje gång vi flytta klockan växla vi input till en annan av åtta register. Vi i huvudsak styr produktionen av var och en av de åtta stift en i taget, och när vi går en klocksignal vidare, vi växla till nästa produktionen stift till kontroll.
Så långt detta låter helt enkelt som en växel, som är verkligen vad det är, men här är viktigaste.
Vi kan använda lagring register klocka stiftet för att styra växeln "Master på/av". Hur detta används är huvudsakligen vi kan dra låg innan vi skickar våra register värderingar. Sedan skickar vi alla åtta registret värden, oavsett om de är höga eller låga, och när vi gjort vi dra lagring register klocka stiftet hög. Vad kommer att hända är det värde som du skickar kommer att lagras på varje utgångsstiftet, men inte aktiverats ännu. När du drar lagring register klocka pin hög alla utgångar blir då aktiva och som någonsin stift du tilldelat så hög tänds lysdioden.
En annan piggna är Master Reclear Pin. Vi kan använda detta stift att avmarkera alla våra utgångar och ställa allt till låga.
Så detta är bara ett enkelt exempel. Skiftregister kan vara ett bra verktyg när du har ont om utgångsstift, med 8 utgångar från endast ca 3 verkliga data ingångar. Det kan läggas till för vissa mycket komplicerat program, och de kan seriekopplas tillsammans för ännu fler alternativ för utdata.
Detta hjälper förhoppningsvis komma igång och ge dig lite kunskap på deras grundläggande koncept.
Jag har tagit ett prov arduino skiss och kopplingsschema från arduino webbplats som kommer att slå på varje LED ett i taget med tanke på Serial Monitor input (0-9)
-------------------------------------- CODE START --------------------------------------
/*
Skift Register exempel
för 74HC595 skiftregister
Denna skiss visar läser seriell in och används för att ställa in stiften
av ett 74HC595 skiftregister.
Hårdvara:
* 74HC595 skiftregister kopplade till stift 2, 3 och 4 i Arduino,
så detaljerat nedan.
* Lysdioder kopplat till var och en av utgångarna av skiftregister
Skapad 22 maj 2009
Skapad 23 Mar 2010
av Tom Igoe
*/
PIN ansluten till spärren stift (ST_CP) 74HC595
CONST int latchPin = 8;
PIN ansluten till klockan stift (SH_CP) 74HC595
CONST int clockPin = 12;
PIN ansluten till Data i (DS) av 74HC595
CONST int dataPin = 11;
void setup() {
ställa in stift att produktionen eftersom de behandlas i de viktigaste loopen
pinMode (latchPin, produktionen);
pinMode (dataPin, produktionen);
pinMode (clockPin, produktionen);
Serial.BEGIN(9600);
Serial.println("reset");
}
void loop() {
om (Serial.available() > 0) {
ASCII '0' och '9' tecken är
representeras av värdena 48 genom 57.
så om användaren anger ett nummer från 0 till 9 i ASCII,
Du kan dra ifrån 48 för att få det faktiska värdet:
int bitToSet = Serial.read() - 48.
Skriv till skiftregister med rätt lite högt:
registerWrite (bitToSet, hög);
}
}
Denna metod skickar bitar till skiftregister:
void registerWrite (int whichPin, int whichState) {
de bitar som du vill skicka
byte bitsToSend = 0;
stänga av utdata så att stiften inte tänds
medan du skiftande bitar:
digitalWrite (latchPin, låg);
Aktivera den nästa högsta biten i bitsToSend:
bitWrite (bitsToSend, whichPin, whichState);
flytta bitarna ut:
shiftOut (dataPin, clockPin, MSBFIRST, bitsToSend);
Aktivera utdata så att lamporna kan lysa upp:
digitalWrite (latchPin, hög);
}
--------------------------------------- CODE END ---------------------------------------
Jag ska försöka att komma tillbaka till detta att lägga till mer förklaring till denna kod.