In den Steuerungssystemen von Heizungsanlagen, in elektrischen Geräten wie Küchenmaschinen, Mikrowellen u. a. finden sich vielfach LCD-Anzeigen, über die der Nutzer
etwas über den Zustand des Gerätes erfährt.
In diesem Abschnitt erfährst du etwas über den Anschluss von LCD-Modul an einen Mikrocontroller, wie man Text an ein Display überträgt und wie man ein
LCD-Modul parallel und seriell ansteuert.
Die eingesetzten Controller, wie KS0070B oder andere, sind HD44780 kompatibel. Die Anzeigen gibt es mit grünem Hintergrund und schwarzer Schrift oder blauem Hintergrund und weißer Schrift in den
Ausführungsformen 1x16, 2x16, 4x16, 4x20 Zeichen und mehr.
Die meisten Anzeige-Module haben 14, bei integrierter Hintergrundbeleuchtung sogar 16 Anschlusspins.
Das Datenblatt gibt für das jeweilige Modul genauere Auskunft über die Pinbelegungen und weitere Eigenschaften. Die Daten werden über die Anschlüsse DB0 ... DB7 parallel an das Display
übertragen.
Das LCD-Modul von Parallax Inc. besitzt nur drei Anschlüsse. Zwei für die Spannungsversorgung (+5V, GND) und eine dritte Leitung (RX), über die das Modul seriell angesteuert wird.
Das in Übung 1 verwendete LCD ist ein LM162551 von Sharp mit 16 Zeichen, 2 Zeilen und einer 5x7 Punktematrix pro Zeichen. Es
kann mit einem Mikrocontroller im 4- oder 8-Bit Parallelmodus an +5 Volt betrieben werden und verfügt über einen erweiterten Befehlssatz.
Im 4-Bit Parallelmodus werden die Datenbit-Pin DB0 - DB3 nicht benötigt; sie können unbeschaltet bleiben. Ich habe sie im
dargestellten Versuchsaufbau auf GND gelegt.
Über das BASCOM Hilfesystem bekommt man unter dem Stichwort CONFIG LCD das notwendige Hintergrundwissen für die Anwendung der Konfigurations- und
Ausführungsbefehle.
- BASCOM unterstützt verschiedene LCD-Darstellungstypen (1-, 2- und 4-zeilig, mit 16, 20 und 40 Zeichen pro Zeile) für die Chipsets: HD44780, KS077, DOGM und ST7032.
- Im 4-Bit Modus benötigt man 6 Portpins für die Ansteuerung eines LCDs.
In der ersten Übung geht es darum, ein LCD-Modul unter BASCOM parallel anzusteuern und den Text: "Moin, moin!" in Zeile 1 (oben) und "Test bestanden." in
Zeile 2 (unten) auszugeben.
Aufgaben
- Baue die Schaltung nach der Skizze auf.
- Übertrage das Programm lcd_parallel1.bas in den BASCOM Editor und speichere es ab.
- Starte das Programm.
- Überzeuge dich davon, dass der programmierte Text auf dem Display erscheint.
- Füge eine weitere beliebige Print-Anweisung in das Programm ein.
Material
- 1x Steckbrett
- 1x Nullkraftsockel
- 1x USB-UART Adapter
- 1x Netzteil
- 1x ATmega8A oder ähnlich
- 1x Programm BASCOM
- div. Steckdrähte
- 1x LCD-Modul mit Controller HD44780
Abbildung 0 - Pin 3 steuert den Kontrast. Üblich ist, hier einen Spannungsteiler aus Widerstand (10 kOhm) und Potenziometer (2,5 kOhm) einzubauen und damit die korrekte Helligkeit auszusteuern. Aus Vereinfachungsgründen ist er hier weggelassen worden.
Das Programm lcd_parallel1.bas
Abbildung 1 - Programm lcd_parallel1.bas
Textausgabe im LCD-Display
Abbildung 2 - Textausdruck im LCD-Modul
Wie arbeitet das Programm lcd_parallel1.bas?
Zeilen 18 - 21
Die Konfiguration für ein LCD erfolgt über Zeile 18. Hilfe zu den einzelnen Parametern erhält man über das Hauptmenü unter Hilfe - Hilfethemen im Register Suchen und dem Fenster Suchbegriff(e) eingeben unter dem Stichwort LCD.
Es wird im 4-Bit Modus gearbeitet; die dazu notwendigen Pinverbindungen zwischen Display und Mikrocontroller sind in den Zeilen 18, 19 und 20 aufgeführt. Die Zeile
21 ist nicht notwendig, da BASCOM bei fehlender Eingabe von Config Lcd = ... davon ausgeht, dass ein Display mit 16 Zeichen und zwei Zeilen vorhanden
ist.
Zeilen 24 - 31
In der Endlosschleife Do ... Loop werden die Druckbefehle für das Display aufgerufen. Cls (clear screen) löscht es und Lcd "Moin, moin!" druckt den Text in Hochkomma im Display
aus.
Nach einer Wartezeit von 1 Sekunde wird mit lowerline in Zeile 2 des Displays der zweite Text aus Programmzeile
29 ausgegeben.
Befehl |
Wirkung |
lowerline |
gibt einen Text in der unteren Zeile eines 2-zeiligen Displays aus. |
locate Zeile, x-Position |
gibt einen Text in Zeile 1, 2, 3 oder 4 (hängt vom Display ab) an der Position x (1 ... 16 oder 1 ... 20) aus.
|
Shiftlcd right/left |
schiebt einen Text im Display nach rechts/ links |
Shiftcursor right/left |
versetzt einen Cursor nach rechts/links |
Home upper |
setzt den Cursor nach oben links im Display |
Cursor on/off noblink/blink |
schaltet das Cursorsymbol ein/aus nicht blinkend/blinkend |
Display on/off |
schaltet das Display ein/aus |
Mit BASCOM lassen sich Sonderzeichen für ein LCD-Modul sehr leicht und schnell erstellen. Über den LCD-Designer wird das neue Symbol entworfen und anschließend in
ein bereits fertiges Programm übernommen. Wie das geht, soll diese kleine Übung zeigen.
Aufgaben
- Baue die Schaltung nach der Skizze auf.
- Übertrage das Programm lcd_sonderzeichen1.bas in den BASCOM Editor und speichere es ab.
- Starte den LCD Designer und entwirf das neue Symbol.
- Ändere das Programm anschließend ab, wie beschrieben und starte es.
- Überzeuge dich davon, dass das neu entworfene Zeichen im Display ausgegeben wird.
- Entwirf weitere Zeichen.
Material
- 1x Steckbrett
- 1x Nullkraftsockel
- 1x USB-UART Adapter
- 1x Netzteil
- 1x ATmega8A oder ähnlich
- 1x Programm BASCOM
- div. Steckdrähte
- 1x LCD-Modul mit Controller HD44780
Programm lcd_sonderzeichen1.bas
Abbildung 3 - Programm lcd_sonderzeichen1.bas
Das Sonderzeichen wird so erstellt, dass man als erstes über das Hauptmenü Werkzeuge - LCD Designer (Strg-L)
oder über das Icon-Menü das Icon Run LCD-Designer aufruft. In dem 8x5 Matrixfeld trägt man die neue Figur/ das neue Symbol mit einem Klick in die
jeweiligen Kästchen ein und beendet den Entwurf mit Ok. Die unterste Zeile der Matrix darf nicht für den Symbolentwurf genutzt werden.
Abbildung 4 - Entwurf eines Sonderzeichens im LCD Designer von BASCOM
Die erste Figur ist ein nach oben weisender Pfeil. Wird die Eingabe mit Ok beendet, erscheint im Programm eine neue Programmzeile. In diesem
Fall:
- Deflcdchar [x] , 4 , 14 , 31 , 4 , 4 , 4 , 31 , 32
mit dem Hinweis
- ' replace [x] with number (0-7)
Ersetze die Zeichenfolge [x] in diesem Fall durch die Zahl 0 und tausche die Programmzeilen 24 - 27 des vorherigen Programmes durch die Zeilen 24 - 28 des neuen
aus. Speichere das Programm ab und starte es. Das Sonderzeichen sollte in der 2. Zeile erscheinen.
Abbildung 5 - Die Programmzeilen für das Sonderzeichen ersetzen die Programmzeilen 24 - 27 aus Abb. 3
Auf diese Weise lassen sich bis zu acht verschiedene Sonderzeichen im Modul abspeichern und für kleine Animationen aufrufen. Probiere es
selber aus, in dem du neue Symbole entwirfst und sie nacheinander im Display anzeigst.
In dieser Übung wird ein LCD der Fa. Parallax zweckentfremdet. In meiner Bastelkiste befindet sich noch ein solches LCD von der BASIC Stamp 2; es
wäre zu schade, wenn man es nicht auch für einfache Ausgaben verwendete. Das Modul ist bereits mit einem DIP-Schalter für die Baudrate und einem Kontrasteinsteller auf der Rückseite der Platine
ausgerüstet. Für die Übertragung von Text an das LCD-Modul steht nur der Pin RX zur Verfügung.
Der Vorteil gegenüber einer parallelen Ansteuerung ist der geringe Bedarf an Portpins - hier nur einer. Damit lässt sich dieses Display auch an dem Winzling
ATtiny13A betreiben.
Material
- 1x Steckbrett
- 1x Nullkraftsockel
- 1x USB-UART Adapter
- 1x Netzteil
- 1x ATmega8A oder ähnlich
- 1x Programm BASCOM
- div. Steckdrähte
- 1x LCD-Modul (Parallax)
Aufgaben
- Baue die Schaltung nach der Schaltskizze auf.
- Übertrage das Programm lcd_seriell1.bas in den BASCOM Editor und speichere es ab.
- Starte das Programm.
- Überzeuge dich davon, dass der programmierte Text auf dem Display erscheint.
Bei einer seriellen Datenübertragung an ein LCD-Display wird nur eine Datenleitung benötigt. Die BASCOM-spezifischen Ansteuerungsbefehle für ein LCD
funktionieren nicht. Dazu müssen die herstellerspezifischen Voreinstellungen aufgerufen werden. Sie findet man im Datenblatt zu diesem LCD-Display beim Hersteller Parallax
Inc.
- Eingebauter Piezo-Lautsprecher, mit dem sich zur Textausgabe zeitgleich auch Warn- oder Hinweistöne ausgeben lassen.
- Einstellbare Baudrate über Dip-Schalter auf der Rückseite des Moduls.
- Einstellbarer Kontrast über ein Potenziometer auf der Rückseite des Moduls.
- Versorgungsspannung: 5 Volt
Das Display besteht aus zwei Zeilen mit jeweils 16 Zeichen. Dabei verfügt das Display tatsächlich in jeder Zeile über vier weitere Zeichenplätze, die allerdings
nicht auf dem Display angezeigt werden können. Insgesamt stehen somit 40 Speicherplätze für 32 darstellbare Zeichen zur Verfügung.
Abbildung 6 - Aufbau des Parallax LCD-Moduls. Die Speicherstellen 0x10 - 0x13 werden nicht angezeigt; ebenso 0x24 - 0x27.
Der Speicherbereich von 0x10 - 0x13 und 0x24 - 0x27 ist nicht sichtbar, wird aber vom Programm genutzt.
Das kann man selbst ausprobieren, indem man in einer Variable S den Text "Text in Zeile 1!" und in der Variablen T den Text "Text in Zeile 2!" ablegt. Wird
anschließend dieser Text im Display ausgegeben, dann erscheint in Zeile 1 der Inhalt der Variablen S und in Zeile 2 der Text von T minus der ersten vier Zeichen; die werden in den Speichern 0x10 -
0x13 abgelegt (Abb. 6).
Zeilenrücklauf 13
Displayinhalt löschen 12
Display AUS 21
Display EIN 24
Cursor in Z0, Pos. 0 128
Cursor in Z1, Pos. 0 148
Das Programm lcd_seriell1.bas
Abbildung 7 - Beispiel für eine Textausgabe in Zeile 0 und Zeile 1 im LCD.
Bild 8 - Beispiel für eine Textausgabe an Position 6 in Zeile 0 (133).
Weiter geht´s mit dem Kapitel Sensor
HC-SR04