Innehållsförteckning:

Hur man driver många lysdioder från några mikrokontroller -stift: 6 steg (med bilder)
Hur man driver många lysdioder från några mikrokontroller -stift: 6 steg (med bilder)

Video: Hur man driver många lysdioder från några mikrokontroller -stift: 6 steg (med bilder)

Video: Hur man driver många lysdioder från några mikrokontroller -stift: 6 steg (med bilder)
Video: Störig granne 2024, November
Anonim
Hur man driver många lysdioder från några mikrokontroller -stift
Hur man driver många lysdioder från några mikrokontroller -stift

Med det faktum att många mikrokontroller-stift har tre tillstånd (+V, GND eller "hög impedans" kan du driva N*(N-1) lysdioder från N-stift. Så den lilla 8-stifts mikrokontrollen som en PIC12Fxxx eller en ATtiny11 kan driva 20 lysdioder lyser på fem tillgängliga utgångsstiften och har fortfarande en stift kvar för någon typ av ingång. Se även

Steg 1: 20 lysdioder på 5 stift

20 lysdioder på 5 stift
20 lysdioder på 5 stift

Den nuvarande grödan av mikrokontroller med låg stiftantal (6 stift till 20 stift på

hela paketet) är attraktivt prissatta och "söta", men frågan ställs om hur du bäst kan använda dessa stift för vanliga applikationer som att köra lysdioder. En direktanslutning för drivande lysdioder förbrukar en stift för varje lysdiod. Ett traditionellt multiplexeringsschema där rader med LED -anoder drivs av en uppsättning N -stift och varje rads gemensamma katod drivs av en annan uppsättning M -stift lyckas tända N*M -lysdioder med N+M -stift. Men på en processor med bara 5 eller färre utgångar (som är fallet med de flesta 8-poliga mikrokontroller) får du knappt fler utgångar än direktdrift.

Steg 2: Charlieplexing

Charlieplexing
Charlieplexing

Om vi antar att utgångsstiften faktiskt är tri-state-standbara (aktiv hög, aktiv låg och hög impedens (ingång)) är det också möjligt att dela rad- och kolumnförare och styra N*(N-1) lysdioder med endast N-stift. En stift är ansluten till vanliga katoder i en rad lysdioder och driven låg, och de återstående N-1-stiften är anslutna till anoderna och drivs högt för att tända den kolonnen, eller lämnas som ingångar för att lämna LEDoff. Maxim kallar denna teknik för "Charlieplexing" och beskriver den i (1); Microchip nämner också detta i sitt dokument (2) (och implementeringar på PICKit 1-kortet också.) (1) "Charlieplexing-Reducerad Pin-Count LED Display Multiplexing" https://www.maxim-ic.com/appnotes. cfm/appnote_number/1880 (2) "Tips och tricks 8-stifts FLASH PIC-mikrokontroller" https://ww1.microchip.com/downloads/en/DeviceDoc/40040b.pdf (3) Charlieplexing LEDs- The theory An Instructable av rgbphil

Steg 3: Sätta det i arbete

Att sätta det på jobbet
Att sätta det på jobbet
Att sätta det på jobbet
Att sätta det på jobbet

Detta driver 20 lysdioder från en ATtiny11. En tidigare version av detta kort var

faktiskt byggt och visas som huvudsidans foto. Jag är rädd att bilden av schemat är ganska hopplös; du behöver Eagle för att berätta vilka signaler som är anslutna var.

Steg 4: Mindre och mer mångsidig …

Mindre och mer mångsidig …
Mindre och mer mångsidig …

Eftersom det mesta av brädan tas upp av LED -matrisen kan vi få plats

för antingen ett Attiny -chip ELLER ett mikrochip PIC12F -chip. Krympa lysdioderna till 3 mm och gå till en dubbelsidig bräda, så får vi något om 27x44 mm Ack, det här kortet har inte testats än …

Steg 5: Itty Bitty

Itty Bitty
Itty Bitty

Mikrochip har naturligtvis sina 6 -stifts PIC10F -chips som kan driva en

bara 6 lysdioder från de 3 utgångsstiften. Detta är cirka 16 mm i diameter. Om du går till 603 lysdioder kan du bli lite mindre, men jag är inte säker på vad det är.

Steg 6: Programvara

Programvaran blir lite rörig av flera skäl:

1) för de kretskort som visas läggs lysdioderna ut på ett sätt som är bekvämt för kretskortets layout, snarare än i "korrekt" bitordning. IMO, det här är sättet att göra saker, men det betyder att rad 1 inte nödvändigtvis betyder bit 1, eller kolumn 3 betyder inte bit 3. Detta kräver en kartläggningsnivå mellan den vanliga rad-/kolumnadresseringen och bitar som behöver ställas in. 2) Eftersom samma bitar används för anoder och katoder kan den gemensamma (rad) anslutningen för vissa bitar vara i mitten av drivna (kolumn) bitar. Det betyder att du måste flytta kolumnbitar beroende på om de är före eller efter radbiten för den uppsättningen kolumner. 3) Du måste härleda utdataord för både ioporten och portriktningsregistret. Den bifogade ASM -koden för ATtiny11 är ett "proof of concept". Det är pinsamt ooptimerat och dåligt kommenterat, men det är allt jag har skrivit hittills.

Rekommenderad: