Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Siemens DLO7135 matrična LED dioda jedno je nevjerojatno djelo optoelektronike. Naplaćuje se kao 5x7 matrični inteligentni ekran (r) sa memorijom/dekoderom/upravljačkim programom. Uz tu memoriju, ima ASCII ekran od 96 znakova sa velikim i malim slovima, ugrađeni generator znakova i multiplekser, četiri nivoa intenziteta svjetla, a sve to radi na 5 V. To je puno za živjeti, i sa 16 USD po popitu, definitivno bi trebao. Dok sam pola dana proveo u svojoj omiljenoj lokalnoj prodavnici elektronike, našao sam kantu punu za 1,50 dolara po komadu. Izašao sam iz trgovine s nekoliko. Ova instrukcija će vam pokazati kako se spojiti na ove matrične LED diode i prikazati znakove koristeći AVR-bazirani Arduino. Ako ste pročitali bilo koji od mojih prethodnih vodiča, možda ćete shvatiti da se često zalažem za najumjerljivije rješenje i ne biste pogriješili, čak i ako s vremena na vrijeme ne uspijem postići cilj. Stoga ću učiniti još jedan korak u ovom uputstvu i pokazat ću vam kako možete smanjiti broj I/O portova koji su potrebni za pogon ovih velikih LED diskova sa matricama.
Korak 1: Nabavite robu…
Za ovaj kratki mali projekt trebat će vam:
- mikrokontroler zasnovan na AVR-u poput Arduina ili bilo kojeg sličnog. Ove upute bi se vjerovatno mogle prilagoditi vašem MCU -u po izboru.
- matrična LED dioda DLO7135 ili druga u istoj porodici
- 8-bitni registar pomaka poput 74LS164, 74C299 ili 74HC594
- matična ploča
- priključna žica, rezači žice itd.
Lemilica nije potrebna, iako ću je kasnije koristiti; možeš i bez toga.
Korak 2: Direktno se povežite sa LED ekranom
Izložite svoju malu listu dijelova i zgrabite LED diodu. Stavite ga na ploču s pomakom u središte, prolazeći po utoru srednje linije. Prvi dio povezivanja odvija se sa lijeve strane LED diode. Pin #1 se nalazi 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 ne pokrećete ploču dok ne dovršite cijelu lijevu stranu; LED dioda može biti sjajna 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 bi trebala imati trake iznad sebe, ali to nisam zabilježio ni za jednu od njih. LT pin kada je omogućen osvetljava svaku tačku u matrici tačaka na 1/7 osvetljenosti. To je više test piksela, ali zanimljivost LT pina je da ne prepisuje nijedan znak koji je u memoriji, pa ako imate nekoliko njih nanizanih zajedno (imaju udaljenost gledanja od 20 stopa), strobirajte LT može učiniti da izgleda kao kursor. Da biste bili sigurni da je onemogućen, spojite ga na 5 V. CE i WR pinovi su također negativna logika i potrebno ih je omogućiti za pisanje na ovaj pametni uređaj. Mogli biste mikro upravljati ovim pinovima sa 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. Nivoi svjetline Postoje četiri programabilna nivoa osvjetljenja na DLO porodici LED dioda:
- Prazno
- 1/7 Osvjetljenje
- 1/2 Osvjetljenje
- Puna svjetlina
BL1 HIGH i BL0 LOW je 1/2 svjetline. Oba HIGH su pune svjetline. Postavite ga na šta 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 sa kontrolama svjetline i testom lampe da biste se upoznali s njom, ako ste znatiželjni.
Desna strana
Desna strana sastoji se u potpunosti od portova za podatke. Dolje desno, pin 8 ili D0 da budemo precizni, predstavlja najmanji bit u 7-bitnom znaku. Gore desno, pin 14 ili D6 predstavlja Najznačajniji bit. Ovo vam daje do znanja koji redoslijed miješanja vaših bitova prilikom pisanja na LED. Kad povežete portove 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 diodu. Drhtite li već od uzbuđenja? Znam da sam…
Korak 3: Određivanje karaktera 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 grafika kursora). Dakle, imati znak na LED zaslonu ne znači ništa drugo nego pritiskanje 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 zapamtili koji pinovi idu do kojih portova, zar ne? Odabrao sam PD [2..7] i PB0 (digitalni pinovi 2 do 8 na Arduino-govoru). Obično ne predlažem korištenje PD [0..1] jer ga posvećujem svojoj serijskoj komunikaciji natrag u FreeBSD okvir, a Arduino i sur. preslikajte te pinove na njihov FTDI USB komunikacijski kanal, i iako "oni" SAY pinovi 0 i 1 rade 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. * slegnuti 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 …). Izbor je vaš. Za sada ć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 "Dobro doš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 ); _kašnjenje_ms (150); } za (i = 0x20; i <0x80; i ++) {Print2LED (i); _kašnjenje_ms (150); } Print2LED (& apos*& apos);}O izlazu porta brine se funkcija Print2Led ()
voidPrint2LED (uint8_t i) {PORTD = (i << 2); if (i & 0b01000000) PORTB = (1 <
Kôd i Makefile su uključeni u zip datoteku ispod.
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 kod novijeg Arduina sa 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" brzina … 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šem Arduinu i mikrokontrolerima općenito) registar je lokacija koja sadrži podatke. To se postiže implementacijom linearnog lanca digitalnih logičkih kola zvanih "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 predstavljaju 8-bitni bajt. Kako 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 osnovu toga kako se podaci je zaključan u registar i kako se ti podaci iznose. Na osnovu ovoga 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)
Dve važne 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 smanjili 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 ovo isplanirate. 1. Priključite 5V na pin 14 (gore desno) i iglu 7 (dolje lijevo) spustite na masu. 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 u registru 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 svoje 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 Makefile -om ispod. Prolazi 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 da se prikaže kroz prikazivanje svih čudnih znakova. Možete dalje eksperimentirati s vezama između registra pomaka, matrične LED diode i vašeg Arduina. Postoji nekoliko kontrolnih funkcija između LED-a i registra koje vam mogu omogućiti da fino podesite svoju kontrolu o tome kada se prikazuju podaci. Dakle … prešli smo s toga da moramo koristiti osam I/O portova na samo dva!
Korak 5: Sažetak
U ovom uputstvu predstavio sam DLO7135 matričnu LED lampicu 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 shift shift registra. Matrična LED svjetla DLO7135 može se nanizati zajedno kako bi napravila vrlo privlačne i zanimljive oznake. 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 što ih mogu čuti! Sretan AVR!