0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovLiteraturaArhiv literatureLCD prikazovalnik s PIC

    Kot lahko vidite, bi morali na 16F84 priključiti 11 pinov. Na srečo lahko delujejo LCD-ji tudi v 4-bitnem načinu, v katerem moramo priključiti le 7 pinov. Podatki se v prvem primeru prenašajo po 8 bitov hkrati, v drugem primeru pa po 4 bite hkrati, zato je treba poslati obe polovici bajta posebej. Pri 4-bitnem načinu moramo uporabi linije D4 – D7. Ker je 4-bitni način varčen s pini mikrokontrolerja in ne otežuje preveč izdelave programa, bom opisal samo ta način. Shemo priklopa LCD-ja na PIC 16F84 lahko vidite na sliki 6.

    Tretji pin služi nastavitvi kontrasta mikrokontrolerja. Kontrast reguliramo z napetostjo na tem pinu, ki je lahko med 0 in +5 V. V shemi sem nastavljanje te napetosti omogočil s trimer potenciometrom 10 kohm, vezanim kot delilnik napetosti. Z vrtenjem potenciometra tako spreminjamo napetost in s tem nastavljamo kontrast. Pina R/W mi ne bomo potrebovali, ker ne bomo ničesar brali iz LCD-ja. Če želite, ga lahko vežete na maso in tako pridobite še en prost pin na mikrokontrolerju.

    Komunikacija z LCD prikazovalnikom

    Slike niLCD krmilimo tako, da mu pošiljamo ukaze ali pa podatke. Kaj pošiljamo, določa pin 4 z imenom RS. Če je ta pin v stanju logične 0, bo LCD sprejel podatek kot ukaz, če pa bo ta pin enak logični 1, bo podatek sprejet kot navaden podatek. Pin 5 z imenom R/W uporabljamo za določanje smeri podatka: če je pin enak 1, podatke beremo iz LCD-ja, če pa je enak 0, podatke v LCD pišemo. Pin 6 z imenom E je namenjen vklopu LCD-jeve logike. Ko pošljemo nek podatek na LCD, ga moremo namreč nekako obvestiti, da je na podatkovnih linijah nov podatek. To storimo tako, da postavimo pin E na logično 1, nato pa zopet spustimo na logično 0. Pri tem prehodu signala bo LCD sprejel novi podatek. Pini D0 – D7 do namenjeni paralelnemu prenosu podatkov med mikrokontrolerjem in LCD-jem. Nanje vpišemo podatek, ki ga želimo poslati oz. ga iz njih preberemo. Ker je teh pinov 8, lahko hkrati prenesemo 8 bitov, torej 1 bajt. Najnižji bit podatka se nahaja na D0, najvišji bit pa na D7. Če komuniciramo z LCD-jem v 4-bitnem načinu (kot bomo mi delali), pošljemo najprej zgornje 4 bite podatka na pine D4 – D7, vmes vklopimo in izklopimo pin E in nato pošljemo na iste 4 pine še spodnje 4 bite podatka. Po tem je treba seveda zopet vklopiti in izklopiti pin E. Branja podatkov iz LCD-ja mi ne bomo potrebovali, saj ni na njem ničesar zanimivega, kar bi lahko brali. Vsak vpis ukaza oz. podatka vzame LCD-ju nekaj časa, da ga obdela. V tem času mu ne smemo pošiljati naslednjega ukaza oz. podatka. Da bi vedeli, kdaj je LCD zaključil z delom, lahko uporabimo dve metodi: čakanje ali pa preverjanje bita D7, ki deluje kot BUSY bit. Kadar je D7 v tej vlogi na stanju logične 1, LCD še ni zaključil z delom. Naslednji podatek mu lahko pošljemo, ko se D7 postavi na 0. Mi bomo raje uporabljali »metodo« s čakanjem, saj je bolj robustna, ker preprečuje, da bi napaka na LCD-ju spravila PIC v neskončno zanko preverjanja bita D7. Ta metoda je zelo enostavna: za vsak ukaz oz. vpis podatka proizvajalec podaja maksimalen čas, ki ga potrebuje LCD za obdelavo. Če po vpisu podatka naredimo zakasnitev s tem časom trajanja, bo LCD lepo zaključil s svojim delom, mi pa bomo lahko normalno vpisali naslednji podatek. Časa zakasnitve ni potrebno točno nastavljati: lahko je večji od predpisanega, le manjši ne sme biti.Poglejmo si sedaj postopek vpisovanja podatka v 4-bitnem načinu:

    1. Pin R/W postavimo na 0, saj bomo podatek vpisali.
    2. RS postavimo na 1 ali 0, odvisno pač od tega, ali bomo vpisali ukaz ali podatek (0 za ukaz, 1 za podatek).
    3. Na pine D4 – D7 vpišemo zgornje 4 bite podatka.
    4. Vklopimo in ponovno izklopimo pin E.
    5. Na pine D4 – D7 vpišemo spodnje 4 bite podatka.
    6. Vklopimo in ponovno izklopimo pin E.
    7. Počakamo določen čas (pri vpisu podatka več kot 50 µs, pri ukazih odvisno od ukaza).

    To je vse! Poglejmo si še postopek za 8-bitni prenos podatka, ki pa ga bomo potrebovali le pri inicializaciji:

    1. Pin R/W postavimo na 0, ker podatek vpisujemo.
    2. RS postavimo na 1 ali 0, odvisno od tega, ali vpisujemo podatek ali ukaz (0 za ukaz, 1 za podatek).
    3. Na pine D0 – D7 vpišemo podatek oz. ukaz.
    4. Vklopimo in ponovno izklopimo pin E.
    5. Počakamo določen čas (pri vpisu podatka več kot 50 µs, pri ukazih odvisno od ukaza).

    Sedaj je čas, da pričnemo resno delati z LCD-jem.

    Inicializacija

    Vsak LCD je potrebno pred uporabo inicializirati, saj v nasprotnem primeru ne bo deloval. Inicializacija je točno določeno zaporedje vhodno/izhodih operacij, ki jih moramo izvesti na LCD zaslonu, da ga postavimo v želen način delovanja. Pri inicializaciji moramo upoštevati, v kakšnem načinu bo LCD deloval: 8-bitnem ali 4-bitnem. Ker nima smisla zapraviti štirih mikrokontrolerjevih pinov, bom opisal le inicializacijo in delo v 4-bitnem načinu. Poglejmo si po vrsti korake pri inicializaciji:

    1. Po vklopu napajanja počakamo najmanj 15 ms, da se LCD-jeva elektronika stabilizira.
    2. Pina RS in R/W postavimo na 0 (ukazni način, vpisovanje podatka).
    3. Na D7 – D4 vpišemo 0x3.
    4. Vklopimo in izklopimo pin E.
    5. Počakamo več kot 5 ms.
    6. Na D7 – D4 vpišemo 0x3.
    7. Vklopimo in izklopimo pin E.
    8. Počakamo več kot 100 µs.
    9. Na D7 – D4 vpišemo 0x3.
    10. Počakamo več kot 50 µs -> Dosedaj je LCD deloval v 8-bitnem načinu, ki je privzeti način po vklopu.
    11. Na D7 – D4 vpišemo 0x2 -> Sedaj smo omogočili 4-bitni način. Od tu naprej pošiljamo podatke na LCD po postopku, ki sem ga opisal v prejšnjem poglavju, seveda v 4-bitnem načinu. RS in R/W sta vedno enaka 0.
    12. Če imamo LCD z 1×16 znaki, pošljemo ukaz 0x20, če pa je znakov 2×16, pošljemo ukaz 0x28.
    13. Pošljemo ukaz 0x08 -> izklop LCD-ja.
    14. Pošljemo ukaz 0x01 -> pobriše zaslon, po tem ukazu moramo napraviti najmanj 2 ms zakasnitve.
    15. Pošljemo ukaz 0x06 -> vklopi pisanje od leve proti desni, onemogoči pomikanje zaslona pri pisanju.
    16. Pošljemo ukaz 0x0 F -> vklopi zaslon, prikaže kurzor na zaslonu in omogoči njegovo utripanje.