| AVR Atmega48/88/168 i LCD displej |
|
U mnogi projektima za prikazivanje izlaznih podataka, kao i za davanje instrukcija korisniku, koriste se alfanumerički LCD displeji (LCD - liquid crystal display). Prema tome mikrokontroler komunicira sa kontrolerom Hitachi 44780, koji dalje upravlja LCD dispejom. U daljem tekstu koristiće se termin komunikacija između mikrokontrolera i LCD displeja, podrazumjevajući da je stvarni tok komunikacije mikrokontroler -> kontroler HD 44780 -> LCD displej. Blok šema LCD displeja sa kontrolerom Hitachi 44780 prikazana je na sljedećoj slici:
Sa slike se vidi da LCD u sebi sadrži LCD panel i LCD kontroler baziran na kolu HD 44780. Da bi se uspostavila komunikacija između mikrokontrolera i LCD-a prvo je potrebno izvršiti povezivanje pinova mikrokontrolera sa odgovarajućim pinovima LCD-a i priključiti LCD na odgovarajući napon napajanja. U blok šemi postoji i dio backlight, a on predstavlja osvjetljenje pozadine. Postoje LCD displeji sa osvjetljenjem i bez osvjetljenja pozadine. Osvjetljenje pozadine jednostavno se uključuje povezivanjem pinova A i K na napon napajanja LCD displeja. Da bi se ostvarila komunikacija između mikrokontrolera i LCD displeja, potrebno je znati za šta služi koji pin na LCD displeju. Zbog toga u sljedećoj tabeli dat je opis pojedinih pinova na LCD displeju:
Prema navedenoj tabeli za prikazivanje podataka na LCD displeju, na mikrokontroler je potrebno povezati pinove DB0-DB7, E i RS signal. S obzirom da će se samo prikazivati podaci na LCD-u, nije potrebna komunikacija sa R/W pinom i on se može odmah spojiti na GND, jer je logička 0 potrebna za mogućnost pisanja na LCD displej. Ovim načinom povezivanja ostvaruje se 8-bitna komunikacija između mikrokontrolera i LCD displeja, a potrebno je ukupno 10 slobodnih pinova na mikrokontroleru. Takođe postoji i 4-bitna komunikacija za koju je potrebno 6 slobodnih pinova na mikrokontroleru. U ovom projektu koristiće se 4-bitna komunikacija zbog potrebe manjeg broja slobodnih pinova na mikrokontroleru. U projektu su korišteni mikrokontroler Atmega88 i LCD displej DEM16217 16x2 (2 linije sa 16 znakova). Ovaj displej ima backlight, ali se nije koristio u projektu. Šema spajanja mikrokontrolera i LCD displeja prikazana je na sljedećoj slici: Klikni na šemu da uvećaš Na šemi se vidi da su međusobno povezani sljedeći pinovi:
S obzirom da svaki LCD displej ima odgovarajuće karakteristike, prije pisanja programskog koda za ostvarenje komunikacije između mikrokontrolera i LCD displeja potrebno je pogledati u karakteristikama LCD-a način za ostvarivanje 8-bitne ili u ovom slučaju 4-bitne komunikacije. Na sljedećoj slici prikazan je 4-bitni način ostvarivanja komunikacije koji je nalazi u karakteristikama korištenog LCD-a.
Klikni na sliku da uvećaš Prema toj blok šemi napisan je jednostavan programki kod u C programskom jeziku i AVR studio. Korisno je napomenuti da se ovom slučaju podatak šalje na LCD displej tako što se PB0, PB1, PB2 i PB3 postave na odgovarajuće vrijednosti, a zatim koristeći funkciju send pin PB4 postavi na logičku jedinicu, sačeka jedan vremenski period, a zatim postavi na logičku nulu čime je podatak poslan na LCD displej. Funkcija f_put šalje komandu ili podatak u zavisnosti od ulaznog argumenta b, vdijeti komentar u programskom kodu. Funkcija f_string prikazuje tekst na LCD displeju. S obzirom da će na LCD-u pisati Demonstracija rada LCD-a i da je poželjno da riječ demonstracija bude u jednom redu, a druge riječi u drugom redu. Riječ demonstracija ima ukupno 13 slova, pa se pomoćnom promjenljivom k u funkciji f_string kontroliše koliko je slova ispisano na LCD-u i kada bude ispisano 13 slova, zadaje se naredba za prelazak u novi red. Funkcija f_init vrši inicijalizaciju mikrokontrolera i LCD displeja. Programski kod za pisanje na LCD-u: #include <avr/io.h>
Na sljedećoj slici prikazan je LCD displej nakon puštanja u rad:
|


