Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Siemens DLO7135 matrična LED dioda jedan je nevjerojatan dio optoelektronike. Naplaćuje se kao 5x7 matrični inteligentni zaslon (r) s memorijom/dekoderom/upravljačkim programom. Uz tu memoriju, ima ASCII zaslon od 96 znakova s velikim i malim slovima, ugrađeni generator znakova i multiplekser, četiri razine intenziteta svjetla, a sve radi na 5 V. To je puno za živjeti, a po cijeni od 16 USD, definitivno bi trebao. Dok sam pola dana proveo u svojoj omiljenoj lokalnoj trgovini elektronike, našao sam kantu punu za 1,50 USD po komadu. Iz trgovine sam izašao s nekoliko. Ova instrukcija će vam pokazati kako se spojiti na ove matrične LED diode i prikazati znakove pomoću AVR-ovog Arduina. Ako ste pročitali neki od mojih prethodnih vodiča, možda ćete shvatiti da se često zalažem za najosjetljivije rješenje i ne biste pogriješili, čak i ako s vremena na vrijeme ne uspijem postići cilj. Stoga ću također napraviti još jedan korak u ovom uputstvu i pokazat ću vam kako možete smanjiti broj I/O portova potrebnih za pogon ovih velikih LED matrica s honkin 'dot matrix matricama.
Korak 1: Nabavite robu…
Za ovaj kratki mali projekt trebat će vam:
- mikrokontroler temeljen na AVR-u poput Arduina ili bilo kojeg sličnog. Ove bi se upute vjerojatno mogle prilagoditi vašem MCU -u po izboru.
- matričnu LED diodu DLO7135 ili drugu u istoj obitelji
- 8-bitni registar pomaka poput 74LS164, 74C299 ili 74HC594
- krušna ploča
- priključna žica, rezači žice itd.
Lemilica nije potrebna, iako ću je kasnije koristiti; možeš proći i bez toga.
Korak 2: Izravno se spojite na LED zaslon
Izložite svoj mali popis dijelova i zgrabite LED diodu. Stavite ga na ploču s pomakom u središte, prelazeći utor središnje linije. Prvi dio povezivanja odvija se s lijeve strane LED diode. Pin #1 nalazi se u gornjem lijevom kutu kako je označeno trokutom/strelicom. Stavio sam pin funkcije na sliku za vašu referencu dok čitate ili povezujete LED.
Lijeva strana
Pozitivno i negativno Počevši od gore lijevo, spojite Vcc na 5V. Možda je dobra ideja da ploču ne napajate dok ne dovršite cijelu lijevu stranu; LED dioda može biti svijetla ako pokušavate vidjeti male rupe za probijanje žica. Spojite donji lijevi GND na masu. Lamp Test, Chip Enable and Write 2. i 3. odozgo s lijeve strane su Lamp Test i Chip Enable. Oboje su negativne logike, što znači da su omogućeni kada su na logičkoj 0 umjesto 1. Moja slika ispod trebala bi imati trake iznad sebe, ali to nisam naznačio ni za jednu od njih. LT pin kad je omogućen svijetli svaku točku u matrici s 1/7 svjetline. To je više test piksela, ali zanimljivost u vezi s LT pinom je ta što ne prepisuje nijedan znak u memoriji, pa ako imate nekoliko njih nanizanih zajedno (imaju udaljenost gledanja od 20 stopa), strobovanje LT može učiniti da izgleda poput kursora. Kako biste bili sigurni da je onemogućen, spojite ga na 5 V. CE i WR pinovi su također negativna logika te ih je potrebno omogućiti za pisanje na ovaj pametni uređaj. Mogli biste mikro upravljati ovim pinovima s rezervnim I/O priključcima na vašem mikrokontroleru, ali ovdje se nećemo truditi. Samo ih spojite na uzemljenje kako biste ih omogućili. Razine svjetline Postoje četiri programabilne razine svjetline na DLO obitelji LED dioda:
- Prazan
- 1/7 Svjetlina
- 1/2 Svjetlina
- Puna svjetlina
BL1 HIGH i BL0 LOW je 1/2 svjetline. Obje HIGH su pune svjetline. Postavite ga na što god želite. Opet, ako imate slobodnih I/O portova i to vam je dovoljno važno, to također može kontrolirati vaš Arduino. To završava lijevu stranu. Ako napajate ploču, trebali biste vidjeti da LED svijetli. Igrajte se s kontrolama svjetline i testom lampe da biste se s njom upoznali, ako vas zanima.
Desna strana
Desna strana sastoji se u potpunosti od podatkovnih portova. Dolje desno, pin 8 ili D0 da budemo precizni, predstavlja najmanje bitan bit u 7-bitnom znaku. Gore desno, pin 14 ili D6 predstavlja Najznačajniji bit. To vam omogućuje da znate kojim redoslijedom miješate svoje bitove prilikom pisanja na LED. Kad povežete priključke za unos podataka, pronađite sedam praznih digitalnih I/O portova na svom Arduinu ili AVR -u i povežite ih. Vjerojatno ćete se htjeti sjetiti koji izlaz za izlaz podataka na vašem AVR -u ide na koji ulaz za ulaz podataka na LED -u. Sada ste spremni ubaciti neke podatke na tu pametnu LED. Drhtite li već od uzbuđenja? Znam da jesam…
Korak 3: Određivanje znaka za prikaz
Skup znakova koji se koristi na ovoj CMOS LED lampici je vaš početni ASCII koji počinje od 0x20 (decimalni broj 32; razmak) i završava na 0x7F (decimalni broj 127; brisanje, iako je prikazano na LED-u kao grafički pokazivač). Dakle, imati znak na LED zaslonu ne znači ništa drugo nego guranje logičke 1 ili 0 na vašim izlaznim pinovima podataka, obično praćeno impulsom WR, ali to sam za ovu vježbu predočio. Dakle, zapisali ste ili zapamtio koje iglice idu do kojih portova, zar ne? Odabrao sam PD [2..7] i PB0 (digitalni pinovi od 2 do 8 u govoru na Arduinu). Obično ne predlažem korištenje PD [0..1] jer ga posvećujem svojoj serijskoj komunikaciji natrag na FreeBSD okvir, a Arduino i sur. preslikajte te pinove na njihov FTDI USB komunikacijski kanal, i iako "oni" KAŽU, pinovi 0 i 1 će raditi ako ne pokrenete serijsku komunikaciju, nikada nisam mogao koristiti te pinove kao normalni digitalni I/O. Zapravo, proveo sam dva dana pokušavajući otkloniti problem kada sam pokušao koristiti PD0 i PD1 i otkrio da su uvijek VISOKI. * slijeganje ramenima* Vjerojatno bi bilo dobro imati neku vrstu vanjskog ulaza, poput možda tipkovnice, prekidača ili prekidača ili možda čak i unosa s terminala (moj ArduinoTerm još nije spreman za udarno vrijeme …). Tvoj izbor. Zasad ću samo ilustrirati kako doći do koda kako bi željeni znak došao na LED diodu. Postoji zip datoteka za preuzimanje uključujući izvorni kod i Makefile, a tu je i kratki film koji prikazuje kako LED ispisuje svoj skup znakova. Oprostite na lošoj kvaliteti videozapisa. Donji kôd ispisuje niz "Dobrodošli u moj Instructable!" zatim se kreće kroz cijeli skup znakova koje LED podržava.
DDRD = 0xFF; // OutputDDRB = (1 << DDB0); char msg = "Dobro došli u moj Instructable!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _odgoda_ms (150); } za (i = 0x20; i <0x80; i ++) {Print2LED (i); _odgoda_ms (150); } Print2LED (& apos*& apos);}O izlazu porta brine se funkcija Print2Led ()
voidPrint2LED (uint8_t i) {PORTD = (i << 2); ako je (i & 0b01000000) PORTB = (1 <
Kôd i Makefile nalaze se u donjoj zip datoteci.
Korak 4: Konzervirajte I/O portove s pomakom registra
Dakle, sada naš mikrokontroler može slati podatke na matričnu LED, ali koristi osam I/O portova. To isključuje korištenje ATtinyja u 8-pinskom DIP paketu, pa čak i s novijim Arduinom koji ima ATmega328p, to ima puno I/O portova za jednu LED. To možemo zaobići, međutim, pomoću IC -a koji se naziva registar pomaka. Trenutak za "prebacivanje" stupnjeva prijenosa … Registar pomaka najbolje se može razumjeti razmišljanjem o dvije riječi koje čine njegov naziv: "shift" i "register". Riječ pomak odnosi se na to kako se podaci kreću kroz registar. Ovdje (kao u našim Arduino i općenito mikrokontrolerima) registar je mjesto koje sadrži podatke. To se postiže implementacijom linearnog lanca digitalnih logičkih krugova pod nazivom "japanke" koji ima dva stabilna stanja koja se mogu predstaviti s 1 ili 0. Dakle, sastavljanjem osam japanki imate uređaj koji može držati i predstavlja 8-bitni bajt. Kao što postoji nekoliko vrsta japanki, tako i nekoliko varijacija na temu registara pomaka (brojači gore/dolje i Johnsonovi brojači), postoji i nekoliko vrsta registara pomaka na temelju toga kako se podaci je zaključan u registar i kako se ti podaci ispisuju. Na temelju toga razmotrite sljedeće vrste registara pomaka:
- Serijski ulaz / paralelni izlaz (SIPO)
- Serijski ulaz / serijski izlaz (SISO)
- Paralelni ulaz/ serijski izlaz (PISO)
- Paralelni ulaz / paralelni izlaz (PIPO)
Dva značajna su SIPO i PISO. SIPO registri uzimaju podatke serijski, to jest jedan po jedan, prebacujući prethodno ulazni bit na sljedeći japanku i šalju podatke na sve ulaze odjednom. Ovo čini lijep serijski / paralelni pretvarač. PISO registri pomaka, obrnuto, imaju paralelne ulaze, pa se svi bitovi unose odjednom, ali se izlažu jedan po jedan. Pogađate, ovo čini lijepu paralelnu sa serijskim pretvaračem. Registar pomaka koji želimo koristiti za smanjenje broja I/O pinova omogućio bi nam da uzmemo onih 8 IO pinova koje smo ranije koristili i svedemo ih na jedan, ili možda samo par, s obzirom na to da ćemo možda morati kontrolirati način unosa bitovi. Stoga je registar pomaka koji ćemo koristiti serijski ulaz / paralelni izlaz. Povežite registar pomaka između LED -a i Arduina Korištenje registra pomaka je jednostavno. Najteži dio je samo vizualizirati izlazne pinove podataka i kako će binarne znamenke završiti u IC -u te kako će se na kraju pojaviti na LED -u. Odvojite trenutak da to isplanirate. 1. Priključite 5V na pin 14 (gore desno) i iglu 7 (dolje lijevo) spustite na zemlju. Registar pomaka ima dva serijska ulaza, ali koristit ćemo samo jedan, pa spojite pin dva na 5V3. Nećemo koristiti čisti pin (koristi se za poništavanje svih izlaza) pa ga ostavite plutajućim ili ga napadnite na 5V4. Spojite jedan digitalni IO port na pin jednog iz registra pomaka. Ovo je pin za serijski ulaz.5. Spojite jedan digitalni IO port na pin 8 (dolje desno). Ovo je pin sata.6. Povežite podatkovne linije od Q0 do Q6. Koristimo samo 7 bitova jer ASCII skup znakova koristi samo sedam bitova. Koristio sam PD2 za izlaz svojih serijskih podataka i PD3 za signal sata. Za pinove podataka, spojio sam Q0 na D6 na LED diodi i nastavio tako (Q1 do D5, Q2 do D4 itd.). Budući da podatke šaljemo serijski, morat ćemo ispitati binarni prikaz svakog znaka koji želimo poslati, gledajući 1 i 0 i ispisujući svaki bit na serijskoj liniji. Uključio sam drugu verziju izvora dotmatrixled.c zajedno sa Makefileom ispod. Kruži kroz skup znakova i prikazuje sve parne znakove (ako je čudno misliti da bi slovo moglo biti neparno ili parno, razmislite na trenutak o binarnom prikazu). Pokušajte smisliti kako to učiniti ciklusom kroz prikaz svih neparnih znakova. Možete dalje eksperimentirati s vezama između registra pomaka, matrične LED diode i vašeg Arduina. Postoji nekoliko kontrolnih značajki između LED-a i registra koje vam mogu omogućiti fino podešavanje vaše kontrole o tome kada se prikazuju podaci. Dakle …. Prešli smo s potrebe da koristimo osam I/O portova na samo dva!
Korak 5: Sažetak
U ovom uputstvu predstavio sam DLO7135 matričnu LED diodu i kako je osposobiti za rad. Nadalje sam raspravljao o tome kako smanjiti broj potrebnih I/O portova sa osam na samo dva pomoću registra pomaka. Matrična LED svjetla DLO7135 može se spojiti kako bi napravila vrlo privlačne i zanimljive okvire. Nadam se da ste se zabavili čitajući ovo uputstvo! Ako mislite da bih mogao napraviti neka poboljšanja ili prijedloge koje biste htjeli dati o ovoj ili bilo kojoj od mojih problema, drago mi je čuti ih! Sretan AVR!