This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| de:examples:display:lcd_graphic [2010/11/24 11:40] – angelegt Wember | de:examples:display:lcd_graphic [2020/07/20 12:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Graphisches LCD ====== | ||
| + | |||
| + | // | ||
| + | |||
| + | ===== Theorie ===== | ||
| + | |||
| + | Das graphische LCD //liquid crystal display// ist ein Display zur Darstellung von Bildern und Text. Es ist ähnlich aufgebaut wie das alphanumerische LCD, mit dem Unterschied, | ||
| + | |||
| + | [{{ : | ||
| + | |||
| + | Monochrome graphische Displays haben normalerweise eine passive Matrix, große Farbdisplays (auch Computer-Bildschirme) eine aktive. Im Hinblick auf die Farbe des Hintergrunds und der Pixel entspricht das graphische LCD dem alphanumerischen. Auch das graphische Display verfügt über einen separaten Controller, welcher die Information über die Kommunikationsschnittstelle empfängt und das elektrische Feld für die Segmente generiert. Im Gegensatz zum alphanumerischen LCD, welches Text anzeigt, indem die Indizes der darzustellenden Zeichen gesendet werden, kann das graphische LCD keine Buchstaben eigenständig generieren - sämtliche Bilder und Texte müssen Pixel für Pixel vom Nutzer generiert werden. | ||
| + | |||
| + | |||
| + | ===== Übung ===== | ||
| + | |||
| + | Das HomeLab Kit enthält ein 84x48 Pixel großes, monochromes, | ||
| + | |||
| + | Die Funktionen für das graphische LCD sind ähnlich zu denen des alphanumerischen LCD. Zuerst muss der Bildschirm mit der Funktion // | ||
| + | |||
| + | Nachfolgend ist ein Beispiel des Zeitzählers dargestellt. Das Programm zählt Sekunden (annähernd), | ||
| + | |||
| + | <code c> | ||
| + | // | ||
| + | // Beispiel für die Nutzung des graphischen LCD des HomeLab. | ||
| + | // Die Tageszeit wird ab Beginn des Programms auf dem LCD angezeigt. | ||
| + | // | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | // | ||
| + | // Hauptprogramm. | ||
| + | // | ||
| + | int main(void) | ||
| + | { | ||
| + | int seconds = 0; | ||
| + | char text[16]; | ||
| + | |||
| + | // Einrichten des LCD. | ||
| + | lcd_gfx_init(); | ||
| + | |||
| + | // Löschen des Displays. | ||
| + | lcd_gfx_clear(); | ||
| + | |||
| + | // Einschalten der Hintergrundbeleuchtung. | ||
| + | lcd_gfx_backlight(true); | ||
| + | |||
| + | // Anzeige des Programmnamens. | ||
| + | lcd_gfx_goto_char_xy(1, | ||
| + | lcd_gfx_write_string(" | ||
| + | |||
| + | // Endlosschleife. | ||
| + | while (true) | ||
| + | { | ||
| + | // Sekunden in die Form der Uhrzeit konvertieren. | ||
| + | // hh:mm:ss | ||
| + | sprintf(text, | ||
| + | (seconds / 3600) % 24, | ||
| + | (seconds / 60) % 60, | ||
| + | | ||
| + | |||
| + | // Anzeige des Zeittextes. | ||
| + | lcd_gfx_goto_char_xy(3, | ||
| + | lcd_gfx_write_string(text); | ||
| + | |||
| + | // Eine Sekunde hinzufügen. | ||
| + | seconds++; | ||
| + | |||
| + | // Hardwareverzögerung von 1000 ms. | ||
| + | hw_delay_ms(1000); | ||
| + | } | ||
| + | } | ||
| + | </ | ||