Hur man skapar en öl flaska LED VU-Meter (9 / 17 steg)
Steg 9: Kontrollera lysdioderna
Varje LED representeras av 1 bit. För att kontrollera varje LED, måste vi skicka 28 bitar till SKIFT register från PIC18F4550. Ser som vi använder SPI protokollet för att överföra data till SKIFT register, vi faktiskt sluta skicka 32 bitar data (4 byte). Detta är eftersom SPI protokollet skickar endast data 8 bitar på en gång med denna särskilda mikrokontroller. Anyway, de extra 4 bitarna används inte och vi kommer bara ignorera dem (vi ska alltid lämna dem som 0). När vi flytta data till 74HC595, spärren vi sedan"" dem. Vilket innebär att oavsett data vi skiftade in dem, kommer att det sätta detta värde (1 (hög) eller 0 (låg)) på dess resultat. Vi kommer huvudet i några exempel nu som kan rensa upp några frågor.
Exempel 1
Att vi vill förvandla alla blå lysdioder på. Vad är värdena för varje byte data vi flytta in i varje register? Detta är där vissa grundläggande boolesk logik kommer in i bilden. Eftersom dessa lysdioder är aktiv hög (de slår på när vi skriver en 1 till dem) måste vi skriva en 1 aktivera dem eller en 0 inaktiverar dem. Så om vi vill ha dem alla på, skulle vi behöva skriva detta till de SKIFT register:
MSb Lsb Hex
IC1 - 1 Byte skickas -> 11111111 0xFF
IC2 - 2 Byte skickas -> 11111111 0xFF
IC3 - 3 Byte skickas -> 11111111 0xFF
IC4 - 4 Byte skickas -> 00001111 0x0F
Så att en var ganska lätt. Vi gjorde bara varje bit som representerar en LED lika med 1 (+ 5v). Sedan skulle vi spärren data i och det skulle visa på alla de blå lysdioderna. 4 bitar som är 0 är naturligtvis de dem som vi kommer att ignorera och inte är ansluten till alla lysdioder.
Exempel 2
Att vi vill förvandla alla av blå lysdioder av. Detta är en annan lätt, men vad skulle vi skriva till de SKIFT register?
MSb Lsb Hex
IC1 - 1 Byte skickas -> 00000000 0x00
IC2 - 2 Byte skickas -> 00000000 0x00
IC3 - 3 Byte skickas -> 00000000 0x00
IC4 - 4 Byte skickas -> 00000000 0x00
Nu har vi precis gjort varje bit som representerar ett LED är lika med 0 (0v). Sedan skulle vi spärren data i och det skulle stänga av alla Blå lysdiod.
Exempel 3
Vilka data vill vi sända att slå på LED7, LED8, LED42, LED43, LED47 och LED52? Alla andra lampor inte nämns bör vara avstängd.
bit 7---bit 0
MSb Lsb Hex
IC1 - 1 Byte skickas -> 11000000 0xC0
IC2 - 2 Byte skickas -> 00000000 0x00
IC3 - 3 Byte skickas -> 00000110 0x06
IC4 - 4 Byte skickas -> 00001001 0x09
När vi spärren det, det kommer slå på LED7 och LED8 som är bit 7 (QH) och bit 6 (QG) på IC1. Också lite 1 (QB) och bit 2 (QC) på IC3 kommer gå högt, slå på LED42 och LED 43. På IC4, bit 0 (QA) och bit 3 (QD) kommer gå högt, slå på LED47 och LED52.
Dess verkligen enkelt att aktivera någon av insidan lysdioder. Bara ta en titt på schematiskt, räkna ut var lysdioderna är att du vill på och av, konvertera det till 4 byte och din uppsättning. Nästa lär vi dig att använda funktioner som har skrivits för PIC18F4550 att överföra uppgifterna till SKIFT register.