Dot Matrix LED izmantošana ar Arduino un Shift reģistru: 5 soļi
Dot Matrix LED izmantošana ar Arduino un Shift reģistru: 5 soļi
Anonim

Siemens DLO7135 punktu matricas LED ir viens pārsteidzošs optoelektronikas elements. Tas tiek iekasēts kā 5x7 punktu matricas viedais displejs (r) ar atmiņu/dekodētāju/draiveri. Kopā ar šo atmiņu tai ir 96 rakstzīmju ASCII displeja komplekts ar lielajiem un mazajiem burtiem, iebūvēts rakstzīmju ģenerators un multipleksors, četri gaismas intensitātes līmeņi, un tas viss darbojas ar 5 V., un par 16 ASV dolāriem pop, tam noteikti vajadzētu. Pavadot pusi dienas savā iecienītākajā vietējā elektronikas veikalā, es atradu pilnu atkritumu tvertni par 1,50 USD gabalā. Izgāju no veikala kopā ar vairākiem. Šī pamācība parādīs, kā izveidot savienojumu ar šīm punktmatricas gaismas diodēm un parādīt rakstzīmes, izmantojot AVR balstītu Arduino. Ja esat izlasījis kādu no maniem iepriekšējiem ceļvežiem, jums var rasties priekšstats, ka es bieži atbalstu vispārdomātāko risinājumu, un jūs nekļūdītos, pat ja es laiku pa laikam nesasniegtu mērķi. Tāpēc es arī darīšu vēl vienu soli šajā pamācībā un parādīšu, kā jūs varat samazināt I/O portu skaitu, kas nepieciešams, lai vadītu šīs lielās, godīgās punktmatricas gaismas diodes.

1. darbība: iegādājieties preces…

Šim nelielajam projektam jums būs nepieciešams:

  • mikrokontrolleri, kura pamatā ir AVR, piemēram, Arduino vai jebkurš tam līdzīgs. Šīs instrukcijas, iespējams, varētu pielāgot jūsu izvēlētajam MCU.
  • DLO7135 punktu matricas gaismas diode vai cita tā pati ģimene
  • 8 bitu maiņu reģistrs, piemēram, 74LS164, 74C299 vai 74HC594
  • maizes dēlis
  • savienojuma stieple, stieples griezēji utt.

Lodēšanas gludeklis nav vajadzīgs, lai gan es to izmantoju vēlāk; jūs varat iztikt bez tā.

2. darbība: tieši pievienojiet LED displejam

Izklājiet savu mazo detaļu sarakstu un satveriet LED. Novietojiet to uz maizes dēļa, nedaudz centrējot, izvietojot viduslīnijas gropi. Savienojuma pirmā daļa notiek gaismas diodes kreisajā pusē. Piespraude #1 atrodas augšējā kreisajā stūrī, kā norādīts trīsstūrī/bultiņā. Es ievietoju tapas funkcijas attēlā, lai jūs varētu to izlasīt, lasot vai pievienojot LED.

Kreisā puse

Pozitīvs un negatīvs Sākot augšējā kreisajā stūrī, pievienojiet Vcc 5V. Iespējams, ir laba ideja, ka jūsu dēlis netiek darbināts, kamēr nav pabeigta visa kreisā puse; gaismas diode var būt gaiša, ja mēģināt saskatīt mazus caurumus, kuros iebāzt vadus. Pievienojiet apakšējo kreiso GND zemei. Lampas pārbaude, mikroshēmas iespējošana un rakstīšana 2. un 3. no augšas kreisajā pusē ir Lamp Test and Chip Enable. Abas ir negatīvas loģikas, kas nozīmē, ka tās ir iespējotas, ja tās ir pie loģiskās 0, nevis 1. Manā attēlā zem tām jābūt ar joslām, taču nevienam no tiem es to neatzīmēju. Iespējojot LT tapu, iedegas katrs punkts punktmatricā ar 1/7 spilgtumu. Tas ir vairāk pikseļu tests, taču interesanta lieta par LT tapu ir tā, ka tā nepārraksta nevienu rakstzīmi, kas ir atmiņā, tāpēc jums, ja vairāki no tiem ir savīti kopā (tiem ir 20 pēdu skata attālums), strobing LT var likt izskatīties kā kursoram. Lai pārliecinātos, ka tas ir atspējots, pievienojiet to 5 V spriegumam. CE un WR tapas ir arī negatīvas loģikas un ir jāiespējo, lai uz šo viedierīci varētu rakstīt. Jūs varētu mikrovaldīt šīs tapas ar rezerves I/O portiem savā mikrokontrollerī, taču mēs šeit neuztraucamies. Vienkārši pievienojiet tos zemei, lai tie būtu iespējoti. Spilgtuma līmeņi DLO saimes gaismas diodēm ir četri programmējami spilgtuma līmeņi:

  • Tukšs
  • 1/7 Spilgtums
  • 1/2 Spilgtums
  • Pilns spilgtums

BL1 HIGH un BL0 LOW ir 1/2 spilgtums. Abi HIGH ir pilns spilgtums. Iestatiet to, kas jums patīk. Atkal, ja jums ir rezerves I/O porti un tas jums ir pietiekami svarīgi, to var kontrolēt arī jūsu Arduino. Tas aptver kreiso pusi. Ja jūs pievadāt barošanu pie tāfeles, jums vajadzētu redzēt, kā iedegas gaismas diode. Ja jūs interesē, spēlējiet ar spilgtuma vadības ierīcēm un lampas pārbaudi, lai ar to iepazītos.

Labā puse

Labajā pusē ir pilnībā datu porti. Apakšējā labajā stūrī, precīzāk, 8. tapa vai D0, 7 bitu rakstzīmē ir vismazākais nozīmīgais bits. Augšējā labajā stūrī, tapā 14 vai D6 ir vissvarīgākais bits. Tas ļauj jums zināt, kādā secībā jāmaina biti, rakstot uz LED. Kad esat ievadījis datu ievades portus, atrodiet septiņus tukšus digitālos I/O portus savā Arduino vai AVR un pievienojiet tos. Jūs, iespējams, vēlēsities atcerēties, kurš datu izvades ports jūsu AVR iet uz kuru LED ievades portu. Tagad esat gatavs pārvietot dažus datus uz šo viedo LED. Vai jūs vēl drebējat no uztraukuma? Es zinu, ka esmu…

3. darbība. Parādāmās rakstzīmes norādīšana

Rakstzīmju kopa, kas tiek izmantota šajā CMOS gaismas diodē, ir jūsu parastā ASCII, kas sākas ar 0x20 (decimālskaitlis 32; atstarpe) un beidzas ar 0x7F (decimālskaitlis 127; dzēst, lai gan LED attēlots kā kursora grafiks). Tātad, ja LED displejā tiek parādīta rakstzīme, nekas cits nav nepieciešams, kā nospiest loģiku 1 vai 0 uz jūsu datu izvades tapām, kam parasti seko WR impulss, bet es to saku šim uzdevumam. Tātad, jūs esat pierakstījis vai atcerējos, kādas tapas iet uz kādām ostām, vai ne? Es izvēlējos PD [2..7] un PB0 (digitālās tapas no 2 līdz 8 Arduino runā). Es parasti neiesaku izmantot PD [0..1], jo es to veltu seriālajai komunikācijai atpakaļ uz FreeBSD kastīti un Arduino et al. kartējiet šīs tapas viņu FTDI USB sakaru kanālā, un, lai gan "viņi" SAKA, ka 0 un 1 tapas darbosies, ja neinicializēsit sērijveida sakarus, es nekad neesmu varējis izmantot šīs tapas kā parastu digitālo I/O. Patiesībā es divas dienas mēģināju atkļūdot problēmu, kad mēģināju izmantot PD0 un PD1 un atklāju, ka tās vienmēr ir AUGSTAS. * paraustīt plecus* Droši vien būtu labi, ja būtu kāda ārēja ievade, piemēram, tastatūra, stūres rats vai īkšķa slēdzis, vai varbūt pat ievade no termināļa (mans ArduinoTerm vēl nav gatavs pirmajam laikam). Izvēle ir tava. Pagaidām es tikai ilustrēšu, kā iegūt kodu, lai LED iegūtu vajadzīgo rakstzīmi. Ir lejupielādējams zip fails, ieskaitot avota kodu un Makefile, un ir arī īsa filma, kurā redzams, kā LED izdrukā rakstzīmju kopu. Atvainojiet par videoklipa slikto kvalitāti. Tālāk esošais kods izdrukā virkni "Welcome to my Instructable!" pēc tam cikliski izskata visu rakstzīmju kopu, ko LED atbalsta.

DDRD = 0xFF; // OutputDDRB = (1 << DDB0); char msg = "Laipni lūdzam manā Instructable!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _kavēšanās_ms (150); } par (i = 0x20; i <0x80; i ++) {Print2LED (i); _kavēšanās_ms (150); } Print2LED (& apos*& apos);}Porta izvade tiek rūpēta funkcijā Print2Led ()

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

Kods un Makefile ir iekļauti zemāk esošajā zip failā.

4. darbība. I/O portu saglabāšana ar maiņu reģistru

Tagad mūsu mikrokontrolleris var nosūtīt datus uz punktmatricas LED, bet tas izmanto astoņus I/O portus. Tas izslēdz ATtiny izmantošanu 8 kontaktu DIP paketē un pat ar jaunāku Arduino, kas aprīkots ar ATmega328p, ir daudz I/O portu vienam LED. Tomēr mēs to varam apiet, izmantojot IC, ko sauc par maiņu reģistru. Brīdis, lai "pārslēgtu" pārnesumus … Pārmaiņu reģistru vislabāk var saprast, domājot par diviem vārdiem, kas veido tā nosaukumu: "pārslēgties" un "reģistrēties". Vārds nobīde attiecas uz to, kā dati pārvietojas reģistrā. Šeit (tāpat kā mūsu Arduino un mikrokontrolleri kopumā) reģistrs ir vieta, kur glabājas dati. Tas tiek darīts, ieviešot lineāru digitālo loģisko shēmu ķēdi, ko sauc par "flip flops", kurai ir divi stabili stāvokļi, kurus var attēlot ar 1 vai 0. Tātad, saliekot kopā astoņas flip flops, jums ir ierīce, kas spēj noturēt un pārstāv 8 bitu baitu. Tāpat kā pastāv vairāki flip flopu veidi un vairākas variācijas par maiņu reģistru tēmu (domājiet augšup/lejup skaitītājus un Džonsona skaitītājus), ir arī vairāki maiņu reģistru veidi, pamatojoties uz to, kā dati ir iekļauts reģistrā un kā šie dati tiek izvadīti. Pamatojoties uz to, apsveriet šādus maiņu reģistru veidus:

  • Sērijas ieeja / paralēlā izeja (SIPO)
  • Sērijas ieeja / sērijas izeja (SISO)
  • Paralēlā ieeja/ sērijas izeja (PISO)
  • Paralēlā ieeja / paralēlā izeja (PIPO)

