Stap 47: Software: LED raster functies
VOID LED_Pixel (UINT8 px, py UINT8, UINT8 staat)
Deze functie neemt een (x, y) coördineren en wijzigt de bits die de pixel vertegenwoordigt. Als 'staat' gelijk aan 1, het stukje dat de pixel vertegenwoordigt zal worden ingesteld op een 1 is, als staat gelijk aan 0 is, wordt de bit gewist op 0. We moesten terug in stap #45 in voorbeeld #2, wijzigen van de gegevens van de LED Pixel(11,7) inschakelen. Alsof we deze functie gebruiken om te schakelen op de LED op (11,7) zou wij schrijven:
LED_Pixel(11,7,on);
HT1632_UPDATE = 1;
De reden dat ik de pixel in de LED_Pixel(x,ystate) functie zelf niet werken is omdat we wilt kunnen wijzigen van meerdere pixels en hebben ze alle tegelijk bijgewerkt. Zoals dit:
LED_Pixel(16,5,on);
LED_Pixel(16,6,on);
LED_Pixel(16,7,on);
LED_Pixel(16,8,on);
LED_Pixel(17,8,on);
LED_Pixel(18,8,on);
HT1632_UPDATE = 1;
Hoewel wij hebben opgeroepen LED_Pixel(x,y,state) zes verschillende tijden, zal de gewijzigde gegevens van de LED alle worden bijgewerkt op hetzelfde moment als de volgende timer3-interrupt optreedt. In het geval dat u benieuwd was, make-up die pixels in de vorm van een 'L' op de grid.
VOID Draw_Circle (UINT8 px, py UINT8, UINT8-straal)
Deze functie zal de LED gegevens wijzigen en maken een cirkel rond het middelpunt van (px, py). De 3e parameter wordt ingesteld op de straal van de cirkel. Foto #2 toont een voorbeeld voor de volgende code:
Draw_Circle(16,6,3);
HT1632_UPDATE = 1;
VOID Draw_Rect (UINT8 px, py UINT8 UINT8 sx, UINT8 sy)
Deze functie wordt gebruikt om een rechthoek basisgewicht van punt (px, py). De grootte van de rechthoek wordt opgegeven in pixels door sx en sy. Foto #3 toont een voorbeeld van hoe de rechthoek is getekend (een plein kan ook worden gemaakt met deze functie).
Draw_Rect(5,2,8,6);
HT1632_UPDATE = 1;
VOID Fill_Grid(void)
Deze functie wordt elke bit in de matrix LED gegevens op 1 ingesteld. Als het raster wordt bijgewerkt na het aanroepen van dit vervolgens zullen alle LED pixels maar inschakelen.
Fill_Grid();
HT1632_UPDATE = 1;
VOID Clear_Grid(void)
Deze functie wordt elke bit in de matrix LED gegevens op 0 gewist. Als het raster wordt bijgewerkt na het aanroepen van dit vervolgens dooft alle pixels LED. Deze functie is handig wanneer we willen een nieuw frame te tekenen op de LED-grid, we kunnen beginwaarden van de oude LED_data [x] bits en beginnen met het wijzigen van de gegevens te weten dat elke bit 0 (OFF) heeft hersteld.
Clear_Grid(); Zuiver uiterlijk oude gegevens
Schrijven in de nieuwe gegevens hier
HT1632_UPDATE = 1;
VOID Draw_Border(UINT8 width)
Deze functie zal een rand rond de omtrek van het raster LED trekken. De breedte van de rand wordt ingesteld door de waarde die is doorgegeven in 'breedte'. De maximale waarde voor een rand is 6 pixels (6 pixels * 2 kanten 12 COLs =) en de minimumwaarde is 1 (uiteraard). In het voorbeeld hieronder wordt geïllustreerd in foto #4.
Draw_Border(2);
HT1632_UPDATE = 1;
VOID Invert_Grid(void)
Deze functie zal elk van de LED-databits gewoon omkeren. Als u dit recht functie uitvoert voordat u HT1632_UPDATE gelijk is aan 1, verschijnt het precies het tegenovergestelde van wat het zou gaan om weer te geven voordat u deze functie uitvoert. (dat wil zeggen de LEDs die op waren zal worden uitgeschakeld en de LEDs die uitgeschakeld waren zal worden op).
Andere code instelling LED stukjes hier
Invert_Grid();
HT1632_UPDATE = 1;
VOID HT1632_Set_PWM(UINT8 value)
Deze functie is in de stuurprogrammabestanden van de HT1632C en het kan de LED raster ingesteld op 16 verschillende niveaus van helderheid. Foto #5 toont de plicht cycli voor elk helderheid en foto #6 toont de cycli van de plicht van elke helderheid in de vorm van een grafiek. Deze functie hoeft niet een raster update nadat het heet zoals het schrijft rechtstreeks in de HT1632C-stuurprogramma's en de helderheid door PWM past. Als we het raster LED wilden dimmen tot een 10/16 duty cycle instellen (zie grafiek voor waarde) wij zou schrijven:
HT1632_Set_PWM(9);
Dat is de meerderheid van de basisfuncties. Nu dat je weet hoe de controle van de LED-raster kunnen we combineren van deze functies en vertragingen kunt maken enkele echt cool effecten.