LCD mit 128x64 Punkten

Erstellt am 28.03.2002 00:05:21Klicks [9461]

Verwandte Themen und Zusätze: Anschluß eines LCD Displays | Download zu Display 128x64 Source Code und Datenblatt |
Grafikdisplays sind nette Spielobjekte, denen ich mich auch nicht ganz verschließen konnte. Dieses Beispiel zeigt ein PG12864J Display angeschlossen an ein STK200. Ich benutze das STK, da ich bis heute nur zum Testen gekommen bin. Sollte ich mehr Zeit finden, soll dies Display in einem Auto den Drehzahlverlauf visualisieren.


Wer schon einmal die anderen Beispiele mit einem HD44780 ausprobiert hat, wird schnell feststellen, dass es nicht schwer ist das groß Display anzusteuern. Vielmehr liegt das Problem im RAM des verwendeten Prozessors. Wir verwenden hier einen AT90S9535 oder 15. Diese haben leider etwas wenig SRAM, um luxuriöse Zeichensätze zu laden. Vielmehr wollen wir uns hier erst einmal darauf konzentrieren Linien und Punkte zu malen.

Dazu schliessen wir das Display wie folgt an das STK200 an :

PIN Zuordnung

Pin

Port

Symbol

Funktion

1 +5 Volt Vdd Power supply (+ 5V)
2 - Vss Power supply (GND)
3 -5 Volt !!! Vo Contrast adjust
4-11 PORT A0-7 DB0-7 Databus line
12 Port B.0 CSA Chip selection driver 1
13 Port B.1 CSB Chip selection driver 2
14 Port B.2 RST Reset
15 Port B.3 R/W Data read / write
16 Port B.4 D / I Kommando / Data select
17 Port B.5 E Chip enable ganzes Display
18   Vss Power supply (GND)
19   A Power supply for LED B/L (-)
20   K Power supply for LED B/L (+)

Um die negative Spannung für den Kontrast zu erzeugen, bediene ich mich zweier Netzteile. Eines wird genutzt, um dem SDK Spannung zu liefern, das ander Nutzen wir zu Stromversorgung des Displays und als Gegenspannung zu den 5 Volt des SDK, um eine negative Spannung zu erhalten. Man kann das nun alles wie auf dem Foto gesehen anschliessen, oder extra eine kleine Platine fertigen. Ich habe mich für das SDK entschieden.

Das Display akzeptiert folgende Kommandosequenzen :

wobei die Interne Organisation wie folgt aufgebaut ist :

Das Programm, das ich dazu geschrieben habe, nutzt nun diese Kommandostrukturen, um die Seiten des Displays zu addressieren und einzelne Pixel zu setzen ider zu löschen. So muss bei dem Zeichen einer Linie immer errechnet werden in welche Seite und Zeile der Pixel gesetzt werden muss. Ich möchte aber ab hier auf den Source verweisen, da er gut kommentiert und weiterführend ist. Im Programm werden so diese Funktionen erzeugt, die den Ablauf der Chipprogrammierung möglich machen.

  • enable()
  • SelChip()
  • WriteData()
  • ReadData()
  • DisplayOn()
  • ClearDisplay()
  • SetPixel()
  • DrawLine()
  • DrawRectangle()

Diese Funktionen bauen systematisch aufeinander auf und ermöglichen so die Kommunikation mit den beiden integrieten Kontrollern. Nun ist es als nächstes notwenig, einen Zeichensatz in das Programm zu integrieren, um Text neben Grafik anzeigen zu können. Dies ist leider bislang noch nicht erfolgt und wird Teil eines Updateszu diesem Artikel sein.
Wie immer werde ich in den Downloadbereich den Sourcecode legen. Falls jemand eine Erweiterung zu diesem Projekt schreibt, ist er herzlich eingeladen mir diese zukommen zu lassen. Ich werde alle Einsendungen mit Quellenanchweis veröffentlichen.

Zum weiteren Studium kann ich diese Seite empfehlen : http://www.geocities.com/dinceraydin/lcd/index.html

Bernhard Ritter