Obsah:

Matice displeje 5x4 LED pomocí základního razítka 2 (bs2) a charlieplexování: 7 kroků
Matice displeje 5x4 LED pomocí základního razítka 2 (bs2) a charlieplexování: 7 kroků

Video: Matice displeje 5x4 LED pomocí základního razítka 2 (bs2) a charlieplexování: 7 kroků

Video: Matice displeje 5x4 LED pomocí základního razítka 2 (bs2) a charlieplexování: 7 kroků
Video: Выкачиваем жидкокристалические пиксели с битого экрана монитора. Лайфак 2024, Září
Anonim
Matice displeje 5x4 LED pomocí základního razítka 2 (bs2) a charlieplexování
Matice displeje 5x4 LED pomocí základního razítka 2 (bs2) a charlieplexování

Máte základní razítko 2 a nějaké další LED diody? Proč si nepohrát s konceptem charlieplexingu a vytvořit výstup pomocí pouhých 5 pinů.

Pro tento instruktáž budu používat BS2e, ale každý člen rodiny BS2 by měl fungovat.

Krok 1: Charlieplexing: Co, proč a jak

Podívejme se nejprve na to, proč z cesty. Proč používat charlieplexing se základním razítkem 2? --- Důkaz konceptu: Zjistěte, jak funguje charlieplexing, a naučte se něco o BS2. To se mi může později hodit při použití rychlejších 8pinových čipů (pouze 5 z nich bude i/o). --- Užitečný důvod: V zásadě žádný neexistuje. BS2 je příliš pomalý na zobrazení bez znatelného blikání. Co je to charlieplexing? --- Charlieplexing je způsob pohánění velkého počtu LED diod s malým počtem I/O pinů mikroprocesoru. Dozvěděl jsem se o charlieplexingu z www.instructables.com a vy také můžete: LED diody Charlieplexing- Teorie Jak řídit mnoho LED z několika pinů mikrokontroléru. Také na wikipedii: CharlieplexingJak mohu řídit 20 LED s 5 I/O piny? --- Přečtěte si prosím tři odkazy v části „Co je to charlieplexing?“. To to vysvětluje lépe, než jsem kdy mohl. Charlieplexing se liší od tradičního multiplexu, který potřebuje jeden I/O pin pro každý řádek a každý sloupec (to by bylo celkem 9 I/O pinů pro 5/4 displej).

Krok 2: Hardware a schéma

Hardware a schéma
Hardware a schéma

Seznam materiálů: 1x - Základní razítko 220x - světelné diody (LED) stejného typu (barva a pokles napětí) 5x - odpory (viz níže ohledně hodnoty odporu) Pomocné/Volitelné: Způsob programování vašeho BS2Momentární tlačítko jako resetovací spínač6v -9v Napájení v závislosti na verzi BS2 (přečtěte si příručku) Schéma: Toto schéma je sestaveno s ohledem na mechanické rozložení. Vlevo uvidíte nastavenou mřížku LED, to je orientace, pro kterou byl napsán kód BS2. Všimněte si, že každý pár LED má anodu připojenou ke katodě druhé. Poté jsou připojeny k jednomu z pěti pinů I/O. Hodnoty odporu: Měli byste vypočítat vlastní hodnoty odporu. Zkontrolujte datový list svých LED diod nebo použijte nastavení LED na digitálním multimetru a vyhledejte pokles napětí vašich LED diod. Proveďte několik výpočtů: Napájecí napětí - pokles napětí / požadovaný proud = hodnota odporu BS2 dodává 5v regulovaný výkon a může zdroj 20mA proudu. Moje LED diody mají pokles 1,6 V a pracují při 20 mA. 5 V - 1,6 V / 0,02 A = 155 ohmů K ochraně vašeho BS2 byste měli použít další vyšší hodnotu odporu z toho, co získáte výpočtem, v tomto případě věřím, že by to bylo 180 ohmů. Použil jsem 220 ohmů, protože moje vývojová deska má v sobě zabudovanou hodnotu odporu pro každý pin I/O. POZNÁMKA: Věřím, že protože na každém pinu je odpor, toto účinně zdvojnásobuje odpor na každé LED, protože jeden pin je V+ a druhý je Gnd. V takovém případě byste měli snížit hodnoty odporu na polovinu. Nepříznivým účinkem příliš vysoké hodnoty odporu je stmívací LED. Může to někdo ověřit a nechat mi PM nebo komentář, abych mohl tyto informace aktualizovat? Programování: K programování čipu přímo na desce používám vývojovou desku, která má konektor DB9. Tento čip také používám na svém nepájivém prkénku a zahrnul jsem záhlaví In Circuit Serial Programming (ICSP). Záhlaví je 5 pinů, piny 2 až 5 se připojují k pinům 2-5 na sériovém kabelu DB9 (pin 1 je nepoužitý). Pamatujte, že pro použití tohoto ICSP záhlaví musí být piny 6 a 7 na kabelu DB9 navzájem propojeny. Reset: Okamžité stisknutí resetovacího tlačítka je volitelné. To při přitlačení pouze přitáhne kolík 22 k zemi.

