This is an old revision of the document!


Table of Contents

Graafiline LCD

Vajalikud teadmised: [HW] LCD moodul, [LIB] Graafilise LCD teek, [LIB] Viite teek, [PRT] Alfabeetiline LCD

Teooria

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.

Graafilisel LCD pikslitest moodustatud tekst

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.

Praktika

//
// 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);
	}
}
et/examples/display/lcd_graphic.1261491841.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0