Hur Man Ansluter Skiftregister Till Arduino

Innehållsförteckning:

Hur Man Ansluter Skiftregister Till Arduino
Hur Man Ansluter Skiftregister Till Arduino

Video: Hur Man Ansluter Skiftregister Till Arduino

Video: Hur Man Ansluter Skiftregister Till Arduino
Video: How to Add Outputs to an #Arduino using a Shift Register - The Learning Circuit 2024, Maj
Anonim

I en av de tidigare artiklarna berörde vi redan kort användningen av ett skiftregister, särskilt 74HC595. Låt oss titta närmare på funktionerna och proceduren för att arbeta med denna mikrokrets.

Skiftregister 74HC595
Skiftregister 74HC595

Nödvändig

  • - Arduino;
  • - skiftregister 74HC595;
  • - anslutande ledningar.

Instruktioner

Steg 1

Skiftregister 74HC595 och liknande används som anordningar för att konvertera seriell data till parallell, och kan också användas som en "spärr" för data, som håller det överförda tillståndet.

Pinout (pinout) visas i figuren till vänster. Deras syfte är som följer.

Q0 … Q7 - parallella datautgångar;

GND - jord (0 V);

Q7 '- seriell datautgång;

^ MR - återställ master (aktiv låg);

SHcp - skiftregisterklockingång;

STcp - "spärr" klockpulsingång;

^ OE - utgångsaktivering (aktiv låg);

DS - seriell dataingång;

Vcc - strömförsörjning +5 V.

Strukturellt är mikrokretsen tillverkad i flera typer av fall; Jag kommer att använda den som visas i figuren till höger - utgången - för det är lättare att använda med en brödbräda.

Skift registerutseende och pinout
Skift registerutseende och pinout

Steg 2

Låt mig kort komma ihåg SPI: s seriella gränssnitt, som vi kommer att använda för att överföra data till skiftregistret.

SPI är ett fyra-tråds dubbelriktat seriellt gränssnitt där en mästare och en slav deltar. Befälhavaren i vårt fall kommer att vara Arduino, slaven kommer att registrera 74HC595.

Utvecklingsmiljön för Arduino har ett inbyggt bibliotek för att arbeta med SPI-gränssnittet. När du använder den används slutsatserna som är markerade i figuren:

SCLK - SPI klockutgång;

MOSI - data från master till slave;

MISO - data från slav till mästare;

SS - slavval.

Arduino-kort standard SPI-stift
Arduino-kort standard SPI-stift

Steg 3

Låt oss sätta ihop kretsen som på bilden.

Jag kommer också att ansluta en logisk analysator till alla stiften i skiftregistermikrokretsen. Med hjälp av det kommer vi att se vad som händer på den fysiska nivån, vilka signaler som går vart och vi kommer att ta reda på vad de betyder. Det borde se ut som på fotot.

Kopplingsschema för skiftregister 74HC595 till Arduino
Kopplingsschema för skiftregister 74HC595 till Arduino

Steg 4

Låt oss skriva en sådan skiss och ladda den i Arduino-minnet.

Variabeln PIN_SPI_SS är en intern standardkonstant som motsvarar stift "10" i Arduino när den används som master för SPI-gränssnittet vi använder här. I princip kan vi lika gärna använda någon annan digital stift på Arduino; då måste vi deklarera det och ställa in dess driftläge.

Genom att mata denna stift LÅG aktiverar vi vårt skiftregister för sändning / mottagning. Efter överföringen höjer vi spänningen till HÖG igen och växeln slutar.

En skiss som visar hur skiftregistret fungerar
En skiss som visar hur skiftregistret fungerar

Steg 5

Låt oss göra vår krets till arbete och se vad logikanalysatorn visar oss. Den allmänna bilden av tidsdiagrammet visas i figuren.

Den blå streckade linjen visar 4 SPI-linjer, den röda streckade linjen visar 8 kanaler med parallella data i skiftregistret.

Punkt A på tidsskalan är det ögonblick då numret "210" överförs till skiftregistret, B är det ögonblick då siffran "0" skrivs, C är cykeln som upprepas från början.

Som du kan se, från A till B - 10,03 millisekunder och från B till C - 90,12 millisekunder, nästan som vi frågade i skissen. Ett litet tillägg i 0, 03 och 0, 12 ms är tiden för att överföra seriell data från Arduino, så vi har inte exakt 10 och 90 ms här.

Tidsdiagram för Arduino-utbyte och skiftregister 74HC595
Tidsdiagram för Arduino-utbyte och skiftregister 74HC595

Steg 6

Låt oss titta närmare på avsnitt A.

Högst upp är en lång puls med vilken Arduino initierar överföring på SPI-ENABLE-linjen - slavval. Vid denna tidpunkt börjar SPI-CLOCK-klockpulser genereras (andra raden uppifrån), 8 stycken (för överföring av 1 byte).

Nästa rad från toppen är SPI-MOSI - data som vi överför från Arduino till skiftregistret. Detta är vårt nummer "210" i binär - "11010010".

Efter slutförandet av överföringen, i slutet av SPI-ENABLE-pulsen, ser vi att skiftregistret har ställt in samma värde på sina 8 ben. Jag har markerat detta med en blå prickad linje och märkt värdena för tydlighet.

Ställa in nummer 210 på en parallellbuss via SPI
Ställa in nummer 210 på en parallellbuss via SPI

Steg 7

Låt oss nu rikta vår uppmärksamhet till avsnitt B.

Återigen, allt börjar med att välja en slav och generera 8 klockpulser.

Uppgifterna på SPI-MOSI-raden är nu "0". Det vill säga, just nu skriver vi siffran "0" i registret.

Men tills överföringen är klar lagrar registret värdet "11010010". Den matas ut till de parallella stiften Q0.. Q7 och matas ut när det finns klockpulser i linjen från den parallella utgången Q7 'till SPI-MISO-linjen, som vi ser här.

Ställa in nummer 0 på en parallellbuss via SPI
Ställa in nummer 0 på en parallellbuss via SPI

Steg 8

Således har vi studerat i detalj frågan om informationsutbyte mellan masterenheten, som var Arduino, och 74HC595-skiftregistret. Vi lärde oss att ansluta ett skiftregister, skriva data i det och läsa data från det.

Rekommenderad: