LEDDE matrisen med hjälp av SKIFT register (4 / 7 steg)

Steg 4: programvara

Susen

Ja, som allt, det finns ett trick. Tricket är att det aldrig finns mer än 8 Lysdioder tänds samtidigt.

För att detta ska fungera bra, behövs lite av crafty programmering. Konceptet har jag valt är att använda en timer avbryta. Här fungerar på displayen avbryta på ren svenska:

  • Timer räknas upp till en viss punkt, när nått avbrottstjänstens rutin körs.
  • Denna rutin beslutar vilken rad den nästa som ska visas.
  • Informationen för nästa rad är tittade upp från en buffert och skiftade i kolumnen föraren (denna information är "låst" så det inte är inte ännu visas).
  • Rad föraren är avstängd, ingen LED lyser just nu.
  • Kolumnen föraren är "låst" make i den information vi skiftade i två steg sedan den aktuella informationen ska visas.
  • Rad föraren sedan ger ström till den nya raden som vi visar upp.
  • Avbryta tjänsten rutinmässiga ändarna och programmet återgår till normala flödet tills nästa avbrottet.

Detta sker mycket snabbt. Avbrottet kastas varje 1 MSEK. Detta innebär att vi uppfriskande hela displayen om en gång varje 8 mSec. Detta innebär en display andelen runt 125Hz. Det finns viss oro när det gäller ljusstyrka eftersom vi i huvudsak kör lamporna vid 1/8 intermittensfaktor (de är lediga 7/8 av tiden). I mitt fall får jag en tillräckligt ljusstark skärm med ingen synlig blinkande.

Full LED-display är kartlagt i en matris. Mellan avbryter matrisen kan ändras (vara medveten om atomicity) och kommer att visas på displayen under nästa avbrottet.

Bestämd skriva kod för AVR mikrokontroller och hur man skriver kod för att prata med Skift register är utanför omfånget för detta instructable. Jag har inkluderat källkoden (skriven i C och kompilerat med AVR-GCC) samt den hex filen att programmera direkt. Jag har kommenterat all kod så du bör kunna använda detta för att klara upp frågor om hur man får data in skiftregister och hur den rad uppdateringen fungerar.

Observera att jag använder en teckensnittsfil som följde med ks0108 universal C biblioteket. Biblioteket kan hittas här: http://en.radzio.dxp.pl/ks0108/

Uppdatering:

Skift register: Hur man

Jag har beslutat att lägga lite om hur till program med Skift register. Jag hoppas det klarnar saker för dem som inte har arbetat med dem innan.

Vad de gör
Skift register tar en signal från en tråd och ut denna information till många olika stift. I det här fallet finns det en data tråd som tar i data och 8 stift som kontrolleras beroende på vilka data som har tagits emot. För att göra saker bättre, finns det en outpin för varje skiftregister som kan anslutas till en annan skiftregister input stift. Detta kallas cascading och gör expansionen potentialen en nästan obegränsad möjlighet.

Kontroll stiften
Skift register har 4 kontroll stift:

  • Spärr - detta stift berättar skiftregister när det är dags att byta till data som nyligen anges
  • Data - 1 och 0 är talande skiftregister vad stiften för att aktivera tas emot på detta stift.
  • Klocka - detta är en puls skickas från mikrokontroller som talar om skiftregister att ta en data behandling och flytta till nästa steg i kommunikationsprocessen
  • Aktivera utgången - detta är en on/off knapp, hög = på, låg = av

Att göra det göra din budgivning:
Här är en snabbkurs i driften av ovanstående kontroll stift:

Steg 1: Ange spärren, Data och klockan låg

  • Ställa in låset låg berättar skiftregister vi håller på att skriva till den.

Steg 2: Ange Data stift till logik värdet du vill skicka till SKIFT Register
Steg 3: Ställa in klockan pin hög, säger SKIFT Register att läsa i det aktuella Data stift värdet

  • Alla andra värden för närvarande i skift Register kommer att flytta över av 1 plats, att skapa utrymme för logik nuvärdet av Data stift.

Steg 4: Ställ klockan pin låg och upprepa steg 2 och 3 tills alla data har skickats till skiftregister.

  • Klockan PIN-koden måste anges låg innan du ändrar till nästa datavärde. Växla denna pin mellan höga och låga är det som skapar den "klocka puls" övergången registrera behov att veta när att gå till nästa steg i processen.

