Intel Galileo in LCD display

LCD prikazovalniki (Liquid cristal display - prikazovalniki na tekoče kristale) omogočajo izpisovanje črk, številk in ostalih znakov. Uporabljamo jih kot vmesnike med uporabnikom in elektronsko napravo. Uporabili bomo dvovrstične LCD prikazovalnike z lastno osvetlitvijo, ki imajo v vsaki vrstici po 16 znakov. Vsak znak je sestavljen iz 5 x 8 pik.

LCD prikazovalniki brez možnosti osvetlitve zaslona imajo 14 priključkov, taki z možnostjo osvetlitve zaslona pa imajo 2 priključka več, torej 16 priključkov. Funkcija posameznega priključka je standardna, vedeti moramo le, kje se nahaja prvi priključek.

Slika 1: LCD prikazovalnik 2x16.

Priključki od 7 do 14 LCD prikazovalnika so namenjeni podatkovnim linijam (od D0 do D7). Preko njih se prenašajo podatki od Intel Galilea do LCD-ja, če pišemo v LCD in od LCD-ja do Intel Galilea, če beremo iz LCD-ja. LCD prikazovalniki lahko delujejo v 8-bitnem ali 4-bitnem načinu. Mi bomo izbrali 4-bitni način, saj s tem privarčujemo pri pinih razvojne plošče Intel Galileo. Ker iz LCD-ja ne bomo ničesar brali, bomo priključek 5 (R/W) povezali z maso. Podatki se pri 4-bitnem načinu delovanja prenašajo po 4 bite hkrati, zato moramo poslati obe polovici bajta posebej, pošiljamo pa jih po podatkovnih linijah  od D4 do D7. Tretji priključek LCD-ja služi nastavitvi kontrasta. Kontrast reguliramo z napetostjo na tem priključku.

LCD krmilimo tako, da mu pošiljamo ukaze ali podatke. Če postavimo priključek 4 (RS) v stanje logične 0, bo LCD sprejel podatek kot ukaz, če pa ga postavimo na nivo logične 1, bo LCD sprejel navaden podatek. Priključek 6 (E) je namenjen vklopu prikazovalnikove logike. Ko pošiljamo neki podatek na LCD, ga moramo nekako obvestiti, da je na podatkovnih linijah nov podatek. To storimo tako, da ta priključek vklopimo (postavimo na 1) in izklopimo (postavimo na 0). Ob tem prehodu bo LCD sprejel nov podatek.

Večina opisanega je narejeno in shranjeno v knjižnici, ki jo na začetku vključimo v naš program s predprocesorsko direktivo: #include <LiquidCrystal.h>. Mi v programu enostavno določimo pine, na katere bomo priključili LCD in vrsto LCD-ja.

Program za krmiljenje LCD prikazovalnika:

Napisali bomo program, ki bo krmilil LCD prokazovalnik po naslednjih zahtevah:

Priključitev posameznih elementov na razvojno ploščo Intel Galileo:

Slika 2: Priključitev elementov na razvojno ploščo Intel Galileo.

/*

 Krmiljenje LCD prikazovalnika.

 Avtor: MIlan Ivič, oktober 2014

 */

 #include <LiquidCrystal.h>    //Vključitev knjižnice za LCD

 /*

 Priključitev LCD displaya:

  RS (Priključek 4 na LCD-displayu): Pin2   

  EN (Priključek 6 na LCD-displayu): Pin3

  D4 (Priključek 11 na LCD-displayu): Pin5

  D5 (Priključek 12 na LCD-displayu): Pin6

  D6 (Priključek 13 na LCD-displayu): Pin8

  D7 (Priključek 14 na LCD-displayu): Pin:9

 */

 //Deklariranje spremenljivk

 int Tipka = 12;                         //Tipka je priključena na pin 12

 int LED = 13;                           //LED dioda je priključena na pin 13

 LiquidCrystal lcd(2,3,5,6,8,9);         //Inicializacija LCD

 int Stanje_tipke = 0;                   //Inicializacija spremenljivke Stanje_tipke

 //Zapis setup finkcije:

 void setup()

 {

   pinMode(Tipka, INPUT);     //Pin 12 je vhodni pin

   pinMode(LED, OUTPUT);      //Pin 13 je izhodni pin

    

   lcd.begin(16,2);               //LCD 2x16 => dve vrstici, vsaka po 16 znakov

   lcd.setCursor(5,0);            //Začni pisati od 5 znaka naprej (prvi znak je znak 0, prva vrstica je vrstica 0)

   lcd.print("VAJA");             //Izpiši VAJA

   lcd.setCursor(3,1);            //Piši v drugo vrstico od znaka 3 naprej

   lcd.print("Slovenija");        //Izpiši Slovenija

 

   delay(2000);                   //Počakaj 2 sekundi (2000 ms)

   lcd.clear();                   //Pobriši LCD display

   lcd.setCursor(1,0);

   lcd.print("Jesenska sola");

   lcd.setCursor(2,1);

   lcd.print("elektronike");

   delay(2000);

   lcd.clear();

   lcd.setCursor(1,0);

   lcd.print("Drzi na tipko");

   lcd.setCursor(1,1);

   lcd.print("za vklop LED");

   delay(2000);

   lcd.clear();

 }

 //Zanka za krmiljenje

 void loop()

 {

   Stanje_tipke = digitalRead(Tipka);     //Branje tipke

 

   if (Stanje_tipke == HIGH)              //Ali je tipka sklenjena?

   {

     digitalWrite(LED, HIGH);             //Ja, tipka je sklenjena, vklopi LED diodo

     lcd.setCursor(2,0);                  //Prva vrstica, znak 2 (prvi znak je znak 0)

     lcd.print("LED dioda je");

     lcd.setCursor(2,1);                  //Druga vrstica, znak 2

     lcd.print("vklopljena ");            //Za vklopljena izpiši še presledek

   }

   else

   {

     digitalWrite(LED, LOW);              //Ne, tipka ni sklenjena, izklopi LED diodo 

     lcd.setCursor(2,0);

     lcd.print("LED dioda je");

     lcd.setCursor(2,1);

     lcd.print("izklopljena");

   }  

   delay(10);                             //Počakaj 10 ms

 }

Električna shema priključitve elementov na razvojno plošči Intel Galileo:

Slika 3: Shema povezav elementov in priključitve na razvojno ploščo Intel Galileo.

Slika 4: Prikaz sestave na eksperimentalni ploščici in povezava z razvojno ploščo Intel Galileo.