Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
de:examples:display:lcd_alphanumeric [2010/11/24 09:17] – angelegt Wemberde:examples:display:lcd_alphanumeric [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Alphanumerisches LCD ====== ====== Alphanumerisches LCD ======
  
-//Necessary knowledge: [HW] [[en:hardware:homelab:lcd]], [LIB] [[en:software:homelab:library:module:lcd_alphanumeric]], [LIB] [[en:software:homelab:library:delay]], [PRT] [[en:examples:timer:periodic_interrupt]]//+//Notwendiges Wissen: [HW] [[en:hardware:homelab:lcd]], [LIB] [[en:software:homelab:library:module:lcd_alphanumeric]], [LIB] [[en:software:homelab:library:delay]], [PRT] [[en:examples:timer:periodic_interrupt]]//
  
 ===== Theorie ===== ===== Theorie =====
  
-Das alphanumerische LCD ist ein Flüssigkristall-Display, mit dem Zweck Buchstaben und Nummern darzustellen. In einfachen LCD'sind flüssige Kristalle zwischen transparenten Elektroden, welche die Polarisation des durchstrahlenden Lichts im elektrischen Feld veränderenDie Elektroden sind mit Polarisationsfiltern bedeckt, welche sicher stellen, das nur in eine Richtung polarisiertes Licht durch die Screen kann+Das alphanumerische LCD ist ein Flüssigkristall-Display, welches zur Darstellung von Buchstaben und Ziffern dient. In einfachen LCD'werden flüssige Kristalle verwendet, welche zwischen transparenten Elektroden angeordnet sind und die Polarisation des durchstrahlenden Lichts im elektrischen Feld verändernAuf den Elektroden befinden sich Polarisationsfilter, welche sicher stellen, das nur in eine Richtung polarisiertes Licht auf den Bildschirm trifft
-Wenn der Flüssigkristall seine Polarisationdurch das elektrische Feld ändert, kann das Licht nicht durch die Screen bzw. das Segment und es wirkt Schwarz.+Wenn der Flüssigkristall seine Polarisation durch das elektrische Feld ändert, erreicht das Licht den Bildschirm oder ein Segment des Bildschirms nicht und er bleibt schwarz.
  
-Die Haupteigenschaften eines alphanumerischen LCD sind die Segmente und ihre Platzierung. Der Bildschirm ist in verschiedene Indikatoren unterteilt. Jeder Indikator hat genug Segmente um um Buchstaben oder Nummern anzuzeigen oder eine Matrix aus kleinen Kästchen-Segmenten (Pixel) wird geformtZum Beispiel ist eine Matrix aus 5x7 Pixel genug um alle Nummern und Buchstaben des Lateinischen Alphabets darzustellen. Es gibt normalerweise 1-Reihen an Indikatoren mit 8-32 Spalten. Jeder Indikator hat einen kleinen Abstand ähnlich der Buchstaben im Text+Hauptmerkmal eines alphanumerischen LCD ist die Anordnung der Segmente. Der Bildschirm ist in verschiedene Anzeigen unterteilt. Jede Anzeige hat entweder genügend Segmente um Buchstaben oder Nummern anzuzeigen oder es wird eine Matrix aus Pixeln gebildetEine Matrix aus 5x7 Pixeln ist beispielsweise ausreichend, um alle Nummern und Buchstaben des lateinischen Alphabets darzustellen. Die Anzeigeelemente bestehen gewöhnlich aus bis Zeilen sowie bis 32 Spalten. Zwischen den Elementen befinden sich kleine Abstände ähnlich wie bei Buchstaben im Text.
  
-[{{  :examples:display:lcd_alphanumeric:lcd_alphanumeric_abc.png?200|The text formed of alphanumerical LCD pixels' matrixes.}}]+[{{  :examples:display:lcd_alphanumeric:lcd_alphanumeric_abc.png?200|Darstellung eines Textes durch eine Pixelmatrix eines alphanumerischen LCD.}}]
  
-Außer des Bildschirms hat das alphanumerische LCD auch einen Controller welche die Segmente der Screen je nach Befehl vom Kommunikations-Interface kontrolliert. Ein Controller hat eine vorprogrammierte Karte an Buchstaben, wo jeder Buchstabe, Nummer und Symbol ihren eigenen Index haben. +Neben dem Bildschirm hat das alphanumerische LCD auch einen Controller, welcher die Segmente des Bildschirms gemäß den Befehlen der Kommunikationsschnittstelle steuert. Ein Controller verfügt über eine vorprogrammiertes Set von Buchstaben mit einem eigenen Index für jeden Buchstaben, jede Nummer sowie jedes Symbol. Die Darstellung des Textes auf dem Bildschirm  erfolgt, einfach gesagt, indem die Indizes zum Controller gesendet werden. Tatsächlich müssen jedoch weitere Kontrollbefehle übermittelt werden, bevor irgendetwas dargestellt werden kann. Da es viele verschiedene Ausführungen von LCDs gibt, die jeweils unterschiedlich gesteuert werden, ist es wichtig, sich mit dem Datenblatt jedes LCDs vertraut zu machen.
-Das darstellen von Text auf dem Bildschirm wird, einfach gesagt, dadurch bewerkstelligt, dass die Indizes zum Controller gesendet werden. In wirklichkeit müssen es mehr Kontrollbefehle gesendet werden, bevor irgendetwas dargestellt werden kann. Es wichtig sich mit jedem LCD Datenblatt vertraut zu machen, weil es viele verschiedene Typen von LCDs gibt und diese alle unterschiedlich kontrolliert werden.+
  
-Alphanumerische LCDs haben normalerweise eine passive Matrix, wo die Erneuerung des elektrischen Feldes der Segmente rundenweise stattfindet. Darum sind die Bildschirme mit passiver Matrix langsamer und haben weniger Kontrast als welche mit aktiver Matrix, wo die Ladung jedes Segments durch einen eigenen Transistor erfolgt. Einige LCDs haben eine reflektierende Rückfläche, andere haben eine Backlight, manchmal sogar viele verschiedene BacklightsAber die Segmentfarbe für alphanumerische LCDs ist nur eineschwarz, aber es gibt auch Bildschirme mit weißer oder bunter Schrift.     +Alphanumerische LCDs besitzen normalerweise eine passive Matrix. Hier erfolgt die Erneuerung des elektrischen Feldes der Segmente turnusmäßigAus diesem Grund sind Bildschirme mit einer passiven Matrix langsamer und Darum sind die Bildschirme mit passiver Matrix langsamer und bieten weniger Kontrastals Bildschrime mit aktiver Matrix. Bei Aktivmatrix-Bildschrimen wird die Ladung jedes einzelnen Segments durch einen eigenen Transistor gesteuert. Einige LCDs haben einen reflektierenden Hintergrund, andere haben Hintergrundbeleuchtungen und wieder andere sogar verschiedene HintergrundbeleuchtungenDie Segmente eines alphanumerischen LCDs haben jedoch immer nur eine Farbe. In der Regel sind sie schwarz, es gibt jedoch auch Bildschrime mit weißer oder farbiger Schrift.
  
  
 ===== Übung ===== ===== Übung =====
  
-Am HomeLab Digitalen I/O-Modul ist ein 2x16 Symbol alphanumerisches LCD WC 1602A angeschlossen. Um den Bildschrim zu kontrollieren gibt es einen 4-Bit Datenbus und 3 Kontroll-Pins, aber das Kommunikationsprotokoll ist viel zu umfangreich um es hier zu besprechen. Um es einfach zu halten, die HomeLab Library hat die Funktionen um das Display zu nutzen.+Am digitalen I/O Modul des HomeLab ist ein alphanumerisches, 2x16 Zeichen großes, LCD WC 1602A angeschlossen. Zur Steuerung des Bildschirms gibt es einen 4-Bit Datenbus sowie 3 Kontroll-Pins. Da das Kommunikationsprotokoll des Bildschirms zu umfangreich ist, um es hier zu erläuternenthält die HomeLab Library die entsprechenden Funktionen zur Nutzung des Displays
  
-Bevor man das Display nutzt, ist es wichtig die Einstellungen anzupassen. Dafür gibt es die  +Vor der Nutzung des Displays ist es notwendig, seine Einstellungen anzupassen. Hierzu dient die //lcd_alpha_init// Funktion, welche einen blinkenden Cursor auf dem Bildschirm erscheinen lässt. Hier gibt es nur eine aktive Position für den Cursor, an welcher der nächste Buchstabe eingegeben werden kann. Bevor also Text eingegeben wird, muss der Cursor an die gewünschte Position bewegt werden. Um die Position des Cursors zu verändern gibt es die Funktion //lcd_alpha_goto_xy// und für die Darstellung die Funktion //lcd_alpha_write_string//Sämtliche Funktionen des alphanumerischen LCDs sind in der Library erklärt.
- // lcd_alpha_init// Funktion, welche einen blinkenden Cursor auf dem Bildschrim erscheinen lässt. Auf dem Bildschirm gibt es nur eine aktive Position für den Cursor wo Text eingegeben werden kann. Also bevor man Text eingibt, muss der Cursor zur gewünschten Position bewegt werden. Um die Position des Cursors zu verändern gibt es die Funktion lcd_alpha_goto_xy und für die Darstellung die Funktion lcd_alpha_write_string. +
-All diese Funktionen des alphanumerischen LCDs werden in der Library erklärt.+
  
-Der folgende Programm-Code zeigt wie man das alphanumerische LCD als Uhr nutzt. Die Zeit beginnt um 00:00:00 und steigt annährend jede Sekunde. Da das zählen von Zeit mit einer Verzögerungsfunktion geschieht, ist das nicht sehr genau. Die Ungenauigkeit wird in der Aufgabe zu periodischen Unterbrechungen erklärt. Das Programm zählt die Zeit in Sekunden und konvertiert diese in Minuten und Sekunden. Um Uhrzeit darzustellen wird die Standard-Funktion in C-Sprache genutzt: //sprintf//    +Der folgende Programm-Code zeigt wie das alphanumerische LCD als Uhr genutzt werden kann. Die Zeit beginnt bei 00:00:00 und nimmt etwa jede Sekunde zu. Da das Zählen der Zeit mit Hilfe einer Verzögerungsfunktion geschieht, ist das Ergebnis nicht sehr genau. Diese Ungenauigkeit wird im Rahmen der Aufgabe zu periodischen Unterbrechungen erklärt. Das Programm zählt die Sekunden und konvertiert diese in Minuten und Sekunden. Um Uhrzeit darzustellen wird die Standard-Funktion in C genutzt: //sprintf//    
  
  
 <code c> <code c>
 // //
-// The example of using the alphanumerical LCD of the HomeLab. +// Beispiel zur Nutzung des alphanumerischen LCD des HomeLab. 
-// The clock time starting at the beginning of the program is displayed on the LCD.+// Die Startzeit zu Beginn des Programms wird auf dem LCD angezeigt.
 // //
 #include <stdio.h> #include <stdio.h>
Line 39: Line 36:
  
 // //
-// Main program.+// Hauptprogramm.
 // //
 int main(void) int main(void)
 { {
- int seconds = 0; +    int seconds = 0; 
- char text[16];+    char text[16];
  
- // Set-up of the LCD. +    // Einrichtung des LCD. 
- lcd_alpha_init(LCD_ALPHA_DISP_ON);+    lcd_alpha_init(LCD_ALPHA_DISP_ON);
  
- // Cleaning of the LCD. +    // Löschen des LCD. 
- lcd_alpha_clear();+    lcd_alpha_clear();
  
- // Name of the program+    // Name des Programms
- lcd_alpha_write_string("The Time Counter");+    lcd_alpha_write_string("The Time Counter");
  
- // Endless loop  +    // Endlosschleife     
- while (true) +    while (true) 
-+    
- // Converting the seconds to the clock form+        // Konvertieren der Sekunden in die Zeitanzeige
- // hh:mm:ss +        // hh:mm:ss 
- sprintf(text, "%02d:%02d:%02d", +        sprintf(text, "%02d:%02d:%02d", 
- (seconds / 3600) % 24, +            (seconds / 3600) % 24, 
- (seconds / 60) % 60, +            (seconds / 60) % 60, 
-  seconds % 60);+             seconds % 60);
  
- // Displaying the clock text in the beginning of the second row of the LCD. +        // Anzeige der Zeit am Anfang der zweiten Reihe des LCD. 
- lcd_alpha_goto_xy(0, 1); +        lcd_alpha_goto_xy(0, 1); 
- lcd_alpha_write_string(text); +        lcd_alpha_write_string(text); 
-  +         
- // Growing seconds by 1. +        // Anstieg der Sekunden um 1. 
- seconds++; +        seconds++; 
-  +         
- // Hardware delay 1000 ms. +        // Hardwareverzögerung 1000 ms. 
- hw_delay_ms(1000); +        hw_delay_ms(1000); 
- }+    }
 } }
 </code> </code>
de/examples/display/lcd_alphanumeric.1290590233.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