2013.11.13.
14:10

Írta: harsanyireka

Liquid Crystal Könyvtár használata

A példában 2x16 LCD kijelző szerepel. Háttérvilágítással rendelkezik. ROM-jában 208 karakter képét tárolja el. A Liquid Crystal könyvtárat használva könnyen programozható. Számokat, betűket, szimbólumokat is képes megjeleníteni.

Típusa: RC1602A

Adatlapján látható a lábak kiosztása, arra figyelj hogy nem sorban következnek!

(rst)_rc1602a.jpg

A kijelző csatolófelülete (interface), amihez kapcsolódhatunk egy párhuzamos interfész - a 8 bit-nyi adatot minden órajelre egyszerre kell megadni (D0-D7 lábak). Szerencsére szöveges üzenetekhez 4 bites üzemmódot is választhatunk, ami szabadon hagy 4 Arduino csatornát más célokra. Az RS (register select) láb logikai alacsonyra vagy magasra állításával választhatjuk, meg, hogy az adatvonalak a kijelző mely memóriaterületére írjanak. Az írást az EN (enable) lábbal engedélyezhetjük. Az adaregiszter tárolja az ASCII kódolású bájtokat, amik karakterként kerülnek megjelenítésre, az instrukciós regiszterben pedig utasítások tárolódnak a meghajtó számára. Ezek az utasítások a kijelző törlésére, a kurzor mozgatására és egyéb funkciókra vonatkoznak. A regiszterek állapotát vissza is olvashatjuk - az RW láb állapotának változtatásával megfordítható a D0-D7 adatvonalak iránya. A kijelző kontrasztját analóg módon a tápfeszültség leosztásával Vo lábon tudjuk beállítani (vagy digitális potméterrel). A háttérvilágítást annak típusától függően a kontraszthoz hasonló módon kezelhetjük. Megfelelő illesztéssel LED-es háttérvilágítást az Arduino egy PWM képes kimenetére is köthetjük, így programozhatóvá válik a fényerő állítása is.

       

Bekötése Arduinoval:

Egy 10 KOhm-os potmétert is kössünk be, ezzel tudjuk majd a háttérvilágítás erejét állítani.

Kössük az LCD RS lábát (ami a 4. számú) az Arduino digitális 12-es csatornájára, az EN lábát pedig a digitális 11-re. Az LCD 4-es, 5-ös, 6-os, 7-es adatvonalait (11, 12, 13, 14 lábak) pedig rendre az Arduino digitális 5,4,3,2 csatornákra. A 10k ohm-os potméterrel készítsünk feszültségosztót az 5V-os tápvezetékről és kössük be a potméter közepét az LCD kontrasztját szabályozó Vo lábra (3. számú). Az LCD 5V-os tápfeszültségről működik (GND, Vcc). RW-t (5. számú) kössük a földre!

IMG_4603.JPG

/////////

HELLO WORLD

 

IMG_4602.JPG

#include <LiquidCrystal.h>


// lcd nevű kijelző példány lábainak megadása RS,EN,D4,D5,D6,D7
////sorrendben

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {  

lcd.begin(16, 2);   // állítsuk be az oszlopok és sorok számát  
lcd.setCursor(0, 1); // első sor (0), első karakterére állítja a kurzort 
lcd.print("hello, world!");   // a szöveg kiírása
}

void loop() {}

 

SZINTAXISOK:

  • LiquidCrystal()

Létrehozza a kijelző egy példányát, ami 4 vagy 8 bites módban fog működni, attól függően, hogy a híváskor hány adatvonalat adunk meg.

Szintaxisa:

LiquidCrystal(RS, EN, D4, D5, D6, D7)

LiquidCrystal(RS, RW, EN, D4, D5, D6, D7)

LiquidCrystal(RS, EN, D0, D1, D2, D3, D4, D5, D6, D7)

LiquidCrystal(RS, RW, EN, D0, D1, D2, D3, D4, D5, D6, D7)

Paraméterei:

RS: Annak a digitális csatornának a száma amihez a REGISTER SELECT van kötve.

EN: Annak a digitális csatornának a száma amihez az ENABLE van kötve.

RW: Annak a digitális csatornának a száma amihez a READ/WRITE van kötve.

D0-D7: Azok a digitális csatornák amikhez az adatvonalak kapcsolódnak.

 

  • begin()

A kijelző méreteit, sorok és oszlopok számát határozza meg a könyvtár számára.

Szintaxisa:

lcd.begin(cols, rows)

Paraméterei:

lcd: a LiquidCrystal példány neve

cols: a kijelző oszlopainak száma

rows: a kijelző sorainak száma

 

  • clear()

Üresre törli az megjelenítendő karaktereket tartalmazó adatregisztert és a kijelzőt.

Szintaxisa:

lcd.clear()

Paramétere:

lcd: a LiquidCrystal példány neve

 

  • home()

A kurzort az első sor első karakterére - kijelző bal felső sarkába – mozgatja.

Szintaxisa:

lcd.home()

Paramétere:

lcd: a LiquidCrystal példány neve

 

  • setCursor()

A kurzort a megadott helyre mozgatja.

Szintaxisa:

lcd.setCursor(cols,rows)

Paraméterei:

