LED matrični displej pruža fleksibilnost pri prikazu teksta, grafike i animacija, pa su postali popularno sredstvo za prikazivanje informacija danas. Možemo ih sresti na raznim javnim mestima gde prikazuju razne informacije, benzinskim pumpa gde prikazuju cene goriva ili duž autoputeva gde prikazuju reklame. U projektu ćemo videti kako se može konstruisati jednobojni LED matrični displej, koji se sastoji od 320 LE dioda raspoređenih u 8 redova sa 40 kolona.
“Mozak” projekta čini PIC16F1847 mikrokontroler koji prima podatke sa PC-a preko serijskog porta (ili USB porta korišćenjem USB-UART interfejsa) i prikazuje na displeju uz pomoć pet 74HC595 šift registara.
Hardver
Kako bismo dobili displej dimenzija 8×40 tačaka, poređaćemo jedan do drugog pet modula LED matričnog displeja dimenzija 8×8 tačaka. Moduli koji se koriste u projektu nose oznaku NFM-12883AS. To su common-row-cathode displeji, što znači da su katode LE dioda u svakom redu povezane. Odgovarajuće zajedniče katode svih displeja su spojene i dalje povezane sa kolom ULN2803, koje čini 8 Darlingtonovih spojeva. Ovo kolo nam je potrebno kako bismo mogli displeju da isporučimo dovoljnu struju. Svaki izlaz ovog kola uključuje 40 dioda (5 modula × 8 kolona). Pošto ULN2803 može da isporuči maksimalno 500mA, struja po diodi je limitirana na 12,5mA.
Anode dioda su dostupne kroz pinove kolona. Kolone se pokreću preko izlaza 40-bitnog serial-in-parallel-out kola sastavljenog od pet 74HC595 integrisanih kola. Ova kola predstavljaju 8-bitne serial-input i parallel/serial-output šift registre. Serijski izlaz ovih kola omogućava kaskadno povezivanje više 74HC595 kola. Sa inženjerske tačke gledišta 74HC595 možda nije dobar izbor za pokretanje kolona displeja, jer ne može da isporuči dovoljnu struju. Međutim, nekoliko eksperimenata je pokazalo upravo suprotno. Na slici 1 prikazana je šema povezivanja modula LED matričnog displeja.
Slika 1. Šema povezivanja modula matričnog LED displeja
Mikrokontroler koji se koristi u projektu je PIC16F1847 iz poboljšane srednje klase 8-bitnih mikrokontrolera. Radi na frekvenciji od 32MHz korišćenjem internog izvora takta. PORTB (Slika 2) je povezan sa ULN2803 i preko njega će se na diode dovoditi virtuelna masa (0V). Pinovi RA0, RA1 i RA2 se koriste kao upravljački signali za Data, SH_CP i ST_CP linije kaskadno vezanih šift registara. Pinovi 7 i 8 na mikrokontroleru su pinovi namenjeni UART komunikaciji. Oni idu ka USB-UART modulu za serijsku komunikaciju sa PC. Terminal za serijsku komunikaciju (koji radi na PC-u), može se koristiti za slanje karaktera, koji će biti sačuvani u EEPROM-u mikrokontrolera.
Slika 2. Povezivanje mikrokontrolera
Prototip uređaja je sastavljen na bušenom pertinaksu i prikazan je na slici 3.
Slika 3. Izgled prototipa uređaja
Softver
Firmware za ovaj projekat je razvijen u mikroC for PIC kompajleru. Program koristi jednu matricu dimenzija 8×5 (Buffer[8][5]) u koju se smešta informacija o stanju piksela. Svakom pikselu odgovara jedan element matrice. Korisnik može da pošalje poruku sa PC-a mikrokontroleru, korišćenjem serijskog terminala. Mi smo koristili Termite (čiji je izgled prikazan na slici 4) za Windows. Poruka koja se pošalje, čuva se u EEPROM-u mikrokontrolera. U nastavku je opisan algoritam rada firmware-a.
- Napajanje je dovedeno. PIC inicijalizuje portove i proverava serijsku komunikaciju, zatim ispisuje poruku “ARE YOU READY FOR YOUR INPUT? Y/N” na serijskom portu, te se ona prenosti i ispisuje u prozoru terminala na PC-u. Korisnik ima 3 sekunde da stisne taster Y. U suprotnom MCU ispisuje poruku koja je prethodno bila sačuvana u EEPROM-u. Poruka se pomera sa leva na desno. Serijska komunikacija između MCU i PC se odvija pri 115200 bps.
- Ako korisnik unese znak Y, MCU čeka dolazne podatke. MCU čita dolazne bajtove, dok ne primi znak ‘#’, koji je indikator poslednjeg karaktera poslatog sa PC-a. MCU tada upisuje 1 na 0x00 lokaciju i broj primljenih bajtova na 0x01 lokaciju EEPROM-a. Počevši od lokacije 0x02, primljeni karakteri se sekvencijelno memorišu.
- Dalje, MCU učitava karaktere iz EEPROM-a u RAM i prikazuje ih na LED matričnom displeju, sa kretanjem sa leva na desno. Svaki karakter je mapiran ka njegovom grafičkom fontu koji je sačuvan u programskoj memoriji kao statički niz.
Slika 4. Izgled prozora terminala za serijsku komunikaciju
Firmware za mikrokontroler pisan u mikroC for PIC kompajleru, kao i kompajlirani .hex fajl možete preuzeti ovde.