LED-matrix met behulp van shift registers (4 / 7 stap)

Stap 4: Software

De truc

Ja, net als alles, er is een truc. De truc is dat er nooit meer dan 8 LEDs verlicht op een bepaald moment.

Voor dit goed te werken, een beetje crafty programmering nodig. Het concept dat ik heb gekozen is het gebruik van een timer-interrupt. Hier is de werking van de interrupt display in plain Engels:

  • Timer telt tot een bepaald punt, wanneer de interrupt service routine bereikt wordt uitgevoerd.
  • Deze routine beslist welke rij is de volgende dia moet worden weergegeven.
  • De informatie voor de volgende rij wordt opgezocht in een buffer en verschoven naar het kolom-stuurprogramma (deze informatie is "vergrendeld", dus het is niet nog niet weergegeven).
  • De rij-stuurprogramma is uitgeschakeld, geen LEDs zijn momenteel verlicht.
  • Het stuurprogramma van de kolom is "vergrendeld" maken in de informatie die we verschoven in twee stappen geleden de huidige informatie weer te geven.
  • De rij-driver biedt dan huidige naar de nieuwe rij die we bekijken.
  • Het programma voor interrupt service routine wordt beëindigd en keert terug naar normale doorstroming tot de volgende interrupt.

Dit gebeurt heel erg snel. De interrupt wordt gegenereerd elke 1 mSec. Dit betekent dat we de hele weergave over eens elke 8 bent vernieuwd mSec. Dit betekent een display-tarief van ongeveer 125Hz. Er is enige bezorgdheid met betrekking tot helderheid omdat we in wezen de LED's op een 1/8 duty cycle (ze zijn uitgeschakeld 7/8 van de tijd) worden uitgevoerd. Ik krijg in mijn geval een voldoende helder display met geen zichtbare knipperen.

De volledige LED-display in een array is uitgestippeld. Tussen onderbreekt de array kan worden gewijzigd (Wees bewust van atomiciteit) en zal tijdens de volgende interrupt verschijnen op het display.

De specifieke kenmerken van het schrijven van code voor de AVR microcontroller en over het schrijven van code om te praten met de shift-registers valt buiten het bestek van dit instructable. Ik heb de broncode (geschreven in C en gecompileerd met AVR-GCC) opgenomen evenals het hex bestand rechtstreeks programmeren. Ik heb alle code gereageerd zodat u kundig voor toepassing zulks zitten moet te helderen eventuele vragen over hoe om gegevens in het register van de verschuiving en hoe de rij vernieuwen werkt.

Houd er rekening mee dat ben ik met behulp van een lettertypebestand dat kwam met de ks0108 universele C bibliotheek. Die bibliotheek kan hier worden gevonden: http://en.radzio.dxp.pl/ks0108/

Update:

Shift Registers: Hoe

Ik heb besloten om toe te voegen een beetje over hoe te programmeren met shift registers. Ik hoop dat dit wist dingen voor degenen die nog niet gewerkt met hen voor.

Wat ze doen
Shift Registers nemen een signaal van een draad en output die informatie op veel verschillende pinnen. In dit geval is er één draad van de gegevens die in de gegevens en 8 pinnen die zijn gecontroleerd, afhankelijk van welke gegevens heeft ontvangen. Om dingen beter, is er een outpin voor elke shift register dat kan worden aangesloten op de ingang pin van een ander shift register. Dit heet trapsgewijze en maakt de uitbreiding potentiële een bijna onbeperkte vooruitzicht.

De Control pennen
Shift registers hebben 4 pinnen van de controle:

  • Klink - deze pin vertelt het shift register wanneer het tijd is om over te schakelen naar de nieuw ingevoerde gegevens
  • Gegevens - de 1's en 0's vertellen het shift register welke pinnen te activeren worden ontvangen op deze pin.
  • Klok - dit is een puls verzonden vanaf de microcontroller die vertelt het shift register naar de volgende stap in het communicatieproces gaan en neem een lezing van gegevens
  • Inschakelen uitgang - dit is een aan/uitschakelaar, hoog = op, laag = Off

Het maken van het doen van uw biedingen:
Hier is een spoedcursus in de werking van de bovenstaande controle pinnen:

Stap 1: Set klink, Data en Clock laag

  • De klink laag instelt vertelt het shift register, dat wij zijn bezig met het schrijven.

Stap 2: Instellen Data pin aan de logica-waarde die u wilt verzenden het Shift register
Stap 3: Klok instellen pin hoog, vertellen de Shift Register te lezen in de huidige waarde van de Data-pin

  • Alle andere waarden op dit moment in het Shift Register wordt verplaatst door 1 plaats, ruimte voor de huidige waarde van de logica van de Data pin.

