LCD karaktertérkép

## Leírás

A használa során szükséges lehet megismerni az LCD titkait, erre szolgál az alábbi kis program. Nem tartalmaz semmi különlegességet, csak az alapkapcsolás kell hozzá. Az Arduino beépített Soros monitora helyett érdemesebb külső programot használni, mint pl a Putty. A program 16 karakteres 2 soros kijelzőre épül.

 Kapcsolás

Szoftver ami kell hozzá:

-LiquidCrystal.h

Hardver ami kell hozzá

-Arduino

-LCD modul

-Dugdosó panel

## Használat

Bekapcsoláskor az első képernyő a rövid használati utasítás után átvált a karakterek megjelenítésére.

Két sorban, soronként 3 hexa kód jelenik meg, utána pedig a hozzá tartozó karakter. A "w" gombbal felfelé lapozhatunk az FF (255) kódig, lefelé a 0-ig.

Karakterkép:

0-F-ig saját karakterek jeleníthetőek meg a 0-7 kód tükröződik a 8-F tartományban.

10-1F Üres

20-7F ASCII karakterek

80-A0 Üres

A1-DD Speciális japán karakterek

DE-FF Nemzeti ékezetes és egyéb karakterek. Ezek között lehetnek érdekesek számunkra

* EF: kis ö
* F5: kis ü

## Példa

```
// LCD karaktertábla demo

```

```
// LCD kijelző kezelése szoftveres kontraszt állításssal

```

```
#include "LiquidCrystal.h"                //LCD függvénykönyvtár betöltése

```

```
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);      //LCD beállítása a D4-D9 digitális kimeneten

```

```
const int ContrastPin = 3;               //A 3-as lábon a kontraszt szabályozása

```

```
int Contrast = 60;                        //Alapértelmezett kontraszt érték

```

```
int mt = 32;                              //számláló segédváltozó

```

```
int srin;

```

```
int cup = 119;                            //w betű kódja a kontrasztfeszültséget növeli

```

```
int cdn = 115;                            //s betű kódja a kontrasztot csökkenti

```

```
void kiir(int x, int y, int cc){          //1 mező kiiratása

```

```
lcd.setCursor(x,y);

```

```
String str = String(cc, HEX);

```

```
lcd.print(str);                         //Hex kód kiírása

```

```
if (cc<16)lcd.print(" ");               //kiiratok még egy szóközt

```

```
lcd.print(":");                         //Még egy kettőspont

```

```
char c = (char) cc;                     //Változó mint karakter

```

```
lcd.print(c);                           //Karakter kiiratása

```

```
}

```

```
void teleir(int cc){                      //Képernyő teleírása

```

```
lcd.clear();

```

```
for (int j=0;j<2;j++){                  //2sor

```

```
for (int i=0;i<3;i++){                //3 karakter

```

```
int mit=cc+i+j*3;

```

```
if (mit<256){

```

```
kiir(i*5,j,mit);

```

```
}

```

```
}

```

```
}

```

```
}

```

```
void setup() {

```

```
analogWrite(ContrastPin,Contrast);      //Kontraszt beállítása. A kimenet analóg PWM

```

```
Serial.begin(9600);                     //Soros port inicializálása

```

```
lcd.begin(16, 2);                       //16x2 képernyő inicializálása

```

```
lcd.print("Karakter map RJ");           //Program nevét kiír

```

```
lcd.setCursor(0,1);                     //2.sor

```

```
lcd.print("Gomb: w=Fel,s=Le");          //gombkezelés

```

```
delay(3000);                            //Időkésleltetés

```

```
teleir(mt);                             //Karakterek megjelenítése

```

```
}

```

```
void loop() {

```

```
if (mt>255){mt=0;}                       //Ha nagyobb mint 1 byte, nullázok

```

```
if (Serial.available() > 0) {            //Jött a soros vonalon adat?

```

```
srin = Serial.read();                 //Ha jött, beolvasom

```

```
if (srin == cup) {                    //"Következő" karakter?

```

```
if(mt<250){

```

```
mt+=6;                            //Karakter mutató a következő lapra mutat

```

```
}

```

```
}

```

```
if (srin == cdn) {                    //"Előző" karakter?

```

```
mt-=6;                              //Karakter mutató az előző lapra mutat

```

```
if (mt<0){

```

```
mt=0;

```

```
}

```

```
}

```

```
teleir(mt);                           //Karakterek megjelenítése

```

```
}

```

```
}

```