Forum: Mikrocontroller und Digitale Elektronik Bitte um Hilfe bei Befehl an Display eDip160-7


von Markus B. (lordnoxx) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

ich arbeite momentan mit einem eDip160-7 Display. Die Ansteuerung 
erfolgt via SPI Interface. Dank des sehr guten Datenblattes mit vielen 
Beispielen, konnte ich auch schon die ersten ASCII Zeichen an das 
Display übertragen. Ich arbeite mit dem Display im ASCII-Modus. Ein 
Rätsel sind mir aber noch die Befehle für "Formfeed" , "Carriage Return" 
und "Linefeed".

Aus dem Datenblatt (habe ich angehängt) geht hervor, dass diese Befehle 
ohne führende Escapesequenz gesendet werden. Die Codes lauten:

Formfeed:                ^L
Carriage Return:         ^M
Linefeed:                ^J

In meinem C-Code schicke ich an das Display die folgende Zeichenfolge:

char data_example[64]="#TP5,5,hallo1234^J";

Das Display zeigt dann bei Cursorposition (5,5) hallo1234^J. Das "^J" 
wird hier also mit angezeigt. Es sollte aber eigentlich bewirken, dass 
der Cursor in die nächste Zeile springt. Ich habe auch andere Varianten 
versucht, doch ich bekomme den Cursor nicht in die nächste Zeile 
gesetzt.


Ich wäre euch sehr dankbar, wenn ihr mir hier mit einem kleinen Beispiel 
oder Tipps weiterhelfen könntet. Vielleicht bin ich ja einfach auch 
nicht in der Lage, dass Datenblatt richtig zu lesen.

Grüße
Markus

von Krapao (Gast)


Lesenswert?

Du musst das Zeichen ^J senden. Das ist das Zeichen mit dem ASCII-Code 
in 0x0A hexadezimaler Darstellung  bzw. in dezimaler Darstellung 10.
http://www.torsten-horn.de/techdocs/ascii.htm

In einen C-String direkt kannst du das mit einer Escape Sequenz 
einbetten. Hier ein \n oder ein \x0a (hex) oder ein \012 (oktal).

Du wirst aber möglicherweise sehen, dass das nächste Zeichen danach 
nicht am Zeilenanfang ausgegeben wird. Dazu brauchst du zusätzlich das 
^M

von Krapao (Gast)


Lesenswert?

Bsp.
char data_example[64]="#TP5,5,hallo1234\n";

oder mit zusätzlich ^M
char data_example[64]="#TP5,5,hallo1234\r\n";

von Markus B. (lordnoxx) Benutzerseite


Lesenswert?

Hallo und danke für die Hilfe...hat bestens geklappt.

Jetzt habe ich aber noch das Problem, dass Umlaute wie äöüß und z.B. das 
€ Zeichen nicht richtig dargestellt werden. Dies sollte aber laut 
Datenblatt möglich sein. Interessant ist auch, dass wenn ich ein "ä" 
sende, das Display ein "ñ" anzeigt. Beim € erscheint dann "à".

Vielleicht muss ich nochmal hinzufügen, dass ich unter Linux 
programmiere und als Compiler kommt der sdcc zum Zuge.


PS: Mein Code-Editor ist Geany, welches mit UTF-8 codiert.

von Karl H. (kbuchegg)


Lesenswert?

Markus M. schrieb:
> Hallo und danke für die Hilfe...hat bestens geklappt.
>
> Jetzt habe ich aber noch das Problem, dass Umlaute wie äöüß und z.B. das
> € Zeichen nicht richtig dargestellt werden. Dies sollte aber laut
> Datenblatt möglich sein. Interessant ist auch, dass wenn ich ein "ä"
> sende, das Display ein "ñ" anzeigt. Beim € erscheint dann "à".

Das ist nicht wirklich ungewöhnlich.
Verlassen kannst du dich eigentlich nur auf den 7-Bit ASCII Zeichensatz. 
Alles was darüber hinausgeht - macht jeder Hersteller so wie er will. Da 
finden sich dann alle möglichen Zeichen, inklusive japanische (zumindest 
sehen sie so aus), in den verbleibenden 128 möglichen Codes.

Da wird dir nicht viel anderes übrig bleiben, als das deine String 
Ausgabefunktion einfach während der Ausgabe eine Zeichenersetzung 
vornimmt.
Einfach jedes Zeichen vor der Ausgabe untersuchen. Hat es den Code x, 
dann schickst du stattdessen den Code y.

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.