- 16x2 Dot Matrix LCD vezérlő IC HD44780:
- Egyéni karakter megjelenítése 16x2 LCD-n:
- Programozás és munka Magyarázat:
- Áramköri kapcsolatok és tesztelés:
Korábbi oktatóanyagunkban megtanultuk, hogyan kell összekapcsolni egy 16 * 2 LCD-t a PIC mikrovezérlővel. Ha Ön még kezdő a PIC mikrovezérlőben, javasoljuk, hogy hajtsa végre a további lépéseket. Korábban a PIC alapjait is megtanultuk a LED villogó program és a PIC mikrokontroller időzítői segítségével. Itt ellenőrizheti az összes oktatóanyagot a PIC mikrovezérlők megtanulásáról az MPLABX és az XC8 fordító segítségével.
Ebben az oktatóanyagban tegyük érdekesebbé saját egyedi karakterek létrehozásával és a PIC16F877A PIC mikrokontroller használatával az LCD képernyőn való megjelenítéssel. Van néhány előre definiált, legtöbbször használt egyedi karakter, amelyet maga a HD44780A IC adott meg, és meglátjuk, hogyan is használhatjuk őket. Amint azt az előző bemutatónkban kifejtettük, az LCD-n egy Hitachi HD44780 vezérlő van beágyazva, amely segít a karakterek megjelenítésében. Minden megjelenített karakter már előre meg van határozva a HD44780 IC ROM-ján. Megismerjük az IC HD44780 LCD vezérlőt, mielőtt karaktert jelenítenénk meg az LCD-n.
16x2 Dot Matrix LCD vezérlő IC HD44780:
Egyéni karakter megjelenítéséhez valahogy el kell mondanunk az IC-nek, hogy hogyan fog kinézni az egyedi karakter. Ehhez tudnunk kell a HD44780 LCD vezérlő IC-jében található háromféle memóriáról:
Karaktergenerátor ROM (CGROM): Ez az írásvédett memória, amely, mint korábban említettük, tartalmazza a benne előre meghatározott karakterek összes mintázatát. Ez a ROM az interfész IC típusától függően eltérő lehet, és egyeseknél előre meghatározott egyéni karakterek is lehetnek.
Display Data RAM (DDRAM): Ez egy véletlen hozzáférésű memória. Minden alkalommal, amikor megjelenítünk egy karaktert, annak mintája lekérésre kerül a CGROM-ból, és átkerül a DDRAM-ra, majd a képernyőre kerül. Leegyszerűsítve: a DDRAM minden olyan mintát meg fog jelenni, amely éppen megjelenik az LCD képernyőn. Így az egyes ciklusoknak az IC-nek nem kell adatokat beolvasnia a CGROM-ból, és ez segít egy rövid frissítési gyakoriság elérésében
Karaktergenerátor RAM (CGRAM): Ez szintén véletlen hozzáférésű memória, így írhatunk és olvashatunk belőle adatokat. Ahogy a neve is mutatja, ez lesz az a memória, amely felhasználható az egyedi karakter létrehozására. Ki kell alakítanunk egy mintát a karakter számára, és be kell írnunk a CGRAM-ba, ez a minta szükség esetén elolvasható és megjeleníthető a képernyőn.
Most, hogy megértettük a HD44780 interfész IC-jében lévő memória típusait. Vessünk egy pillantást az adatlapjára, hogy megértsünk egy kicsit többet.
Amint az adatlapból kitűnik, a HD44780 IC 8 helyszínként biztosította egyedi mintáink CGRAM-ban történő tárolását, a jobb oldalon is láthatjuk, hogy vannak előre definiált karakterek, amelyek az LCD-képernyőn is megjeleníthetők. Nézzük meg, hogyan tehetjük meg.
Egyéni karakter megjelenítése 16x2 LCD-n:
Egy egyedi karakter megjelenítéséhez először elő kell állítanunk egy mintát hozzá, majd el kell mentenünk a CGRAM-ba. Mivel a könyvtár funkciók már vannak velünk, ezt egyszerűnek kell lennie néhány egyszerű paranccsal. Itt található az LCD funkciók Könyvtára, de itt az összes Könyvtár funkciót átmásoltuk magába a programba, így nem kell ezt a fejléc fájlt a programunkba foglalni. Ellenőrizze ezt a cikket az alapvető LCD működésről és a csatlakozókról is.
Az első lépés egy minta vagy az egyedi karakter létrehozása. Mint tudjuk, minden karakter 5 * 8 pont kombinációja. Ki kell választanunk, hogy melyik pont (pixel) legyen magas, és melyik maradjon alacsony. Egyszerűen rajzoljon egy mezőt, mint az alábbiak, és árnyalja a régiókat a karaktere alapján. A karakterem itt egy botember (remélem, hogy annak tűnik). Az árnyékolás után egyszerűen írja be az egyes bájtok egyenértékű bináris értékét az alábbiak szerint.
Mindegyik bájtnál egyszerűen tegyen egy „1” -t az árnyékolt területre és egy „0” -t az árnyékolatlan régióra, vagyis készen áll az egyedi mintánk. Hasonlóképpen készítettem 8 egyedi mintakódot a 8 memóriaterünkhöz, bemutatva a CGROM-ot. Az alábbi táblázat felsorolja őket.
S.NO: |
Egyéni karakter |
Mintakód |
1 |
0b01110, 0b01110, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010, 0b01010 |
|
2 |
0b00000, 0b00000, 0b01010, 0b00100, 0b00100, 0b10001, 0b01110, 0b00000 |
|
3 |
0b00100, 0b01110, 0b11111, 0b11111, 0b01110, 0b01110, 0b01010, 0b01010 |
|
4 |
0b01110, 0b10001, 0b10001, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
5. |
0b01110, 0b10000, 0b10000, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
6. |
0b00000, 0b10001, 0b01010, 0b10001, 0b00100, 0b01110, 0b10001, 0b00000 |
|
7 |
0b00000, 0b00000, 0b01010, 0b10101, 0b10001, 0b01110, 0b00100, 0b00000 |
|
8. |
0b11111, 0b11111, 0b10101, 0b11011, 0b11011, 0b11111, 0b10001, 0b11111 |
Megjegyzés: A CGRAM-ban megadott mind a 8 hely beillesztése nem kötelező.
Programozás és munka Magyarázat:
Most elkészültek a mintakódjaink, csak be kell töltenünk az LCD CGRAM-jába, és PIC mikrovezérlővel kell megjelenítenünk őket. Ahhoz, hogy betöltsük őket a CGRAM-ba, 5 * 8 tömböt alkothatunk, és mindegyik bájtot betölthetjük egy ' for ciklus ' használatával. A mintakód tömbje az alábbiakban látható:
const unsigned short Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // A CGRAM memóriaterület kódja 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b01110,0b00000, CGRAM 2 memóriaterület 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // A CGRAM memóriaterület kódja 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11111,0b00000, // kód tér 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // A CGRAM memóriaterület kódja 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // CGRAM memóriaterület kódja 6 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // A CGRAM memóriaterület kódja 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // CGRAM memóriaterület kódja 8};
Minden memóriaterület meg van töltve a tiszteletben tartott karaktermintával. Ennek a mintának a HD44780 IC-be történő betöltéséhez meg kell utalni a HD44780 adatlapját, de csak parancssorokkal lehet beállítani a CGRAM címét
// *** Töltsön be egyedi karaktert a CGROM-ba *** ////// Lcd_Cmd (0x04); // CGRAM cím beállítása Lcd_Cmd (0x00); //.. állítsa be a CGRAM címet az (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Visszatérés haza Lcd_Cmd (2); //.. visszatér a kezdőlapra // *** Az egyedi karakter betöltése folyamatban van *** //////
Itt a ' for loop' belsejében minden bináris érték betöltődik a CGROM-ba. A minta betöltése után az egyedi karakterek megjelenítésre késztethetők, ha egyszerűen meghívják a minta helyét a void Lcd_Print_Char (char adatok) függvény segítségével az alábbiak szerint.
Lcd_Print_Char (0); // Egyéni karakter megjelenítése 0 Lcd_Print_Char (1); // 1. egyedi karakter megjelenítése Lcd_Print_Char (2); // 2. egyéni karakter megjelenítése Lcd_Print_Char (3); // 3. egyéni karakter megjelenítése Lcd_Print_Char (4); // 4. egyedi karakter megjelenítése Lcd_Print_Char (5); // 5. egyedi karakter megjelenítése Lcd_Print_Char (6); // 6. egyéni karakter megjelenítése Lcd_Print_Char (7); // 7. egyedi karakter megjelenítése
Előre definiált speciális karakter nyomtatása:
A HD44780 IC tartalmaz néhány előre definiált speciális karaktert a DDROM-ban. Ezek a karakterek közvetlenül kinyomtathatók a képernyőre, hivatkozva az adatlap bináris értékére.
Például: Az "ALPHA" karakter bináris értéke 0b11100000. Ennek megszerzésének módja az alábbi ábrán érthető meg, hasonlóképpen értéket kaphat bármely speciális karakter számára, amelyet az IC előre definiál.
Amint a bináris érték ismert, a megfelelő karakter kinyomtatható a képernyőn, egyszerűen az érvénytelen Lcd_Print_Char (char adatok) funkció használatával, az alábbiak szerint, Lcd_Print_Char (0b11100000); // az alfa bináris értéke az adatlapból
A projekt teljes kódja alább található a Kód szakaszban, ellenőrizze a bemutató végén található részletes videó magyarázatot.
Áramköri kapcsolatok és tesztelés:
Ennek a projektnek nincs további hardverkövetelménye, egyszerűen ugyanazokat a kapcsolatokat használtuk, mint az előző LCD interfész oktatóanyag, és ugyanazt a táblát használtuk, amelyet a LED villogó bemutatójában hoztunk létre. Mint mindig, szimuláljuk a programot a Proteus segítségével a kimenetünk ellenőrzéséhez.
Miután a szimuláció a várakozásoknak megfelelően fut, lehetővé teszi a kód közvetlen beírását a Hardver beállításunkba. A program kimenetének valami ilyennek kell lennie:
Így minden egyéni karakter megjeleníthető 16x2 LCD-n az MPLABX és XC8 fordítóval ellátott PIC mikrovezérlő használatával. Itt ellenőrizheti a teljes PIC mikrokontroller tanulási sorozatunkat is.