Stap 9: Beheersing van de LED 's
Elke LED wordt vertegenwoordigd door 1 bit. We moeten om te controleren elke LED, 28 bits verzenden in de registers van de verschuiving van de PIC18F4550. Aangezien we het SPI-protocol gebruiken om gegevens aan te brengen de verschuiving registreert, we uiteindelijk verzenden van 32 bits van gegevens (4 bytes). Dit is omdat het SPI-protocol alleen gegevens 8 bits tegelijk met deze bijzondere microcontroller verzonden. Anyway, de extra 4 bits worden niet gebruikt en we zullen negeer ze (we altijd laat hen als 0). Zodra we de gegevens in van de 74HC595 verschuiven, vergrendeling we dan"" hen. Dat betekent dat welke gegevens we in hen verschoven, zal het zetten die waarde (1 (hoog) of 0 (laag)) op de uitgangen. We zullen het hoofd in enkele voorbeelden nu die enkele vragen kan ruimen.
Voorbeeld 1
Zeggen dat we willen al van de blauwe LEDs op beurt. Wat zou de waarden voor elke byte van de gegevens die we verschuiving in elk journaal? Dit is waar sommige eenvoudige Booleaanse logica zal meespelen. Aangezien deze LEDs actieve hoge zijn (zij aanzetten wanneer we hen een 1 schrijven) moeten we schrijven een 1 ze inschakelen of een 0 hen om uit te schakelen. Dus als we willen dat ze allemaal op, hadden we om dit te schrijven aan de verschuiving-registers:
MSb Lsb Hex
IC1 - 1ste Byte verzonden -> 11111111 0xFF
IC2 - 2de Byte verzonden -> 11111111 0xFF
IC3 - 3e Byte verzonden -> 11111111 0xFF
IC4 - 4e Byte verzonden -> 00001111 0x0F
Zodat een vrij gemakkelijk was. We zojuist elke bit die aan staat voor een LED gelijk is aan 1 (+ 5v). Vervolgens zouden we de gegevens in klink en het zou weer op alle van de blauwe LEDs. Natuurlijk zijn de 4 bits die gelijk zijn aan 0 die degenen die we gaan negeren en niet met alle LEDs verbonden.
Voorbeeld 2
Zeggen dat we willen al van de blauwe LEDs OFF beurt. Dit is een ander eenvoudig, maar wat zouden we schrijven aan de verschuiving registers?
MSb Lsb Hex
IC1 - 1ste Byte verzonden -> 00000000 0x00
IC2 - 2de Byte verzonden -> 00000000 0x00
IC3 - 3e Byte verzonden -> 00000000 0x00
IC4 - 4e Byte verzonden -> 00000000 0x00
Nu zojuist we elke bit die een LED dat gelijk is aan 0 (0v vertegenwoordigt). Vervolgens zouden we de gegevens in klink en het zou zwenking vandoor alle van de blauwe LEDs.
Voorbeeld 3
Welke gegevens zou wij verzenden inschakelen van LED7, LED8, LED42, LED43, LED47 en LED52? Alle andere LEDs niet genoemd moeten worden uitgeschakeld.
bit 7---bit 0
MSb Lsb Hex
IC1 - 1ste Byte verzonden -> 11000000 0xC0
IC2 - 2de Byte verzonden -> 00000000 0x00
IC3 - 3e Byte verzonden -> 00000110 0x06
IC4 - 4e Byte verzonden -> 00001001 0x09
Zodra wij het klink, het zal weer op LED7 en LED8 die 7 (QH bit) en 6 (QG) bit op IC1. Ook beetje 1 (QB) en bit 2 (QC) op IC3 zal gaan hoog, draaien op LED42 en LED-43. Op IC4, bit 0 (QA) en bit 3 (QD) zal gaan hoog, draaien op LED47 en LED52.
Zijn werkelijk eenvoudig om te schakelen op een van de binnenkant LEDs. Gewoon eens een kijkje op het schema, erachter te komen waar de LED's zijn waarvoor u aan en uit, zet het in 4 bytes en uw set wilt. Vervolgens zullen we leren het gebruik van de functies die zijn geschreven voor de PIC18F4550 om de gegevens tot de registers van de shift te verzenden.