Steg 5: Ställ in spärren hög

  • Detta berättar skiftregister att ta alla data som har flyttats i och använda den för att aktivera utgångsstift. Detta innebär att du inte kommer att se data som det skiftande i; ingen förändring i produktionen stift kommer att ske tills spärren ligger högt.

Steg 6: Ange aktiverar produktionen hög

  • Det blir ingen pin utgång tills den aktiverar utgången är satt till hög, oavsett vad som händer med den andra kontroll tre stift.
  • Detta stift kan alltid stå hög om du vill

Cascading
Det finns två stift kan du använda för CSS, Os och Os1. OS är för snabbt stigande klockor och Os1 är för långsamt stigande klockor. Koppla detta stift till nästa skiftregister data stift och spill från detta chip kommer att föras in nästa.

Slutet av uppdatering

Adressering displayen

Jag har skapat en matris på 8 byte kallas row_buffer [] i exempelprogrammet. Varje byte motsvarar en rad med 8 x 8 display, rad 0 är botten och rad 7 är toppen. Den minst signifikanta biten av varje rad är till höger, den mest signifikanta biten till vänster. Ändra displayen är lika enkelt som att skriva ett nytt värde till data arrayen, avbrottstjänstens rutin tar hand om uppfriskande displayen.

Programmering

Programmering kommer inte att diskuteras i detalj här. Jag vill varna er att inte använda en DAPA programmering kabel som jag tror du kan inte programmera chip när det körs på 12MHz. Alla andra standard programmerare bör fungera (STK500, MKII, Dragon, parallell/seriell programmerare, etc.).

Säkringar:
Se till att programmera säkringarna att använda 12MHz kristallen
hfuse: 0xC9
lfuse: 0xEF

I åtgärd

En gång du programmet chip displayen ska rulla en "Hello World!". Här är en video av ledde matrisen i åtgärder. Videokvaliteten är ganska låg eftersom jag gjorde detta med min digitalkamera video funktionen och inte en riktig video eller webbkamera.

Se Steg
Relaterade Ämnen

Multiplexering fyra 7-segment visar med hjälp av SKIFT register Arduino

Hallo allaJag konstruerade ett enkelt sätt att multiplex fyra 7-Segment visar med hjälp av SKIFT register och en ArduinoLåt oss multiplex 7 segment displaySteg 1: Steg-1: Låt oss utforma Ta fyra 7-segment visar och löda på en PCB på ett sätt som sida...

DIY 8 x 8 ledde matrisen med Controller

Jag är i processen att göra en ordet klocka, och en av de saker som jag ville bygga för detta projekt var en ganska enkel 8 x 8 ledde matrisen.Detta instructable behandlar hur man bygger en 8 x 8 ledde matrisen och controller som kan vara gränssnitt...

LEDDE matrisen med arduino enkelt

Jag kommer att lära dig att använda en MAX7219 ledde matrisen med arduino UNO och det bästa är att det är super enkelt.Steg 1: Vad du behöver?Reservdelslista:1. MAX7219 Ledde matrisen2. M/F hoppare ledningar3. Arduino UNO4. USB-kabel för arduino5. da...

Nybörjare tutorial: kontrollera ledde matrisen med 2 595 SKIFT register och potmeter

Jag börjar bara med Arduino och instructables från amandaghassaei hjälpte mig mycket. I sin andra tutorialabout in- och utgångar förklarar hon hur du använder SKIFT register och hur man styr en ledde matrisen av multiplexing. I det sista steget föres...

DIY 8 x 8 RGB ledde matrisen med Controller

Efter att de 8 x 8 ledde matrisen och Controller som en del av min DIY Arduino Word-klocka, hade jag att göra en RGB versionen av ledde matrisen.Till skillnad från ett svartvitt ledde matrisen använder en RGB LED-matris antingen gemensam anod eller g...

LEDDE matrisen med Game Controller - en första Project