Krok 3: Breadboarding

Breadboarding
Breadboarding
Breadboarding
Breadboarding

Nyní je čas postavit matici na prkénko. Pomocí svorkovnice jsem spojil jednu nohu z každého páru LED dohromady a malým propojovacím drátem spojil ostatní nohy. Toto je podrobně popsáno na detailní fotografii a podrobně vysvětleno zde: 1. Orientujte svůj prkénko tak, aby odpovídalo většímu obrázku2. Umístěte LED 1 anodou (+) směrem k vám a katodě (-) od vás. 3. Umístěte LED 2 ve stejné orientaci s anodou (+) na připojovací svorkovnici katody LED 1. 4. Pomocí malého propojovacího vodiče propojte anodu LED 1 s katodou LED 2.5. Opakujte, dokud nebude na desku přidán každý pár LED diod. Jako sběrnice pro I/O piny BS2 používám to, co by za normálních okolností byly pásy napájecí sběrnice na desce chleba. Protože existují pouze 4 sběrnicové pásy, používám pro P4 (páté připojení I/O) svorkovnici. To je vidět na větším obrázku níže. Připojte svorkovnici pro katodu LED 1 ke sběrnici P0. Opakujte pro každou lichou LED s nahrazením správného P* pro každý pár (viz schéma). Připojte svorkovnici pro katodu LED 2 ke sběrnici P1. Opakujte pro každou lichou LED s nahrazením správného P* pro každý pár (viz schéma). Připojte každý sběrnicový pás k příslušnému I/O pinu na BS2 (P0-P4). Zkontrolujte všechna připojení, abyste se ujistili, že odpovídají schématu. Oslavte. UPOZORNĚNÍ: Na detailním záběru uvidíte, že to nevypadá, že bych postupoval podle kroku 7, protože připojení k druhému I/O pinu je na anodě lichých LED diod. Pamatujte, že katoda sudých LED diod je připojena k anodě lichých LED diod, takže připojení je v obou směrech stejné. Pokud vás tato poznámka mate, jednoduše ji ignorujte.

Krok 4: Základy programování

Aby charlieplexing fungoval, zapnete vždy jen jednu LED. Aby to fungovalo s naším BS2, potřebujeme dva základní kroky: 1. Nastavte výstupní režimy pro piny pomocí příkazu OUTS. 2. Pomocí příkazu DIRS řekněte BS2, které piny mají použít jako výstupy. Funguje to, protože BS2 lze sdělit, které piny se mají pohybovat vysoko a nízko, a bude na to čekat, dokud neurčíte, které piny jsou výstupy. Podívejme se, zda jsou věci správně připojeny jen se snaží blikat LED 1. Když se podíváte na schéma, vidíte, že P0 je připojen ke katodě (-) LED 1 a P1 je připojen k anodě téže LED. To znamená, že chceme řídit P0 low a P1 high. To lze provést takto: „OUTS = % 11110“, které řídí P4-P1 vysoko a P0 nízko. (% Znamená, že má následovat binární číslo. Nejnižší binární číslice je vždy vpravo. 0 = LOW, 1 = HIGH) BS2 ukládá tyto informace, ale nebude s nimi jednat, dokud nedeklarujeme, které piny jsou výstupy. Tento krok je klíčový, protože výstupem by měly být pouze dva piny současně. Zbytek by měly být vstupy, které nastaví tyto piny na režim vysoké impedance, takže nebudou potopit žádný proud. Potřebujeme řídit P0 a P1, takže je nastavíme na výstupy a zbytek na vstupy takto: „DIRS = % 00011“. (% Znamená, že bude následovat binární číslo. Nejnižší binární číslice je vždy vpravo. 0 = VSTUP, 1 = VÝSTUP) Pojďme to dát dohromady do nějakého užitečného kódu: '{$ STAMP BS2e}' {$ PBASIC 2.5} DO OUTS = %11110 'Drive P0 low and P1-P4 high DIRS = %00011' Set P0- P1 jako výstupy a P2-P4 jako vstupy PAUSE 250 'Pauza pro LED svítí DIRS = 0' Nastavte všechny piny na Input. Tím se vypne LED PAUSE 250 'Pauza, aby LED zůstala zhasnutá

Krok 5: Vývojový cyklus

