Kazalo:

Uporaba LED matrične pike z registrom Arduino in Shift: 5 korakov
Uporaba LED matrične pike z registrom Arduino in Shift: 5 korakov

Video: Uporaba LED matrične pike z registrom Arduino in Shift: 5 korakov

Video: Uporaba LED matrične pike z registrom Arduino in Shift: 5 korakov
Video: Высокая плотность 2022 2024, November
Anonim
Uporaba matrične lučke z matriko z registrom Arduino in Shift
Uporaba matrične lučke z matriko z registrom Arduino in Shift
Uporaba matrične lučke z matriko z registrom Arduino in Shift
Uporaba matrične lučke z matriko z registrom Arduino in Shift
Uporaba matrične lučke z matriko z registrom Arduino in Shift
Uporaba matrične lučke z matriko z registrom Arduino in Shift

Siemens DLO7135 Dot matrix LED je en neverjeten kos optoelektronike. Zaračuna se kot 5 x 7 matrični inteligentni zaslon (r) s pomnilnikom/dekoderjem/gonilnikom. Skupaj s tem pomnilnikom ima 96-mestni zaslon ASCII z velikimi in malimi črkami, vgrajen generator znakov in multiplekser, štiri stopnje intenzivnosti svetlobe in vse deluje na 5 V. To je veliko, da lahko živite do, in pri 16 USD na pop, bi vsekakor moral. Ko sem pol dneva preživel v svoji najljubši lokalni trgovini z elektroniko, sem našel poln zabojnik za 1,50 USD na kos. Iz trgovine sem odšel z več. Ta navodila vam bodo pokazala, kako se povežete s temi matričnimi LED in prikaznimi znaki z uporabo Arduina na osnovi AVR. Če ste prebrali katerega od mojih prejšnjih vodnikov, se vam bo morda zdelo, da sem pogosto za najbolj preudarno rešitev in da se ne bi zmotili, tudi če občasno ne dosežem cilja. Zato bom naredil še en korak v tem navodilu in vam pokazal, kako lahko zmanjšate število V/I vrat, ki so potrebna za pogon teh velikih, svetlečih matričnih LED.

Korak: Pridobite blago…

Pridobite blago…
Pridobite blago…

Za ta kratek projekt boste potrebovali:

  • mikrokrmilnik na osnovi AVR, kot je Arduino ali kaj podobnega. Ta navodila bi verjetno lahko prilagodili izbranemu MCU -ju.
  • matrično LED -luč DLO7135 ali drugo v isti družini
  • 8-bitni premični register, kot so 74LS164, 74C299 ali 74HC594
  • mizo
  • priključna žica, rezalniki žice itd.

Spajkalnik ni potreben, čeprav ga bom uporabil kasneje; lahko brez tega.

Korak: Neposredno se povežite z LED zaslonom

Neposredno povežite z LED zaslonom
Neposredno povežite z LED zaslonom
Neposredno povežite z LED zaslonom
Neposredno povežite z LED zaslonom
Neposredno povežite z LED zaslonom
Neposredno povežite z LED zaslonom

Postavite svoj majhen seznam delov in vzemite LED. Postavite ga na ploščo, ki je nekoliko centrirana, ob srednjem utoru. Prvi del povezovanja poteka na levi strani LED. Pin #1 se nahaja zgoraj levo, kar označuje trikotnik/puščica. Za branje ali povezovanje LED diode sem na sliko postavil pin funkcije.

Leva stran

Pozitivno in negativno V zgornjem levem kotu priključite Vcc na 5V. Morda bi bilo dobro, če plošče ne bi napajali, dokler ne dokončate celotne leve strani; LED -lučka je lahko svetla, če poskušate videti majhne luknje, da jih vtaknete v žice. Spodnji levi GND priključite na ozemljitev. Lamp Test, Chip Enable and Write 2. in 3. z vrha na levi sta Lamp Test in Chip Enable. Oba sta negativna logika, kar pomeni, da sta omogočeni, ko sta na logični 0 namesto 1. Moja spodnja slika bi morala imeti črtice nad sabo, vendar za nobenega od njih tega nisem opozoril. Če je vklopljen LT, vsaka pika v matrični matici zasveti pri 1/7 svetlosti. To je bolj preizkus slikovnih pik, vendar je zanimivost pri pin -ju LT ta, da ne prepiše nobenega znaka, ki je v pomnilniku, zato, če imate več teh nanizanih skupaj (imajo 20 -metrsko razdaljo gledanja), strobirajte LT lahko izgleda kot kazalec. Če želite zagotoviti, da je onemogočen, ga priključite na 5 V. Zatiči CE in WR imajo tudi negativno logiko in jih je treba omogočiti za pisanje te pametne naprave. S temi zatiči bi lahko upravljali z rezervnimi V/I vrati na vašem mikrokrmilniku, vendar se tukaj ne bomo trudili. Priključite jih na ozemljitev, da ostanejo omogočeni. Ravni svetlosti Obstajajo štiri programabilne stopnje svetlosti za družino LED LED DLO:

  • Prazno
  • 1/7 Svetlost
  • 1/2 svetlost
  • Popolna svetlost

