This is an old revision of the document!
Vajalikud teadmised: [HW] LCD moodul, [LIB] Graafilise LCD teek, [LIB] Viite teek, [PRT] Alfabeetiline LCD
Graafiline LCD on vedelkristall-ekraan millega saab peale teksti ka kujundeid kuvada. Selle ehitus sarnaneb alfabeetilisele LCD-le, põhiline erinevus seisneb selles, et graafilisel ekraanil on kõik pikslid jaotatud üle ekraani ühe suure maatriksina. Kui tegu on monokromaatilise graafilise LCD ekraaniga, siis piksel on üks pisike ruudukujuline segment. Värvilistel ekraanidel moodustab üks piksel kolmest alampikslist millest igaüks laseb läbi värvifiltri kas punast, rohelist või sinist valgust. Kuna alampikslid on lähestikku paistavad need kui üks piksel.
Monokromaatilised graafilised ekraanid on tavaliselt passiivmaatriksiga, suured värvilised ekraanid, kaasaarvatud arvutiekraanid, on aktiivmaatriksiga. Kõik tausta- ja pikslite värvi puudutav info on graafilistel LCD-del sama mis alfabeetilistelgi - ehk siis leidub palju variante. Ning sarnaselt alfabeetiliste ekraanidega on ka graafilistel ekraanidel eraldi kontroller mis hoolitseb sideliidese kaudu info vastuvõtmise ja segmendite elektrivälja tekitamise eest. Kui alfabeetilisele LCD ekraanile piisab märkide indeksi saatmisest siis graafilised ekraanid ise tähti ei moodusta - kõik tekstid ja pildid tuleb eelnevalt tekitada ja pikselhaaval saata.
// // Kodulabori graafilise LCD kasutamise näide. // LCD-le kuvatakse kellaaeg programmi algusest alates. // #include <stdio.h> #include <homelab/module/lcd_gfx.h> #include <homelab/delay.h> // // Põhiprogramm // int main(void) { int seconds = 0; char text[16]; // LCD ekraani seadistamine lcd_gfx_init(); // Ekraani puhastamine lcd_gfx_clear(); // Taustavalgustuse tööle lülitamine lcd_gfx_backlight(true); // Programmi nime kuvamine lcd_gfx_goto_xy(20, 20); lcd_gfx_write_string("Aja loendur"); // Lõputu tsükkel while (true) { // Sekundite teisendamine kellaaja kujule // hh:mm:ss sprintf(text, "%02d:%02d:%02d", (seconds / 3600) % 24, (seconds / 60) % 60, seconds % 60); // Kellaaja teksti kuvamine lcd_gfx_goto_xy(20, 60); lcd_gfx_write_string(text); // Sekundi suurendamine 1 võrra seconds++; // Riistvaraline paus 1000 millisekundit hw_delay_ms(1000); } }