Forum: Mikrocontroller und Digitale Elektronik Pic/LCD eigene Zeichen anzeigen


von Sven (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

mich interessiert nun mal, wie man eigene Zeichen definiert und
anzeigen kann. Belesen habe ich mich schon etwas, aber ganz zum Erfolg
bin ich noch nicht gekommen. Ich will hier als Test nur mal ein wirres
Zeichen definieren, ohne tieferen Sinn. Ich glaube, das einschreiben
des Zeichens im LCD müsste so gehen. Aber wie kann ich das dann
ausgeben??? Sonderzeichen kann ich ja mit ALT "xxxx" ausgeben. Aber
welche Adresse hat dann das eigene Zeichen? Mit ALT 0000 funktioniert
es schonmal nicht. Danke für nen Tip!

Sven

von Chris (Gast)


Lesenswert?

Hallo,

Für die Darstellung eigener Zeichen des Anwenders sind die ASCII-Codes
$00 bis $07 reserviert. Unter diesem "Zeichen" erscheint dann das
selbst definierte Zeichen. Man kann Bitmuster für 8 verschiedene
Zeichen bei 5 x 8 Matrix  bzw. 4 verscheidene Zeichen bei 5 x 10 Matrix
definieren. Die Zeichen selbst sind zeilenweise aufgebaut.
Beispiel für 5 x 8 Matrix:
Das erste Zeichen definiert man beispielsweise auf Adresse $00. Als
CGRAM-Adresse gibt man folgendes Bitmuster an: Bits 0..2 bestimmen,
welche der acht Zeilen der Matrix gemeint ist, Bits 3..5 geben an,
unter welcher der DDRAM-Adressen $00..$07 später beim Aufruf das
Zeichen erscheinen soll. Bit 0 = LSB
Als CGRAM-Data bestimmen die Bits 0..4 zeilenweise das spätere Aussehen
des Zeichens. Die Bits 5..7 sind nicht relevant. Wo ein Punkt erscheinen
soll, muß eine 1 stehen.

Gruß

von Sven (Gast)


Lesenswert?

Hi Chris,

aber wie kann ich die Zeichen ausgeben? Im Beispielprogramm was ich
oben angehängt hab lade ich entweder mit
movlw 'a' ein Zeichen in den Akku oder gebe für vom normalen
ASCII-Standart abweichende Zeichen ein, indem ich ALT gedrückt halte
und den Zeichencode eingebe, zBsp ALT 0245 für ein ü (danke Fritz &
crazy horse).Aber mit ALT 0000 funktionert das nicht, ich bekomme das
eigenerstellte Zeichen nicht in das .asm hinein. Sicher nur ne
Kleinigkeit, aber über die stolper ich...

Sven

von Chris (Gast)


Lesenswert?

Hallo,

anstatt zu schreiben
"movlw   'H'             ;zum Prüfen nur "Hallo " ausgeben
call    datenout"

müßte es folgendermaßen funktionieren:

movlw   $00     ; Null als hex-Zahl ins Register schreiben
call    datenout

Also nicht ein Zeichen zuweisen, sondern einfach eine Hex-Zahl zwischen
0 und 7 dem entsprechenden Register/Unterprogramm zuweisen.

Gruß

von Sven (Gast)


Lesenswert?

Mein Gott... wenn ich es lese g natürlich. Hab es, um es bei mir
einheitlich zu machen, als 0x00 eingegeben.
Klappt, vielen Dank!

Sven


PS: Das Forum hier ist echt Spitze ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.