- 16x2 Dot Matrix LCD radič IC HD44780:
- Zobrazenie vlastného znaku na 16x2 LCD:
- Vysvetlenie programovania a práce:
- Pripojenie a testovanie obvodu:
V našom predchádzajúcom tutoriáli sme sa naučili Ako prepojiť 16 * 2 LCD s mikrokontrolérom PIC. Ak ste začiatočníkom v mikrokontroléri PIC, odporúčame vám prejsť si ho predtým, ako pôjdete ďalej. Predtým sme sa tiež naučili základy PIC pomocou LED blikajúcich programov a časovačov v PIC mikrokontroléri. Môžete si tu pozrieť všetky výukové programy týkajúce sa učenia mikrokontrolérov PIC pomocou kompilátora MPLABX a XC8.
V tomto výučbe to urobíme zaujímavejším vytvorením vlastných vlastných znakov a ich zobrazením na našej LCD obrazovke pomocou mikrokontroléra PIC16F877A PIC. Tiež existuje niekoľko preddefinovaných väčšinou používaných vlastných znakov, ktoré dáva samotný HD44780A IC, uvidíme tiež, ako ich môžeme použiť. Ako sme vysvetlili v našom predchádzajúcom návode, náš LCD displej má zabudovaný radič Hitachi HD44780, ktorý nám pomáha zobrazovať znaky. Každý znak, ktorý zobrazujeme, je už preddefinovaný vo vnútri ROM HD44780 IC. Pred zobrazením znaku na LCD sa dozvieme niečo o radiči LCD IC HD44780.
16x2 Dot Matrix LCD radič IC HD44780:
Aby sme mohli zobraziť vlastný znak, musíme nejako povedať IC, že ako bude vyzerať vlastný znak. Aby sme to mohli urobiť, mali by sme vedieť o troch typoch pamätí, ktoré sa nachádzajú v ovládači IC HD44780 IC:
Generátor znakov ROM (CGROM): Je to pamäť iba na čítanie, ktorá, ako už bolo povedané, obsahuje všetky vzory znakov preddefinovaných v nej. Táto ROM sa bude líšiť od každého typu Interface IC a niektoré môžu mať so sebou nejaký preddefinovaný vlastný znak.
Display Data RAM (DDRAM): Toto je pamäť s náhodným prístupom. Zakaždým, keď zobrazíme znak, jeho vzor sa získa z CGROM a prenesie sa do DDRAM a potom sa umiestni na obrazovku. Aby sme to zjednodušili, DDRAM bude mať vzory všetkých znakov, ktoré sa momentálne zobrazujú na obrazovke LCD. Týmto spôsobom nemusí IC pre každý cyklus načítať údaje z CGROM a pomáha pri získaní krátkej frekvencie aktualizácií
RAM generátor znakov (CGRAM): Toto je tiež pamäť s náhodným prístupom, takže z nej môžeme zapisovať a čítať údaje. Ako už z názvu vyplýva, táto pamäť bude tou, ktorá sa dá použiť na vygenerovanie vlastného znaku. Musíme pre postavu vytvoriť vzor a zapísať ho do CGRAMU. Tento vzor je možné v prípade potreby prečítať a zobraziť na obrazovke.
Teraz, keď sme dostali základné pochopenie typov pamätí prítomných v rozhraní HD44780 IC. Pozrime sa do jeho údajového listu, aby sme pochopili trochu viac.
Ako naznačuje údajový list, model HD44780 IC poskytol ako 8 miest na ukladanie našich vlastných vzorov v CGRAM, taktiež napravo vidíme, že existujú niektoré preddefinované znaky, ktoré sa dajú zobraziť aj na našej LCD obrazovke. Pozrime sa, ako to dokážeme.
Zobrazenie vlastného znaku na 16x2 LCD:
Aby sme mohli zobraziť vlastný znak, musíme preň najskôr vygenerovať vzor a potom ho uložiť do CGRAMU. Pretože už máme funkcie knižnice so sebou, malo by to byť jednoduché urobiť pomocou niekoľkých jednoduchých príkazov. Tu je knižnica pre funkcie LCD, ale tu sme prekopírovali všetky funkcie knižnice do samotného programu, takže nie je potrebné zahrnúť tento hlavičkový súbor do nášho programu. V tomto článku nájdete aj základné informácie o fungovaní LCD a jeho vývodoch.
Prvým krokom je vygenerovanie vzoru alebo vlastného znaku. Ako vieme, každý znak je kombináciou 5 * 8 bodiek. Musíme zvoliť, ktorý bod (pixel) by mal ísť vysoko a ktorý naopak. Jednoducho nakreslite rámček nižšie a vytieňujte regióny podľa svojej postavy. Moja postava je tu stickman (dúfam, že to tak vyzerá). Po zatienení jednoducho napíšte ekvivalentnú binárnu hodnotu každého bajtu, ako je to znázornené nižšie.
Jednoducho vložte „1“ do tieňovanej oblasti a „0“ do oblasti bez tieňa pre každý bajt, a to znamená, že náš vlastný vzor je pripravený. Podobne som vytvoril 8 vlastných kódov vzorov pre našich 8 pamäťových priestorov, ktoré jej prezentujú CGROM. Sú uvedené v nasledujúcej tabuľke.
S.NO: |
Vlastný znak |
Kód vzoru |
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 |
Poznámka: Nie je povinné načítať všetkých 8 miest poskytovaných v CGRAMe.
Vysvetlenie programovania a práce:
Teraz sú naše vzorové kódy pripravené, musíme ich len načítať do CGRAM LCD a zobraziť ich pomocou mikrokontroléra PIC. Aby sme ich mohli načítať do CGRAM, môžeme vytvoriť pole prvkov 5 * 8 a každý bajt načítať pomocou reťazca „ for “. Pole kódu vzoru je uvedené nižšie:
const nepodpísané krátke Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // Kód pre pamäťový priestor CGRAM 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b01110,0b00000, // Kód pre CGRAM pamäťový priestor 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // Kód pre CGRAM pamäťový priestor 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11111,0b00000, // Kód pre CGRAM medzera 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // Kód pre pamäťový priestor CGRAM 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // Kód pre pamäťový priestor CGRAM 6 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // Kód pre pamäťový priestor CGRAM 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // Kód pre pamäťový priestor CGRAM 8};
Každý pamäťový priestor je načítaný so svojím rešpektovaným znakovým vzorom. Na načítanie tohto modelu do HD44780 IC je potrebné odkázať na dátový list HD44780, ale na nastavenie adresy CGRAM možno použiť iba príkazové riadky.
// *** Vložte vlastný znak do CGROM *** ////// Lcd_Cmd (0x04); // Nastaviť adresu CGRAM Lcd_Cmd (0x00); //.. set CGRAM Address for (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Návrat domov Lcd_Cmd (2); //.. vrátiť sa domov // *** Načítanie vlastného znaku je dokončené *** //////
Tu vo vnútri cyklu „ for“ je každá binárna hodnota načítaná do CGROM. Po načítaní vzoru je možné upraviť vlastné znaky tak, že sa dajú jednoducho zavolať na umiestnenie vzoru pomocou void Lcd_Print_Char (char data) funkcie, ako je uvedené nižšie.
Lcd_Print_Char (0); // Zobraziť vlastný znak 0 Lcd_Print_Char (1); // Zobraziť vlastný znak 1 Lcd_Print_Char (2); // Zobraziť vlastný znak 2 Lcd_Print_Char (3); // Zobraziť vlastný znak 3 Lcd_Print_Char (4); // Zobraziť vlastný znak 4 Lcd_Print_Char (5); // Zobraziť vlastný znak 5 Lcd_Print_Char (6); // Zobraziť vlastný znak 6 Lcd_Print_Char (7); // Zobraziť vlastný znak 7
Tlač preddefinovaných špeciálnych znakov:
HD44780 IC má niektoré preddefinované špeciálne znaky uložené v DDROM. Tieto znaky je možné priamo tlačiť na obrazovku odkazom na ich binárnu hodnotu v údajovom liste.
Napríklad: Binárna hodnota znaku „ALPHA“ je 0b11100000. Ako to získať, je zrejmé z obrázku nižšie, rovnako môžete získať hodnotu pre akýkoľvek špeciálny znak, ktorý je vopred definovaný v IC.
Akonáhle je binárna hodnota známa, je možné zodpovedajúci znak vytlačiť na obrazovku jednoduchým použitím funkcie void Lcd_Print_Char (char data), ako je uvedené nižšie, Lcd_Print_Char (0b11100000); // binárna hodnota alfa z údajového listu
Kompletný kód tohto projektu je uvedený nižšie v časti kódu, tiež skontrolovať detail Video vysvetlenie na konci tohto návodu.
Pripojenie a testovanie obvodu:
Tento projekt nevyžaduje žiadne ďalšie hardvérové požiadavky, jednoducho sme použili rovnaké pripojenia z predchádzajúceho tutoriálu o prepojení LCD a použili sme rovnakú dosku, ktorú sme vytvorili v návode na blikanie LED. Ako vždy poďme simulovať program pomocou programu Proteus na overenie nášho výstupu.
Len čo máme simuláciu spustenú podľa očakávania, umožníme priamo vypáliť kód do nášho nastavenia hardvéru. Výstup programu by malo byť niečo ako toto:
Takto môžete zobraziť ľubovoľný vlastný znak na displeji 16 x 2 pomocou mikrokontroléra PIC s kompilátorom MPLABX a XC8. Skontrolujte tiež našu kompletnú sériu Learning PIC Microcontroller.