Nyní, když jsme viděli práci s jedním kolíkem, abychom se ujistili, že všechny fungují. 20led_Zig-Zag.bse Tento připojený kód by měl rozsvítit každou z 20 LED diod klikatým vzorem. Všimněte si, že poté, co se každý pin rozsvítí, použiji "DIRS = 0", abych všechny piny přeměnil zpět na vstupy. Pokud změníte VÝSTUPY, aniž byste vypnuli výstupní piny, může dojít k „stínování“, kde může mezi cykly blikat kontrolka, která by neměla svítit. Pokud změníte proměnnou W1 na začátku tohoto kódu na „W1 = 1“mezi jednotlivými bliknutími LED bude pouze 1 milisekundová pauza. To způsobí efekt perzistence vidění (POV), který vypadá, že všechny LED diody svítí. To má za následek ztlumení LED diod, ale je to podstata toho, jak budeme zobrazovat znaky na této matici. 20led_Interpreter_Proto.bse V tomto bodě jsem se rozhodl, že musím vyvinout nějaký typ kódu tlumočníka, abych změnil bláznivé kombinace potřebné k osvětlení LED diody do použitelného vzoru. Tento soubor je můj první pokus. Uvidíte, že v dolní části souboru jsou znaky uloženy ve čtyřech řádcích 5místného binárního souboru. Každý řádek je načten, analyzován a podprogram je volán pokaždé, když je třeba rozsvítit LED. Tento kód funguje, cykluje číslicemi 1-0. Pokud se ho pokusíte spustit, všimněte si, že je sužován velmi pomalou obnovovací frekvencí, což způsobuje, že postavy blikají téměř příliš pomalu, než aby byly rozpoznány. Tento kód je špatný z mnoha důvodů. Za prvé, pět číslic binárního souboru zabírá v EEPROM tolik místa jako 8 číslic binárního souboru, protože všechny informace jsou uloženy ve skupinách po čtyřech bitech. Za druhé, SELECT CASE použitý k rozhodnutí, který pin je třeba rozsvítit, vyžaduje 20 případů. BS2 je omezen na 16 případů na operaci SELECT. To znamená, že jsem musel toto omezení překonat příkazem IF-THEN-ELSE. Musí existovat lepší způsob. Po několika hodinách škrábání hlavy jsem to objevil.

Krok 6: Lepší tlumočník

Každá řada naší matice se skládá ze 4 LED diod, každá může být zapnutá nebo vypnutá. BS2 ukládá informace do své EEPROM ve skupinách po čtyřech bitech. Tato korelace by nám to měla výrazně usnadnit. Kromě toho čtyři bity odpovídají desetinným číslům 0-15 pro celkem 16 možností. Tím je nebo VYBRAT PŘÍPAD mnohem jednodušší. Zde je číslice 7 uložená v EEPROM: „7 %1111, %1001, %0010, %0100, %0100, každý řádek má desetinnou ekvivalenci 0-15, takže čteme řádek z paměti a přeneste jej přímo do funkce SELECT CASE. To znamená, že pro tlumočníka je klíčem lidská čitelná binární matice použitá k vytvoření každého znaku (1 = LED svítí, 0 = LED nesvítí). nastavit DIRS a OUTS jako proměnné. Nejprve jsem v každém z pěti řádků znaku přečetl proměnné ROW1-ROW5. Hlavní program poté vyvolá podprogram, aby zobrazil znak. Tento podprogram vezme první řádek a přiřadí čtyři možné kombinace OUTS k proměnné outp1-outp4 a dvě možné kombinace DIRS k direc1 & direc2. LED diody blikají, čítač řádků se zvýší a stejný proces proběhne pro všechny další čtyři řádky. To je mnohem rychlejší než u prvního tlumočnického programu. Jak již bylo řečeno, stále existuje znatelné blikání. Podívejte se na video, díky fotoaparátu bude blikání vypadat mnohem hůře, ale vy máte představu. Přenesení tohoto konceptu na mnohem rychlejší čip, jako je picMicro nebo AVR čip, by umožnilo zobrazení těchto znaků bez znatelného blikání.

Krok 7: Kam jít odtud

Nemám cnc mlýn ani leptací potřeby na výrobu desek s obvody, takže nebudu zapojovat tento projekt. Pokud máte mlýn a máte zájem o spolupráci, abyste se odtud mohli posunout dál, pošlete mi zprávu. Rád zaplatím za materiál a dopravu ještě šťastnější, abych ukázal něco hotového výrobku pro tento projekt.

Další možnosti: 1. Portujte na jiný čip. Tuto maticovou konstrukci lze použít s jakýmkoli čipem, který má k dispozici 5 I/O pinů, které jsou schopné třístavového zapojení (piny, které mohou být vysoké, nízké nebo vstupní (vysoká impedance)). 2. Pomocí rychlejšího čipu (třeba AVR nebo picMicro) můžete zvětšit měřítko. S 20pinovým čipem můžete použít 14 pinů k charlieplexu displeje 8x22 a zbývající piny použít k přijímání sériových příkazů z počítače nebo jiného ovladače. Použijte další tři 20pinové čipy a můžete mít rolovací displej 8x88 pro celkem 11 znaků najednou (samozřejmě v závislosti na šířce každého znaku). Hodně štěstí, užij si to!

Doporučuje: