Stap 4: Conserve i/o-poorten met een verschuiving registreren
Een moment om te "shift" versnellingen...
Een shift register kan best worden begrepen door te denken over de twee woorden die deel van zijn naam uitmaken: "shift" en "registreren". De verschuiving van het woord verwijst naar hoe de gegevens via het register gaat. Hier (zoals in onze Arduino en microcontrollers, in het algemeen) een register is een locatie die gegevens bevat. Het doet dit door implementsing een lineaire keten van digitale logica-schakelingen genaamd "flip flops" die heeft twee stabiele staten die kunnen worden vertegenwoordigd door een 1 of 0. Dus, door de invoering van acht slippers samen hebt u een apparaat dat kan houden en die van een 8-bits byte.
Net zoals er zijn verschillende soorten flip-flops en verschillende variaties op een thema van shift registers (denk omhoog/omlaag tellers en Johnson items), zijn er ook verschillende soorten shift registers gebaseerd op hoe de gegevens in het register is vergrendeld en hoe die gegevens wordt uitgevoerd. Op basis van deze, houd rekening met de volgende soorten shift registers:
- Seriële / parallelle uit (SIPO)
- Serieel / seriële uit (SISO)
- Parallel In / seriële uit (PISO)
- Parallel In / Parallel uit (PIPO)
Twee van de nota zijn SIPO en PISO. SIPO registers Neem gegevens serieel, dat wil zeggen, een beetje na de andere, verschuift de eerder invoer bit over naar de volgende flip flop en verzenden van de gegevens uit op alle ingangen in een keer. Dit maakt een mooie seriële naar parallelle converter. PISO shift registers, hebben daarentegen parallelle ingangen, zodat alle bits tegelijk worden ingevoerd, maar output een tegelijk zijn. En je raadt het al, dit zorgt voor een mooie parallel naar seriële converter. Het register van de verschuiving dat we gebruiken wilt om het aantal I/O pinnen zou ons in staat stellen te nemen van de 8 IO pinnen die we al eerder gebruikt en verminderen ze neer aan één, of misschien gewoon een paar, gezien het feit dat wij wellicht om te bepalen hoe we de input van de bits. Het shift register we gebruiken daarom een seriële / parallelle poort uit.
Kabellengte tot het register van de verschuiving tussen de LED en Arduino
Met behulp van een shift register is eenvoudig. Het moeilijkste deel is gewoon visualiseren de data pennen en hoe de binaire cijfers zal eindigen in de IC en hoe zullen zij uiteindelijk verschijnen op de LED. Neem een moment om het plan dit uit.
1. Bevestig 5V pin 14 (rechtsboven) en pin 7 (linksonder) te nemen tot grond.
2. het register verschuiving heeft twee seriële ingangen, maar we zullen alleen worden met behulp van een, dus pin twee verbinden met 5V
3. we zullen niet worden met behulp van de duidelijke pin (gebruikt op nul uit alle outputs) dus laten zweven of aanvallen naar 5V
4. Sluit een digitale IO-poort naar pin een van de shift register. Dit is de seriële input pin.
5. Sluit één digitale IO-poort op pin 8 (rechtsonder). Dit is de pin klok.
6. Sluit uw data lijnen van Q0 aan V6. We gebruiken alleen 7 bits omdat de ASCII-tekenset slechts zeven bits gebruikt.
Ik gebruikte PD2 voor het uitvoeren van mijn seriële data en PD3 voor het kloksignaal. Voor de gegevens pinnen, ik Q0 aangesloten op D6 op de LED en blijven op die manier (Q1 D5, Q2 D4, enz). Aangezien we sturen gegevens serieel dat zullen we moeten onderzoeken van de binaire vertegenwoordiging van elk teken willen we te sturen, kijken naar 1's en 0's, en elke bit op de seriële lijn outputting. Ik heb een tweede versie van de bron van de dotmatrixled.c samen met een Makefile hieronder opgenomen. Het doorlopen van de tekenset en alle even tekens worden weergegeven (als het is raar denken dat een letter of oneven, na te denken over de binaire vertegenwoordiging voor een moment zou kunnen zijn). Proberen om erachter te komen hoe maak je het doorlopen van alle vreemde tekens worden weergegeven. Verder kunt u experimenteren met de verbindingen tussen het shift register, de dot matrix LED en je Arduino. Er zijn verschillende controle functies tussen de LED en het register die kan u toestaan om fine-tunen van uw controle over wanneer gegevens wordt weergegeven.
Dus... we zijn gegaan van moetend gebruiken acht I/O poorten om alleen met behulp van twee!