BL1 HIGH in BL0 LOW je 1/2 svetlosti. Oba HIGH je polna svetlost. Nastavite na karkoli želite. Še enkrat, če imate na voljo rezervna vrata za vhod/izhod in so za vas dovolj pomembni, lahko to nadzoruje tudi vaš Arduino. To zavije levo stran. Če napajate ploščo, bi morala zasvetiti LED. Če ste radovedni, se poigrajte s kontrolami svetlosti in preskusom svetilke.

Desna stran

Desna stran je v celoti sestavljena iz podatkovnih vrat. Spodnji desni, pin 8 ali D0 natančneje, predstavlja najmanj pomemben bit v 7-bitnem znaku. Zgoraj desno, pin 14 ali D6 predstavlja najpomembnejši bit. To vam omogoča, da veste, v kakšnem vrstnem redu premešate svoje bite pri zapisovanju na LED. Ko priključite vrata za vnos podatkov, poiščite sedem praznih digitalnih V/I vrat na vašem Arduinu ali AVR in jih povežite. Verjetno se boste želeli spomniti, katera vrata za izhod podatkov na vašem AVR -ju gredo v katera vrata za vnos podatkov na LED -ju. Zdaj ste pripravljeni potisniti nekaj podatkov na to pametno LED. Ali že trepetate od navdušenja? Vem, da sem…

3. korak: Določitev prikazanega znaka

Določanje prikazanega znaka
Določanje prikazanega znaka

Niz znakov, ki se uporablja na tej CMOS LED, je vaš običajni ASCII, ki se začne pri 0x20 (decimalno mesto 32; presledek) in konča pri 0x7F (decimalno število 127; brisanje, čeprav je na LED prikazano kot kazalka). Torej, če ima LED zaslon znak, ni nič drugega kot potiskanje logične 1 ali 0 na izhodnih zatičih podatkov, ki jim običajno sledi impulz WR, vendar sem to za to vajo zapisal. se spomniš, kateri zatiči gredo v katera vrata, kajne? Izbral sem PD [2..7] in PB0 (digitalni zatiči od 2 do 8 v govoru Arduino). Običajno ne predlagam uporabe PD [0..1], ker ga namenjam svoji serijski komunikaciji nazaj v okvir FreeBSD, Arduino in sod. preslikajte te nožice v njihov komunikacijski kanal FTDI USB, in čeprav "oni" REKAJO, da bosta 0 in 1 delovala, če ne inicializirate serijske komunikacije, teh pinov nikoli nisem mogel uporabiti kot običajen digitalni V/I. Pravzaprav sem dva dni poskušal odpraviti težavo, ko sem poskušal uporabiti PD0 in PD1 in ugotovil, da sta vedno VISOKA. * skomignilo z rameni* Verjetno bi bilo dobro imeti nekakšen zunanji vhod, na primer tipkovnico, stikalo za potisno kolo ali paličico ali pa morda celo vnos s terminala (moj ArduinoTerm še ni pripravljen na prime time …). Izbira je vaša. Zaenkrat bom samo ponazoril, kako pridobiti kodo, da na LED pripelje želeni znak. Za prenos je na voljo zip datoteka, vključno z izvorno kodo in datoteko Makefile, na voljo pa je tudi kratek filmček, ki prikazuje LED, ki natisne svoj nabor znakov. Oprostite za slab videz videoposnetka. Spodnja koda natisne niz "Dobrodošli v mojem Instructable!" nato kroži skozi celoten nabor znakov, ki ga podpira LED.

DDRD = 0xFF; // IzhodDDRB = (1 << DDB0); char msg = "Dobrodošli v mojem Instructable!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _kasnenje_ms (150); } za (i = 0x20; i <0x80; i ++) {Print2LED (i); _kasnenje_ms (150); } Print2LED (& apos*& apos);}Za izhod vrat skrbi funkcija Print2Led ()

voidPrint2LED (uint8_t i) {PORTD = (i << 2); če (i & 0b01000000) PORTB = (1 <

Koda in Makefile sta vključeni v spodaj zip datoteko.

4. korak: Ohranite V/I porte s premičnim registrom

Ohranite V/I porte s premičnim registrom
Ohranite V/I porte s premičnim registrom
Ohranite V/I porte s premičnim registrom
Ohranite V/I porte s premičnim registrom
Ohranite V/I porte s premičnim registrom
Ohranite V/I porte s premičnim registrom

Zdaj lahko naš mikrokrmilnik pošlje podatke na matrično LED, vendar uporablja osem I/O vrat. To izključuje uporabo ATtinyja v 8-polnem DIP paketu in tudi pri novejšem Arduinu, ki ima ATmega328p, je veliko I/O vrat za eno LED. Temu se lahko izognemo z uporabo IC, imenovanega shift shift register. Trenutek za "prestavljanje" prestave … Premični register je najbolje razumeti z razmišljanjem o dveh besedah, ki sestavljata njegovo ime: "shift" in "register". Beseda premik se nanaša na to, kako se podatki premikajo skozi register. Tukaj (tako kot v našem Arduinu in na splošno z mikrokrmilniki) je register lokacija, ki hrani podatke. To naredi z uvedbo linearne verige digitalnih logičnih vezij, imenovanih "flip flops", ki ima dve stabilni stanji, ki ju lahko predstavimo z 1 ali 0. Torej, če sestavite osem japonk, imate napravo, ki lahko drži in predstavljajo 8-bitni bajt. Ker obstaja več vrst japonk in več različic na temo registrov premikov (pomisli navzgor/navzdol in Johnsonovi števci), obstaja tudi več vrst registrov premikov glede na to, kako podatki je zaklenjen v register in kako se ti podatki iznesejo. Na podlagi tega upoštevajte naslednje vrste registrov premikov:

  • Serijski vhod / vzporedni izhod (SIPO)
  • Serijski vhod / serijski izhod (SISO)
  • Vzporedni vhod/ serijski izhod (PISO)
  • Vzporedni vhod / vzporedni izhod (PIPO)

Dva pomembna sta SIPO in PISO. Registri SIPO zajemajo podatke zaporedno, to je en bit za drugim, tako da predhodni vhodni bit premaknejo na naslednjo japonko in podatke pošljejo na vse vhode hkrati. Tako je lep serijski pretvornik. Nasprotno, registri premikov PISO imajo vzporedne vhode, zato se vsi biti vnesejo naenkrat, vendar se oddajajo eden za drugim. In uganili ste, da je to lep vzporednik s serijskim pretvornikom. Premični register, ki ga želimo uporabiti za zmanjšanje števila vhodno -izhodnih zatičev, bi nam omogočil, da vzamemo tistih 8 vhodno -izhodnih zatičev, ki smo jih uporabljali prej, in jih zmanjšamo na enega ali morda le nekaj, glede na to, da bomo morda morali nadzorovati način vnosa koščke. Zato je premični register, ki ga bomo uporabili, serijski vhod / vzporedni izhod. Povežite premični register med LED in Arduino. Uporaba premičnega registra je enostavna. Najtežji del je le vizualizacija izhodnih zatičev podatkov in kako bodo binarne številke končale v IC in kako se bodo na koncu prikazale na LED. Vzemite si trenutek, da to načrtujete. 1. Priključite 5V na zatič 14 (zgoraj desno) in zataknite zatič 7 (spodaj levo) navzdol do tal. Premični register ima dva serijska vhoda, vendar bomo uporabljali samo enega, zato priključite drugi pin na 5V3. Ne bomo uporabljali čistega zatiča (uporablja se za izničevanje vseh izhodov), zato ga pustite plavajočega ali ga napnite na 5V4. Priključite eno digitalno vhodno / izhodno vrata, da pritrdite eno od registra premikov. To je zaporedni vhodni pin. Priključite ena digitalna vhodno -izhodna vrata na pin 8 (spodaj desno). To je ura 6. Povežite svoje podatkovne linije od Q0 do Q6. Uporabljamo le 7 bitov, ker niz znakov ASCII uporablja le sedem bitov. Za oddajanje serijskih podatkov sem uporabil PD2, za signal ure pa PD3. Za podatkovne zatiče sem priključil Q0 na D6 na LED in nadaljeval tako (Q1 do D5, Q2 do D4 itd.). Ker podatke pošiljamo zaporedno, bomo morali preučiti binarno predstavitev vsakega znaka, ki ga želimo poslati, pogledati enote in 0 ter oddati vsak bit v zaporedni vrstici. Vključil sem drugo različico vira dotmatrixled.c skupaj s spodnjo datoteko Makefile. Premika se po nizu znakov in prikazuje vse parne znake (če je čudno, da je črka lahko liha ali liha, za trenutek pomislite na binarno predstavitev). Poskusite ugotoviti, kako naj se prikaže skozi prikaz vseh čudnih znakov. Nadalje lahko eksperimentirate s povezavami med registrom premikov, matrično LED diodo in vašim Arduinom. Med LED in registrom obstaja več kontrolnih funkcij, ki vam omogočajo, da natančno nastavite nadzor nad tem, kdaj so prikazani podatki.

5. korak: Povzetek

Povzetek
Povzetek
Povzetek
Povzetek

V tem navodilu sem predstavil matrično LED -luč DLO7135 in kako to narediti. Nadalje sem razpravljal o tem, kako zmanjšati število zahtevanih V/I vrat z osmih na samo dva z uporabo registra premika. Matrično LED -luč DLO7135 lahko narišete skupaj, da naredite zelo privlačne in zanimive označbe. Upam, da ste se zabavali ob branju tega navodila! Če menite, da bi lahko naredil kakšne izboljšave ali predloge, ki bi jih radi podali v zvezi s tem ali katerim koli mojim problemom, sem vesel, da jih slišim! Vesel AVR!

Priporočena: