Hallo zusammen,
wie schon kurz in einem anderen Thread angekündigt kurz eine Hilfestellung zur Ausgabe von benutzerdefinierter Zeichen.
Die Aufgabenstellung entstand als ich mir in den Kopf gesetzt hatte für mein DOG-M LCD-Display 16x3 benutzerspezifische Zeichen für Hoch, Runter, Links, Rechts und Enter zu definieren und diese nicht nur mit dem sonst üblichen
Befehel auszugeben sondern diese auch innerhalb von String zu verarbeiten. Es gab einige Herren in einem anderen Forum die orakelt haben, dass es nicht funktioniert dabei ist die Lösung ganz simpel und einfach.
Ansatz:
Benutzerdefinierte Zeichen mit "Deflcdchar" definieren.In der Regel bieten die LCD-Displays dafür freie Speicherstellen.
Glücklicher Weise lassen sich diese Zeichen genau so ansprechen wie andere Zeichen des Zeichensatzes. BASCOM bietet hier für String ein Konstrukt {xxx} (Achtung: muss immer dreistellig sein) mit dem der Code eines Zeichens übergeben werden kann. Gemacht getan und die Lösung sieht so aus:
Im Anhang findet Ihr eine Abbildung wie die Ausgabe der Beispieltexte auf meinem Display aussieht.
Vielleicht kann einer von Euch den Tipp ja brauchen
Übrigens: Für die Erstellung eigener Zeichen bietet die Oberfläche von BASCOM unter Tools den LCD Designer. Fertige Zeichen werden direkt als Source-Code in den Code übernommen. Jedoch gibt es leider keine Revers-Engineering-Funktion.
Grüße,
Ma
wie schon kurz in einem anderen Thread angekündigt kurz eine Hilfestellung zur Ausgabe von benutzerdefinierter Zeichen.
Die Aufgabenstellung entstand als ich mir in den Kopf gesetzt hatte für mein DOG-M LCD-Display 16x3 benutzerspezifische Zeichen für Hoch, Runter, Links, Rechts und Enter zu definieren und diese nicht nur mit dem sonst üblichen
Code:
LCD CHR(x)
Ansatz:
Benutzerdefinierte Zeichen mit "Deflcdchar" definieren.In der Regel bieten die LCD-Displays dafür freie Speicherstellen.
Glücklicher Weise lassen sich diese Zeichen genau so ansprechen wie andere Zeichen des Zeichensatzes. BASCOM bietet hier für String ein Konstrukt {xxx} (Achtung: muss immer dreistellig sein) mit dem der Code eines Zeichens übergeben werden kann. Gemacht getan und die Lösung sieht so aus:
Code:
'------------------------------------------------------------------------------
' Compilerinstruktionen und Compilerdirektiven
'------------------------------------------------------------------------------
$regfile = "m128def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 32
$framesize = 40
$baud = 38400
' ----- Konfiguration LCD Display -----
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
Config Lcd = 16 * 3 , Chipset = Dogm163v5
'Config Portc = Output ' nicht zwingend erforderlich
'Config Lcdbus = 4 ' nicht zwingend erforderlich
Initlcd
Waitms 100
Cursor Off Noblink
Cls
' ----- Definition benutzerdefinierter Zeichen -----
' Benutzerdefiniertes LCD-Zeichen Pfeil Hoch
Deflcdchar 1 , 4 , 14 , 31 , 21 , 4 , 4 , 4 , 32
' Benutzerdefiniertes LCD-Zeichen Pfeil Runter
Deflcdchar 2 , 4 , 4 , 4 , 21 , 31 , 14 , 4 , 32
' Benutzerdefiniertes LCD-Zeichen Pfeil Links
Deflcdchar 3 , 32 , 6 , 12 , 31 , 12 , 6 , 32 , 32
' Benutzerdefiniertes LCD-Zeichen Pfeil Rechts
Deflcdchar 4 , 32 , 12 , 6 , 31 , 6 , 12 , 32 , 32
' Benutzerdefiniertes LCD-Zeichen Enter
Deflcdchar 5 , 32 , 14 , 17 , 21 , 17 , 14 , 32 , 32
' ----- Teststring zusammenbauen -----
Dim Tempstring As String * 16
Tempstring = "A{001}B{002}C{003}D{004}E{005}"
' ----- Und raus damit zum Dsiplay -----
Locate 1 , 1 : Lcd "Hallo Welt"
Locate 2 , 1 : Lcd Chr(1) ; Chr(2) ; Chr(3) ; Chr(4) ; Chr(5)
Locate 3 , 1 : Lcd Tempstring
' ===== Hauptschleife =====
Do
' Tue nix :-)
Loop
' ===== Ende =====
End
Im Anhang findet Ihr eine Abbildung wie die Ausgabe der Beispieltexte auf meinem Display aussieht.
Vielleicht kann einer von Euch den Tipp ja brauchen
Übrigens: Für die Erstellung eigener Zeichen bietet die Oberfläche von BASCOM unter Tools den LCD Designer. Fertige Zeichen werden direkt als Source-Code in den Code übernommen. Jedoch gibt es leider keine Revers-Engineering-Funktion.
Grüße,
Ma