Stap 4: Instellen van de klok pin laag en herhaal stap 2 en 3 totdat alle data is verstuurd naar het shift register.

  • De pin klok moet laag worden ingesteld voordat u naar de volgende gegevenswaarde. Deze pin tussen hoge en lage wisselen is wat creëert de "klok pulse" de verschuiving registreren moet weten wanneer te verplaatsen naar de volgende stap in het proces.

Stap 5: Set klink hoge

  • Dit vertelt het shift register alle van de gegevens die heeft verschoven in te nemen en gebruik deze om het activeren van de pennen. Dit betekent dat u niet gegevens ziet zoals het verschuift in; geen verandering in de output pinnen tot de hendel optreden zullen hoog is ingesteld.

Stap 6: Instellen in staat stellen uitvoer hoge

  • Er zullen geen pin-uitvoer tot de uitvoer van de pagina is ingesteld op hoog, ongeacht wat er gebeurt met de andere drie pinnen controle.
  • Deze pin kan altijd worden overgelaten aan hoge indien gewenst

Trapsgewijs
Er zijn twee pennen die u voor trapsgewijze, Os en Os1 gebruiken kunt. OS is voor snel stijgende klokken en Os1 is voor langzaam stijgende klokken. Haak deze pin aan de pin van de gegevens van het volgende shift register en de overloop van deze chip zal worden opgenomen in de volgende.

Einde van update

Aanpakken van het display

In het voorbeeldprogramma die ik heb gemaakt een array van 8 bytes, genaamd [row_buffer]. Elke byte correspondeert met één rij van de 8 x 8 display, rij 0 wordt de onderkant en rij 7 wordt de top. De minst significante bits van elke rij ligt aan de rechterkant, de meest significante bit aan de linkerkant. De weergave aanpassen is net zo eenvoudig als het schrijven van een nieuwe waarde aan de array van die gegevens, de interrupt service routine zorgt ervoor dat de weergave wordt vernieuwd.

Programmering

Programmering zal niet hier in detail besproken worden. Ik zou u geen gebruik van een DAPA programmeer kabel volgens dat u zal zitten onvermogend voor de chip program, als het eenmaal op 12MHz draait te waarschuwen. Alle andere standaard programmeurs moeten werken (STK500 MKII, Dragon, Parallel/serieel programmeurs, enz.).

Zekeringen:
Zorg ervoor dat de zekeringen te gebruiken van de 12MHz kristal program
hfuse: 0xC9
lfuse: 0xEF

In actie

Eenmaal je programma de chip het scherm moet schuiven een 'Hello World!'. Hier is een video van de LED-matrix in acties. De videokwaliteit is vrij laag, zoals u dit met de VideoEigenschap van de mijn digitale camera's en niet een goede video of webcam heb ik gemaakt.


Gerelateerde Artikelen

Beginner tutorial: controle LED matrix met 2 595 shift registers en potmeter

Beginner tutorial: controle LED matrix met 2 595 shift registers en potmeter

Ik ben net begonnen met Arduino en de instructables van amandaghassaei sociaal assistente mij alot. In haar tweede tutorialabout in- en uitgangen vertelt ze hoe met shift registers en het instellen van een LED-matrix door multiplex. In de laatste sta
Arduino aangedreven 7 seg LED display met behulp van Shift registreert - ik maakte het op TechShop

Arduino aangedreven 7 seg LED display met behulp van Shift registreert - ik maakte het op TechShop

zeven gesegmenteerde displays zijn groot. Ze zijn vrij eenvoudig, niet veel macht, en hebben een heleboel flexibiliteit als het gaat om het weergeven van nummers. Maar afgezien van 14 pinnen net om het te draaien is zo'n pijn. Als slechts er een mani
Arduino 8 * 8 Matrix Led driver met 2 * 74HC595 shift registers

Arduino 8 * 8 Matrix Led driver met 2 * 74HC595 shift registers

Ik kocht een 8 x 8 Led Matrix met inbegrip van een driver board met een MAX7219CNG chip. Deze chip was helaas niet goed werkt. Dus besloten heb ik om mijn eigen stuurprogramma met behulp van 2 74HC595 shift registers.Mijn oplossing is gebaseerd op de
LED kerstkaarten met behulp van PIC 10F200

LED kerstkaarten met behulp van PIC 10F200