detta projekt byggdes för min inledande elektronik klass på University of Waterloo i Kanada. Detta var min första introduktion till elektronik och därför mitt första projekt.Följ dessa steg för att bygga en 16 x 16 lysdioder med en vägg (olika färgad...

Arduino powered 7 seg LED-skärm med hjälp av SKIFT register - jag gjorde det på TechShop

sju segmenterade skärmar är bra. De är ganska enkla, inte ta mycket ström och har en stor flexibilitet när det gäller att Visa nummer. Men bortsett från 14 stift bara för att köra det är sådan smärta. Om bara det fanns ett sätt att använda dem utan a...

9 * 9 ledde matrisen med Arduino

någonsin ville ha en större skärm?Denna display är baserad på en 9 * 9 gröna ledde matrisen. Displayen är drivande bara med en Arduino ombord (Duemilanove i mitt fall).Varför använder vi en matris och vi inte lyser upp lamporna individuellt?Grundlägg...

LEDDE matrisen med Arduino

Hola, jag är Javier från Makespace Madrid. Förra veckan anordnade vi en meetup att spela med LED matriser och Arduinos. Detta var del av "La noche de la electrónica con Jameco"Detta instructable är baserat på verkstaden. Den använder en enda led...

5 x 2 ledde matrisen med Arduino

för att göra detta 5 x 2 ledde matrisen behöver du följande:12 x hoppare ledningar10 x lysdioder10 x 330 Ohm motstånd1 x bakbord eller Perfboard1 x Arduino Uno eller Arduino Mega 2560Detta är ett mycket lätt och snabbt projekt. Det tar ca 30 minuter...

Bluetooth kontrollerad 4 X 4 ledde matrisen med hjälp av en SPLat EG1 PLC

Delar:lödkolv och lödborrDrillliten bit av träEn dator som kör SPLat/PC, den fri SPLat programming environment (IDE)solid strand trådKvinnliga huvud ledningar1 EG1 SPLat PLCJY-MCU Bluetooth trådlös seriell Port modul för Arduino16 lysdioder för att f...

10 x 5 RGB ledde matrisen med endast 5 IO pinnar

Om du vill bygga en fancy ledde matrisskärm med endast några pixlar, är det precis vad du behöver!Steg 1: Få allt vad du behöver!Du behöver:-En Arduino-WS2812(B) LED strip-En bit trä-7 hoppare ledningar-7 kvinnliga pin headers-några kondensatorer-någ...

Arduino ledde matrisen med Wii Nunchuck kontroll

Main Video:Dokumentation...

Arduino 8 * 8 ledde matrisen driver med 2 * 74HC595 SKIFT register

Jag köpte en 8 x 8 ledde matrisen inklusive en förare ombord med ett MAX7219CNG chip. Tyvärr detta chip inte fungerar korrekt. Så jag bestämde mig att bygga min egen drivrutin med hjälp av 2 74HC595 SKIFT register.Min lösning är baserad på den "Multi...

4 x 4 x 4 LED cube uppgradering med Skift register (74hc595)

projektet började med en påse med lysdioder som jag hade tagit bort från ficklampor, konvertera till UV ficklampor. Jag visste att jag skulle hitta något roligt för att använda dem med, men det var månader innan jag listade ut vad med dem att göra. N...

RULLANDE visning med ledde matrisen

Hej alla,Detta är en instructable om att skapa ett rullande displayen genom att ansluta en ledde matrisen med TM4C123GXL utveckling styrelse.Jag har försökt att lägga fram en detaljerad förklaring om ledde matrisen och teknik för att visa önskad text...

Fantastiska binära kalender och klocka med månen fas i en ledde matrisen

Hej, alla!Detta är mitt projekt med fler funktioner än min binär klocka som du kan se också på min en annan Instructables.Huvudtanken är att tillämpa i en enkel LED Matrix Display en massa funktioner, inklusive en komplett månadskalender med dag, mån...

24 x 10 ledde matrisen (Arduino baserat)

Jag har sett en hel del instructables som visar hur man bygger ledde matriser, men jag skulle vilja belysa två av dem, eftersom detta bygga bygger på att två bygger.Göra en 24 X 6 ledde matrisen av Syst3mXochGör en giant LED-tecken! (24 x 8 matris) a...

32 x 32 ledde matrisen

Bygga en 32 x 32 ledde matrisen med hjälp av en Atmega2560 mikrokontroller. Projektet innehåller stegen för att bygga matrix styrelse, PCB och programvaran (skriven i C++). Programvaran innehåller över 30 animationer, en RTC (realtidsklocka) och en t...