ALPS LSU7S1011A von Pollin

Bei meiner letzten Bestellung bei Pollin kam - du hast es sicher schon erraten: ein LC-Display (120 215).
Dieses mal aber ein graphisches. Man braucht ja eine neue Beschäftigung...
Da ich keine großartige Lust hatte, mich mit feinem Draht herum zu ärgern, habe ich auch gleich die Anschlussplatine für das Display (120 233) bestellt.
Das ganze sieht dann so in etwa aus:

Anschlussplatine LC-Display mit controller

Beim Bestücken habe ich gemerkt, dass die Platine einen kleinen Design-Fehler hat:
Die Beine von D2 zu dick für die 0,6mm-Löcher.
Anschlussplatine aufgebaut

Leider fiel mir erst nach dem Bestücken und Löten der Platine auf, dass ein Buchse für den Parallel-Port verbaut wurde und ich kein paralleles Kabel mit zwei Steckern habe. Natürlich ist dann auch noch Wochenende und die Läden, die das haben könnten haben schon seit einer Stunde geschlossen. SCH....

Aber man wäre ja kein Bastler, wenn man nicht irgendwo irgendetwas herumliegen hat. Ein 25 Pol Sub-D-Stecker ist schnell gefunden und ausgeschlachtet.
Also schnell noch einmal den Lötkolben aufheizen und ab damit!

Wie erwartet, funktionierte das ganze mit der Test-Software von Pollin auch recht gut.
Aber wer will schon immer die Test-Software starten um etwas auf das Display zu übertragen?

Deshalb - und jetzt kommt wieder VB ins Spiel - habe ich mich dafür entschieden, ein Modul für das Display in VB zu schreiben. Da das Display nicht besonders "intelligent" ist, müssen fast alle Funktionen, wie Textausgabe vom Modul übernommen werden.
Dabei ergeben sich dann folgende Funktionen und Variablen:

Variablen:
Port
Legt den Port fest, an dem das Display angeschlossen wurde.
Beispiel: Port = 888 'für LPT1

Contrast
Setzen/Lesen des Wertes für die Kontrastspannung von 0-31.
Beispiel: Contrast = 10 'Standardwert bei UB=5V, J=25°C

Funktionen:
ConvertBintoDez(Bin as String)
Wandelt einen binären String in einen dezimalen Long um.
Bsp: 129 = ConvertBintoDez("01000001")

ConvertDeztoBin(Dez as Long)
Wandelt einen dezimalen Long in einen binären String um.
Bsp: "01000001" = ConvertDeztoBin(129)

OutLcd(LcdData as Long, LcdControl as Boolean)
Gibt die in LcdData angegebenen Daten an das Display aus.
LcdData: Daten in dezimaler Form, die an das Display ausgegeben werden.
LcdControl: Legt fest, ob der ausgegebene Wert ein Steuerbefehl ist (True) oder nicht.

Init()
Initialisiert das Display mit allen nötigen Befehlen.
Der Kontrast muss danach festgelegt werden.

DisplayPower(DisplayOn As Boolean)
DisplayOn: Legt fest, ob die Ausgabe an das Display aktiv sein soll.

StaticIndicator(Indicator as Boolean)
?
Indicator: ?

EntireDisplayPower(Provide As Boolean)
Schaltet das gesamte Display an/aus.
Provide: True schaltet das Display an, False schaltet es aus.

Standbydisplay
Versetzt das Display in den Stand-by-Modus. Es lässt sich momentan nur über Init wieder "aufwecken".

InitDisplayLine(StartAddress As Long)
Dient zum festlegen der Startadresse des Displays.
StartAddress: Legt die Startzeile/-adresse des Displays fest.

SetPageAddress(Address As Long)
Setzt den Cursor auf die Angegebene Page (Zeile).
Address: Gibt die Page an, auf die der Cursor gesetzt werden soll. Die Page entspricht nicht der Zeile auf dem Display. Mehr dazu im Modul.

SetColumnAddress(Address As Long)
Bewegt den Cursor auf die angegebene Spalte.
Address: Gibt die Spalte an, in der der Cursor verschoben werden soll. Bei diesem Display beginnt die Anzeigefläche bei dem Wert 18.

InitFont(FontFile As String) As Boolean
Initialisert die angegebene Schriftart
FontFile: Gibt den vollständigen Pfad der .fnt-Datei an, die geladen werden soll. Mehr Informationen zum Aufbau des Dateiformats findest du in dem Modul.
Der Rückgabewert gibt an, ob das Laden erfolgreich war oder nicht

WriteText(DstPicture As PictureBox, LcdText As String, StartX As Long, StartY As Long, FontTransparent As Boolean = False, FontNegative As Boolean = False) As Boolean
Schreibt den angegebenen Text mit der angegeb. Position in die Picturebox.
DstPicture: Die Picturebox, in die der Text geschrieben wird. Die Picture muss eine DC haben.
LcdText: Gibt den Text an, der in die Picturebox gezeichnet werden soll.
StartX: Die X-Position, bei der der Text beginnen soll (linke Kante des Textes).
StartY: Die Y-Position, bei der der Text beginnen soll (obere Kante des Textes).
FontTransparent: Wenn die Variable True ist, wird der Hintergrund des Textes nicht gezeichnet und somit der Hintergrund des Textes beibehalten. Andernfalls ist der Hintergrund weiß bzw. schwarz (Standardwert: False).
FontNegative: Legt fest, ob die Schriftart negativ gezeichnet werden soll (True). Bei False wird der Text positiv, also wie in der Fontfile angegeben gezeichnet (Standardwert: False).
Der Rückgabewert gibt an, ob der Befehl erfolgreich ausgeführt wurde.

TextLength(LcdText As String) As Long
Berechnet die Länge (in Pixel) des angegebenen Textes.
LcdText: Gibt den Text an, dessen Länge berechnet werden soll.
Der Rückgabewert entspricht der Länge des Textes in Pixel.

WritePic(LcdPicture As PictureBox)
Überträgt den Inhalt der angegebenen PictureBox an das Display.
LcdPicture: Die PictureBox, die das zu übertragende Bild enthält. Die Box muss eine DC besitzen.

WritePicLine(LcdPicture As PictureBox, Ystart As Long, Reverse As Boolean = False)
Überträgt eine Zeile der angegebenen PictureBox an das Display (nur für die interne Verarbeitung)
LcdPicture: Die PictureBox, die das zu übertragende Bild enthält. Die Box muss eine DC besitzen.
Ystart: "Zeile", die an das Display übertragen werden soll
Reverse: Gibt an, ob die Daten horizontal gespiegelt ausgegeben werden sollen (für untere Displayhälfte notwendig - Standardwert: False)

ClearDisplay
Da der Displaycontroller keine Funktion zum löschen des Displays besitzt, muss dies manuell erfolgen.

ShowNoise
Überträgt durch Random() erzeugtes Rauschen auf das Display

Reset()
Setzt die Initial Display Line, Spalten- & Seitenadresse sowie Output Status Selector zurück
Der Displayinhalt wird dabei nicht verändert.

ReverseDisplay(Inverted As Boolean)
Invertiert das Display, ohne die Daten im RAM zu verändern
Inverted: Wenn die Variable True ist, wird die aktive Farbe zu einem schwarzen, die inaktive Farbe zu einem weißen Pixel. Bei False umgekehrt.

TestLcdSpeed() As Currency
Misst die Zeit, die der Computer benötigt, um einen gesamten Displayinhalt (Rauschen) zu übertragen.
Der Rückgabewert entspricht der Zeit in ms (Bei meinem PC [P4, 3.0GHz, Windows XP, ParPort auf SPP] dauert die Übertragung ungefähr 70ms).

Download:
Modul: gLCD.bas (13kB, in gLCD-Beispiel enthalten - Rechtsklick -> "Ziel speichern unter" zum downloaden)
Programmbeispiel: gLCD-Beispiel (VB6 - inkl. 2 Schriftarten)

Falls du eine Schriftart für das Modul erstellt hast, wäre es freundlich, sie mit anderen zu teilen. Selbstverständlich werden die Autoren (auf Wunsch) genannt.