dit is een instructable over het bouwen van een LED Kerstkaart met behulp van de PIC 10F200 microcontroller.Aangezien deze PIC zes pinnen heeft en de grootte van een SMD-transistor is, het is ideaal voor low-profile toepassingen en kan gemakkelijk wo
Multiplexing van vier 7-segment displays met behulp van Shift registreert Arduino

Multiplexing van vier 7-segment displays met behulp van Shift registreert Arduino

Hallo iedereenIk ontwierp een eenvoudige manier om het multiplexen van vier 7-Segment displays met behulp van Shift registreert en een ArduinoLaten we het 7 segment display multiplexStap 1: Stap-1: laten we ontwerpen Neem vier 7-segment displays en h
Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Vandaag, we zullen worden ter illustratie van hoe maak je een enkele LED knipperen met behulp van een Arduino Uno-board. Door elke stap te volgen, zal je dit doel bereiken.U zal het volgende nodig:Een Arduino BoardBrood bordUSB-connectorkabelEEN LED3
LED controle met behulp van de Arduino Bluetooth en Android. (Deel 1)

LED controle met behulp van de Arduino Bluetooth en Android. (Deel 1)

Dit instructable is een eenvoudige tutorial uitleggen hoe de controle van één LED met Android's Bluetooth.U moet:Arduino UNOWeerstanden 300Ω (3 x)Weerstand 150ΩLEDJumpers;Bluetooth-Module (HC-06/andere);Android telefoon;SPP Bluetooth Apk (unWired Lit
LED licht met behulp van een Arduino

LED licht met behulp van een Arduino

Een Arduino is een open-source van de computerhardware, open-source software en microcontroller-gebaseerde kits voor het bouwen van digitale apparaten en interactieve objecten die kunnen voelen en aansturen van fysieke apparaten. Er zijn verschillend
Motie gecontroleerde RGB Led pak met behulp van Xbox 360 Kinect, Max MSP en Arduino deel 1

Motie gecontroleerde RGB Led pak met behulp van Xbox 360 Kinect, Max MSP en Arduino deel 1

Ik wilde voor de afgelopen paar maanden die ik aan een project kinect gewerkt heb gemaakt van een led outfit dat gereageerd op de bewegingen van de drager. Ik heb tot nu toe alleen de armen gedaan, en er zijn enkele problemen die moeten worden uitgew
De Matrix met behulp van Terminal.

De Matrix met behulp van Terminal.

Hey jongens dit Instructable leert u hoe u de Matrix met behulp van terminal op een Mac. Dit werkt voor in principe elke Mac, als er Terminal. Ik hoop dat dit u helpt. BedanktStap 1: Stap: 1Open Terminal en wachten op de pagina te laden.Stap 2: Stap
5 x 4 LED weergave matrix met behulp van een Basic Stamp 2 (bs2) en Charlieplexing

5 x 4 LED weergave matrix met behulp van een Basic Stamp 2 (bs2) en Charlieplexing

hebben een Basic Stamp 2 en sommige extra LEDs rondhangen? Waarom niet spelen rond met het concept van charlieplexing en maak een uitvoer met behulp van slechts 5 pinnen.Voor dit instructable ik zal worden met behulp van de BS2e maar lid van de famil
3 x 3 x 3 led kubus met behulp van een 555 timer en een scala van 4020 shift IC - geen programmering (voor de complete beginner zoals ikzelf)

3 x 3 x 3 led kubus met behulp van een 555 timer en een scala van 4020 shift IC - geen programmering (voor de complete beginner zoals ikzelf)

zien van een video van een 8 x 8 x 8 led kubus op you-tube, leidde me naar de instructables website voor de eerste keer, nu ik ben verslaafd. Echter had ik of moet ik zeggen hebben een fundamenteel probleem absoluut geen ervaring of kennis van elektr
RGB LED Tutorial (met behulp van een Arduino) (RGBL)

RGB LED Tutorial (met behulp van een Arduino) (RGBL)

LED's zijn geweldig. Maar er een punt waar het opvlammen eenvoudigweg niet voldoende is bij elk project komt. Voor deze gevallen een RGB (rood, groen, blauw) is LED het antwoord.Elke kleur gloed met een RGB LED zult u kunnen tot uw hartje begeert.Bij
Met behulp van Shift 74HC595 registreren met ULN2803, UDN2981 en BC327

Met behulp van Shift 74HC595 registreren met ULN2803, UDN2981 en BC327

Hallo, alle!!In veel situaties in uw projecten met microcontrollers kunt u een shift register als 74HC595 rechtstreeks met LEDs en displays, maar als u het gegevensblad zult u zien dat moet zorgen met de maximale stroom op elke uitgang en ook met de