lcd: a LiquidCrystal példány neve

cols: az oszlop ahová a kurzort mozgajtuk

rows: a sor ahová a kurzort mozgatjuk

 

  • write()

Egy bájtot vagyis karaktert ír ki a kijelzőre.

Szintaxisa:

lcd.write(data)

Paraméterei:

lcd: a LiquidCrystal példány neve

data: a megjelenítendő karakter ASCII kódja

  • print()

Szöveget jelenít meg a kijelzőn.

Szintaxisa:

lcd.print(data)

lcd.print(data, BASE)

Paraméterei:

lcd: a LiquidCrystal példány neve

data: char, byte, long, int, string – amit megjelenítünk

BASE: számrendszer alapja (opcionális) BIN, HEX, OCT, DEC

 

  • cursor()

Hívását követően egy alulvonástként megjeleníti a kurzort.

 

  • noCursor()

Hívását követően kikapcsolja a kurzor megjelenítését.

 

  • blink()

Ha a kurzor látható, akkor bekapcsolja a villogtatását.

 

  • noBlink()

Ha a kurzor látható, akkor kikapcsolja a villogtatását.

 

  • noDisplay()

Kikapcsolja a kijelzőt.

 

  • display()

Visszakapcsolja a kijelzőt, ha előtte a noDisplay() hívással ki volt kapcsolva és újra megjeleníti a szöveget ami a kikapcsolás pillanatában volt látható.

 

SZÖVEG GÖRGETÉSE

 

#include <LiquidCrystal.h> 


LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
lcd.begin(16, 2); // 16 karakter egy sorban
lcd.print("hello, world!"); // 13 karakterből álló szöveg 
delay(1000); 
}

void loop() {
// “letolja” a szöveget a kijelzőről balra
for (int positionCounter = 0; positionCounter < 13; positionCounter++) { 
lcd.scrollDisplayLeft();
delay(150); 
}

// 13 + 16 “letolja” a szöveget a kijelzőről jobbra 
for (int positionCounter = 0; positionCounter < 29; positionCounter++) { 
lcd.scrollDisplayRight();
delay(150); 
}delay(1000); 
}

 

  • scrollDisplayLeft()

Hívásakor egy karakterrel eltolja a kijelző teljes tartalmát balra.

 

  • scrollDisplayRight()

Hívásakor egy karakterrel eltolja a kijelző teljes tartalmát jobbra.

    

SZÖVEG AUTOMATIKUS GÖRGETÉSE

 

#include <LiquidCrystal.h>

// kijelző inicializálása
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
// oszlopok és sorok megadása
lcd.begin(16,2);
}

void loop() {
// kurzor a kezdő állapotban (0,0) - home() ugyanezt teszi
lcd.setCursor(0, 0);// kiírja a számokat 0-tól 9-ig
for (int thisChar = 0; thisChar < 10; thisChar++) {
lcd.print(thisChar);
delay(500);
}

// kurzort a második sor végére állítja (16,1)
lcd.setCursor(16,1);


// bekapcsolja az automatikus eltolást
lcd.autoscroll();// újra kinyomtatja a számokat 0-tól 9-ig
for (int thisChar = 0; thisChar < 10; thisChar++) {
lcd.print(thisChar);
delay(500);
}

// kikapcsolja az automatikus eltolást
lcd.noAutoscroll();


// letörli a kijelzőt
lcd.clear();
}

 

  • autoScroll()

Bekapcsolja a karakterek automatikus eltolását. Amikor egy új karaktert jelenítünk meg, a beállított iránynak megfelelően a már meglévő szöveget egy pozícióval elmozgatja.

 

  • noAutoscroll()

Kikapcsolja a karakterek automatikus eltolását.

 

  • leftToRight()

Az automatikus karakter eltolás irányának beállítása, balról jobbra.

 

  • rightToLeft()

Az automatikus karakter eltolás irányának beállítása, jobbról balra.

 

KARAKTER KIRAJZOLÁSA

 

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


byte smiley[8] = {
B00000,
B10001,
B00000,
B00000,
B10001,
B01110,
B00000,};

void setup() {
lcd.createChar(1, smiley);
lcd.begin(16, 2);
lcd.write(1);
}

void loop() {}

  • createChar()

Segítségével létrehozhatunk olyan karaktereket, amit nem tartalmaz a ROM. Ezeket az 5x8 pontból álló jeleket glyph-nek is szokás nevezni. A vezérlő 8 különféle glyph-et tud eltárolni a létrehozása után.

Szintaxisa:

lcd.createChar(num, data)

Paraméterei:

lcd: a LiquidCrystal példány neve

num: 0-7 a glyph száma, amelyik pozíción tárolni szeretnénk

data: a karakter pixeleit tartalmazó tömb

 

--------------------------------------------------------------------

--------------------------------------------------------------

Bővebben az LCD kijelzőkről itt: http://www.hobbielektronika.hu/cikkek/az_intelligens_lcd_modulok_hasznalata_-_i_resz.html

Szólj hozzá!

Címkék: hivatkozások leckék LCD Hello World Liquid Crystal

A bejegyzés trackback címe:

https://harsanyireka.blog.hu/api/trackback/id/tr715630840

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása