Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Ang Siemens DLO7135 Dot matrix LED ay isang kamangha-manghang piraso ng optoelectronics. Siningil ito bilang isang 5x7 Dot Matrix Intelligent Display (r) na may Memory / Decoder / Driver. Kasabay ng memorya na iyon, mayroon itong isang set na 96-character na display ng ASCII na may mga character na pang-itaas at mas mababang kaso, isang built-in na character generator at multiplexer, apat na antas ng light intensity, at lahat ito ay tumatakbo sa 5V. Marami itong mabuhay, at sa $ 16 isang pop, tiyak na dapat. Habang ginugugol ang kalahating araw sa aking paboritong lokal na tindahan ng electronics nakahanap ako ng isang basurahan na puno ng mga ito sa halagang $ 1.50 sa isang piraso. Umalis ako sa tindahan ng maraming. Ituturo sa iyo ang itinuturo na ito kung paano kumonekta sa mga dot matrix LED na ito at ipakita ang mga character gamit ang isang AVR-based Arduino. Kung nabasa mo ang alinman sa aking mga nakaraang gabay, maaari kang magkaroon ng ideya na madalas akong pabor sa pinaka parsimonious na solusyon, at hindi ka magiging mali, kahit na nababagsak ko ang layunin paminsan-minsan. Samakatuwid, pupunta rin ako ng isa pang hakbang sa pagtuturo na ito at ipakita sa iyo kung paano mo mabawasan ang bilang ng mga I / O port na kinakailangan upang himukin ang malaki, honkin 'dot matrix LED's na ito.
Hakbang 1: Kunin ang Mga Produkto…
Para sa maikling maliit na proyekto, kakailanganin mo ang:
- isang microRtroller na nakabatay sa AVR tulad ng isang Arduino o alinman sa mga ito. Ang mga tagubiling ito ay maaaring maiakma sa iyong MCU na napili.
- isang DLO7135 dot matrix LED o iba pa sa parehong pamilya
- isang 8-bit shift register tulad ng 74LS164, 74C299, o 74HC594
- isang breadboard
- hookup wire, wire cutter, atbp.
Hindi kinakailangan ang isang bakal na bakal, bagaman gumagamit ako ng isa sa paglaon; malalagpasan mo nang wala ito.
Hakbang 2: Direktang Kumonekta sa LED Display
Ilatag ang iyong maliit na listahan ng mga bahagi at kunin ang LED. Ilagay ito sa breadboard na nakasentro nang medyo, straddling ang midline uka. Ang unang bahagi ng pagkonekta ay nagaganap lahat sa kaliwang bahagi ng LED. Ang Pin # 1 ay matatagpuan sa kaliwang tuktok tulad ng ipinahiwatig ng tatsulok / arrow. Inilagay ko ang mga pagpapaandar ng pin sa isang larawan para sa iyong sanggunian habang binabasa o kinokonekta mo ang iyong LED.
Ang Kaliwang bahagi
Positibo at Negatibo Simula sa kaliwang tuktok, ikonekta ang Vcc sa 5V. Marahil ay isang magandang ideya na huwag paandarin ang iyong board hanggang sa makumpleto mo ang buong kaliwang bahagi; ang LED ay maaaring maging maliwanag kung sinusubukan mong makita ang maliit na butas upang sundutin sa mga wire. Ikonekta ang ibabang kaliwang GND sa lupa. Lamp Test, Chip Enable at Isulat Ang ika-2 at ika-3 mula sa itaas sa kaliwa ay ang Lamp Test at Chip Enable. Parehong ito ay negatibong lohika, nangangahulugang pinagana ang mga ito kapag nasa isang lohikal na 0 sa halip na 1. Ang aking larawan sa ibaba ay dapat na may mga bar sa kanila, ngunit hindi ko na-annotate iyon para sa alinman sa kanila. Ang pin ng LT kapag pinagana ang ilaw ng bawat tuldok sa dot matrix sa 1/7 na ningning. Ito ay higit pa sa isang pagsubok ng pixel, ngunit ang mga kagiliw-giliw na bagay tungkol sa LT pin ay hindi nito sinusoble ang anumang character na nasa memorya, kaya't kung mayroon kang ilan sa mga naka-strung na magkasama (mayroon silang 20ft distansya sa pagtingin), sinisiksik ang LT maaaring gawin itong hitsura ng isang cursor. Upang matiyak na hindi ito pinagana, ikonekta ito sa 5V. Ang mga CE at WR na pin ay negatibong lohika din at kinakailangang paganahin para maisulat ang smart device na ito. Maaari mong micromanage ang mga pin na ito ng mga ekstrang I / O port sa iyong microcontroller, ngunit hindi kami makagambala rito. Ikonekta lamang ang mga ito sa lupa upang mapanatili ang paganahin ang mga ito. Mga Antas ng Liwanag Mayroong apat na nai-program na antas ng liwanag sa pamilya ng DLO ng mga LED:
- Blangko
- 1/7 Liwanag
- 1/2 Liwanag
- Buong Liwanag
Ang BL1 HIGH at BL0 LOW ay 1/2 ningning. Parehong mataas ang buong ningning. Itakda ito sa kahit anong gusto mo. Muli, kung mayroon kang I / O port na ekstrang at sapat na mahalaga sa iyo, maaari mo ring kontrolin ng iyong Arduino. Iyon ang bumabalot sa kaliwang bahagi. Kung magdadala ka ng lakas sa iyong board dapat mong makita ang LED light up. Maglaro kasama ang mga kontrol ng ilaw at ang pagsubok ng lampara upang pamilyar dito, kung nag-usisa ka.
Ang tamang panig
Ang kanang bahagi ay binubuo ng buong data port. Sa kanang bahagi sa ibaba, i-pin ang 8 o D0 upang maging tumpak, kumakatawan sa Least Significant Bit sa 7-bit na character. Sa kanang bahagi sa itaas, pin 14 o D6 ay kumakatawan sa Pinaka Makabuluhang Bit. Ipapaalam nito sa iyo kung anong order ang i-shuffle ang iyong mga piraso kapag sumusulat sa LED. Kapag mayroon kang naka-wire na mga data input port, hanapin ang pitong walang laman na mga digital I / O port sa iyong Arduino o AVR at ikonekta ang mga ito. Marahil ay nais mong tandaan kung anong port ng output ng data sa iyong AVR ang napupunta sa aling port ng input ng data sa LED. Handa ka na upang itulak ang ilang data sa matalinong LED. Nanginginig ka na ba sa kaba? Alam kong ako ay…
Hakbang 3: Pagtukoy ng isang Character na Maipakita
Ang set ng character na ginamit sa CMOS LED na ito ay ang iyong run-of-the-mill na ASCII na nagsisimula sa 0x20 (decimal 32; isang puwang) at nagtatapos sa 0x7F (decimal 127; isang tanggalin, bagaman kinakatawan sa LED bilang isang grapik graphic). Kaya, ang pagkakaroon ng LED na ipakita ang isang character ay hindi nangangailangan ng iba pa kaysa sa pagtulak ng isang lohika na 1 o 0 sa iyong mga pin ng output ng data, na karaniwang sinusundan ng isang pulso ng WR, ngunit binabanggit ko iyon para sa ehersisyo na ito. Kaya, nakasulat ka o Naalala kung anong mga pin ang napupunta sa kung anong mga port, tama? Pinili ko ang PD [2..7] at PB0 (digital pin 2 hanggang 8 sa Arduino-speak). Hindi ko normal na iminumungkahi ang paggamit ng PD [0..1] dahil inilalaan ko ito sa aking serial na komunikasyon pabalik sa isang FreeBSD box, at Arduino's et al. mapa ang mga pin sa kanilang FTDI USB channel ng komunikasyon, at kahit na gagana ang "sila" na SABI ang mga pin na 0 at 1 kung hindi mo ipasimula ang serial na komunikasyon, hindi ko pa nagamit ang mga pin na iyon bilang normal na digital I / O. Sa katunayan, ginugol ko ang dalawang araw na pagsubok sa pag-debug ng isang problema nang sinubukan kong gamitin ang PD0 at PD1 at nalaman na palaging TAAS sila. * shrug * Marahil ay mabuti na magkaroon ng ilang uri ng panlabas na input, tulad ng marahil isang keypad, isang pushwheel o thumbwheel switch, o marahil kahit na pag-input mula sa isang terminal (ang aking ArduinoTerm ay hindi pa handa para sa pangunahing oras pa lamang …). Ang pagpipilian ay sa iyo. Sa ngayon, ilalarawan ko lang kung paano makukuha ang code upang makuha ang character na nais mo sa LED. Mayroong isang zipfile para sa pag-download kasama ang source code at Makefile at mayroon ding isang maikling pelikula na ipinapakita ang pag-print ng LED ang set ng character nito. Paumanhin para sa malungkot na kalidad ng video. Ang code sa ibaba ay naka-print sa string na "Maligayang Pagdating sa aking Makatuturo!" pagkatapos ay pag-ikot sa buong hanay ng character na sinusuportahan ng LED.
DDRD = 0xFF; // OutputDDRB = (1 << DDB0); char msg = "Maligayang pagdating sa aking Instructable!"; uint8_t i; para sa (;;) {para (i = 0; i <27; i ++) {Print2LED (msg ); _delay_ms (150); } para sa (i = 0x20; i <0x80; i ++) {Print2LED (i); _delay_ms (150); } Print2LED (& apos * & apos);}Ang output ng port ay alagaan sa pagpapaandar ng Print2Led ()
voidPrint2LED (uint8_t i) {PORTD = (i << 2); kung (i & 0b01000000) PORTB = (1 <
Ang code at Makefile ay kasama sa isang zip file sa ibaba.
Hakbang 4: Ipanatili ang I / O Mga Port Na May Shift Rehistro
Kaya ngayon ang aming microcontroller ay maaaring magpadala ng data sa dot matrix LED ngunit gumagamit ito ng walong I / O port. Hindi kasama ang paggamit ng isang ATtiny sa isang 8-pin DIP package, at kahit na may isang mas bagong Arduino na nagpapalakas ng isang ATmega328p iyan ay maraming mga I / O port para sa isang LED. Maaari tayong makalibot dito, subalit, sa pamamagitan ng paggamit ng isang IC na tinatawag na isang shift register. Isang sandali upang "ilipat" ang mga gears … Ang isang rehistro ng shift ay maaaring higit na maunawaan sa pamamagitan ng pag-iisip tungkol sa dalawang salita na bumubuo sa pangalan nito: "shift" at "register." Ang salitang paglilipat ay tumutukoy sa kung paano gumagalaw ang data sa pamamagitan ng rehistro. Dito (tulad ng sa aming Arduino at microcontrollers, sa pangkalahatan) ang isang rehistro ay isang lokasyon na humahawak ng data. Ginagawa ito sa pamamagitan ng pagpapatupad ng isang linear na kadena ng mga digital na circuit ng lohika na tinatawag na "flip flops" na mayroong dalawang matatag na estado na maaaring kinatawan ng alinman sa 1 o 0. Kaya, sa pamamagitan ng pagsasama-sama ng walong flip flop mayroon kang isang aparato na may kakayahang hawakan at kumakatawan sa isang 8-bit byte. Tulad ng maraming mga flip flop, at maraming mga pagkakaiba-iba sa isang tema ng mga rehistro ng shift (pag-isipan ng mga counter / pababa at mga counter ng Johnson), mayroon ding maraming uri ng mga rehistro ng paglilipat batay sa kung paano ang data ay nai-lat sa rehistro at kung paano ang data na iyon ay output. Batay dito, isaalang-alang ang mga sumusunod na uri ng mga rehistro sa paglilipat:
- Serial In / Parallel Out (SIPO)
- Serial In / Serial Out (SISO)
- Parallel In / Serial Out (PISO)
- Parallel In / Parallel Out (PIPO)
Dalawa ang tala ay SIPO at PISO. Ang mga rehistro ng SIPO ay nagkukuha ng data nang serally, iyon ay, nang paunti-unti, na inililipat ang dating input bit sa susunod na flip flop at ipinapadala ang data sa lahat ng mga input nang sabay-sabay. Gumagawa ito ng isang magandang serial sa parallel converter. Ang mga rehistro ng shift ng PISO, sa kabaligtaran, ay may mga parallel input, kaya't ang lahat ng mga bit ay naipasok nang sabay-sabay, ngunit ang isa-isang output. At nahulaan mo ito, gumagawa ito para sa isang magandang kahanay sa serial converter. Ang rehistro ng shift na nais naming gamitin upang mabawasan ang bilang ng mga I / O pin ay magpapahintulot sa amin na kunin ang mga 8 IO na pin na ginamit namin kanina at bawasan ito sa isa, o marahil sa isang pares lamang, isinasaalang-alang na maaaring kailanganin nating kontrolin kung paano namin nai-input ang mga piraso Samakatuwid, ang shift register na gagamitin namin ay isang Serial In / Parallel Out. Wire up ang shift register sa pagitan ng LED at Arduino Ang paggamit ng shift register ay madali. Ang pinakamahirap na bahagi ay nakikita lamang ang mga pin ng output output at kung paano magtatapos ang mga binary digit sa IC, at kung paano ito lalabas sa LED. Maglaan ng sandali upang planuhin ito. 1. Ikabit ang 5V sa pin 14 (itaas na kanan) at kumuha ng pin 7 (ibabang kaliwa) pababa sa lupa.2. Ang shift register ay may dalawang mga serial input ngunit isa lang ang gagamitin namin, kaya ikonekta ang pin dalawa hanggang 5V3. Hindi namin gagamitin ang malinaw na pin (ginamit upang i-zero ang lahat ng mga output) kaya iwanan itong lumulutang o atakein ito sa 5V4. Ikonekta ang isang digital port ng IO upang i-pin ang isa sa shift register. Ito ang serial input pin.5. Ikonekta ang isang digital port ng IO sa pin 8 (kanang ibaba). Ito ang orasan pin.6. Ikonekta ang iyong mga linya ng data mula sa Q0 hanggang Q6. Gumagamit lang kami ng 7 bits dahil ang set ng character na ASCII ay gumagamit lamang ng pitong piraso. Gumamit ako ng PD2 para sa paglabas ng aking serial data at PD3 para sa signal ng orasan. Para sa mga pin ng data, kinonekta ko ang Q0 sa D6 sa LED at nagpapatuloy sa ganoong paraan (Q1 hanggang D5, Q2 hanggang D4, atbp). Dahil nagpapadala kami ng data nang serally kailangan naming suriin ang representasyong binary ng bawat character na nais naming ipadala, pagtingin sa 1 at 0, at paglabas ng bawat piraso sa serial line. Isinama ko ang pangalawang bersyon ng mapagkukunang dotmatrixled.c kasama ang isang Makefile sa ibaba. Paikot-ikot ito sa set ng character at ipinapakita ang lahat ng mga character (kung kakaibang pag-iisip na ang isang sulat ay maaaring kakaiba o kahit na, pag-isipan ang tungkol sa binary na representasyon para sa isang sandali). Subukang alamin kung paano ito gawin sa pamamagitan ng pagpapakita ng lahat ng mga kakatwang character. Maaari ka ring mag-eksperimento sa mga koneksyon sa pagitan ng rehistro ng shift, ang dot matrix LED, at ang iyong Arduino. Mayroong maraming mga tampok sa kontrol sa pagitan ng LED at ang rehistro na maaaring payagan kang maayos ang iyong kontrol tungkol sa kung kailan ipinakita ang data. Kaya…. Nawala kami sa pagkakaroon ng paggamit ng walong I / O port upang magamit lamang ang dalawa!
Hakbang 5: Buod
Sa itinuturo na ito, ipinakita ko ang DLO7135 dot matrix LED at kung paano ito gagana. Dagdag ko pa, tinalakay kung paano mabawasan ang bilang ng mga kinakailangang port ng I / O mula walo hanggang dalawa lamang gamit ang isang shift register. Ang DLO7135 dot matrix LED ay maaaring i-strung magkasama upang gumawa ng napaka-nakahahalina ng mata at mga kagiliw-giliw na marquees. Inaasahan kong nasiyahan ka sa pagbabasa ng itinuturo na ito! Kung mayroong anumang mga pagpapabuti na sa palagay mo ay magagawa ko o mga mungkahi na nais mong ibigay sa ito o alinman sa aking mga 'ibles, masaya akong marinig ang mga ito! Maligayang Pag-AVR'ing!