Divas piezīmes ir SIPO un PISO. SIPO reģistri uztver datus sērijveidā, tas ir, vienu bitu pēc otra, iepriekš ievadīto bitu pārceļot uz nākamo flip flop un nosūtot datus uz visām ievadēm vienlaikus. Tas padara jauku sērijas uz paralēlu pārveidotāju. Savukārt PISO nobīdes reģistriem ir paralēlas ieejas, tāpēc visi biti tiek ievadīti uzreiz, bet tiek izvadīti pa vienam. Un jūs uzminējāt, tas rada jauku paralēli sērijas pārveidotājam. Maiņu reģistrs, kuru mēs vēlamies izmantot, lai samazinātu I/O tapu skaitu, ļautu mums paņemt tos 8 iepriekš izmantotos IO tapas un samazināt tos līdz vienam vai varbūt tikai pāris, ņemot vērā, ka mums, iespējams, būs jākontrolē ievades veids biti. Tāpēc maiņu reģistrs, ko mēs izmantosim, ir sērijveida ieeja / paralēlā izeja. Pievienojiet maiņu reģistru starp gaismas diodi un Arduino. Viegli izmantot maiņu reģistru. Visgrūtāk ir tikai vizualizēt datu izvades tapas un to, kā binārie cipari nonāks IC un kā tie galu galā parādīsies LED. Veltiet laiku, lai to izplānotu. 1. Piestipriniet 5V pie tapas 14 (augšējā labajā stūrī) un noņemiet 7. tapu (apakšā pa kreisi) uz leju. Maiņu reģistram ir divas sērijas ieejas, bet mēs izmantosim tikai vienu, tāpēc pievienojiet otro tapu 5V3. Mēs neizmantosim caurspīdīgo tapu (izmanto visu izeju atcelšanai), tāpēc atstājiet to peldošu vai uzbrūkiet līdz 5 V4. Pievienojiet vienu digitālo IO portu, lai piespraustu vienu no maiņu reģistra. Šī ir sērijas ievades tapa.5. Pievienojiet vienu digitālo IO portu 8. tapai (apakšā pa labi). Šī ir pulksteņa tapa.6. Savienojiet datu līnijas no Q0 līdz Q6. Mēs izmantojam tikai 7 bitus, jo ASCII rakstzīmju kopa izmanto tikai septiņus bitus. Es izmantoju PD2 sērijas datu izvadīšanai un PD3 pulksteņa signālam. Datu tapām es LED savienoju Q0 līdz D6 un turpinu šādā veidā (Q1 līdz D5, Q2 līdz D4 utt.). Tā kā mēs nosūtām datus sērijveidā, mums būs jāpārbauda katras nosūtītās rakstzīmes binārais attēlojums, aplūkojot 1 un 0 un izvadot katru bitu sērijas rindā. Es esmu iekļāvis dotmatrixled.c avota otro versiju kopā ar Makefile zemāk. Tas riņķo pa rakstzīmju kopu un parāda visas pāra rakstzīmes (ja ir dīvaini domāt, ka burts varētu būt nepāra vai pāra, kādu brīdi padomājiet par bināro attēlojumu). Mēģiniet izdomāt, kā to mainīt, parādot visas nepāra rakstzīmes. Jūs varat turpināt eksperimentēt ar savienojumiem starp maiņu reģistru, punktu matricas LED un savu Arduino. Starp gaismas diodi un reģistru ir vairākas vadības funkcijas, kas var ļaut jums precīzi noregulēt kontroli, kad tiek parādīti dati. Tātad…. No astoņu I/O portu izmantošanas esam pārgājuši tikai uz diviem!

5. darbība. Kopsavilkums

Šajā pamācībā es esmu iepazīstinājis ar DLO7135 punktu matricas LED un to, kā panākt, lai tas darbotos. Tālāk esmu apspriedis, kā samazināt nepieciešamo I/O portu skaitu no astoņiem līdz tikai diviem, izmantojot maiņu reģistru. Datu matricas gaismas diodi DLO7135 var savietot kopā, lai padarītu ļoti pievilcīgus un interesantus marķierus. Es ceru, ka jums bija jautri lasīt šo pamācību! Ja ir kādi uzlabojumi, kurus jūs domājat, ka es varētu veikt, vai ieteikumi, ko vēlaties sniegt par šo vai kādu no maniem brīnumiem, es priecājos tos dzirdēt! Laimīgu AVR!

Ieteicams: