Forum: Mikrocontroller und Digitale Elektronik "Gradzeichen" und "C" auf LCD Display ausgeben 16*2


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Heinz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich schaffe es nicht ein Gradzeichen auszugeben.

Hier ist mein Code:

lcd_gotoxy(0,0);
itoa(temp,buffer,10);
lcd_puts("Temperatur:");
lcd_puts(buffer);

lcd_gotoxy(0,1);
itoa(f,buffer,10);
lcd_puts("Fahrenheit:");
lcd_puts(buffer);

Ich habe im Datenblatt nachgeguckt und dort im Zeichencode für das 
Gradzeichen rausgefunden, dass es der Hexawert 0xA0 ist.

Habe es mit lcd_puts(0x0A); versucht.

Leider funktioniert das nicht.

Wie schaffe ich es dazu dann das C hinter der Temperatur auszugeben?

von Timmo H. (masterfx)


Bewertung
0 lesenswert
nicht lesenswert
Da lcd_puts für einen nullterminierten String gedacht ist, solltest du 
sowas wie lcd_putc für ein einzelnes Zeichen verwenden (schau dir mal 
die Quelle von lcd_puts an, da wirst du sehen dass dort jedes Zeichen 
einzeln via lcd_putc o.Ä. ausgegeben wird)

: Bearbeitet durch User
von Michael (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Heinz schrieb:
> Habe es mit lcd_puts(0x0A); versucht.

0x0A ist kein String, sondern ein Byte. Und damit kann dein lcd_puts() 
höchstwahrscheinlich nichts anfangen.

von chris (Gast)


Bewertung
0 lesenswert
nicht lesenswert
in asm muss man .db "ßC" schreiben wie es in der hochsprache aussieht 
keine ahnung oder aber du schaust ins DB des LCD's unter CHARAKTERS und 
sendest als command FC= 1111 1101

von CC (Gast)


Bewertung
0 lesenswert
nicht lesenswert
1
char buf[2] = {0xa0, '\0};
2
lcd_puts(buf);

von chris (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ähm vergesst meinen text is bullshit was dort steht

dachte geht um das °zeichen

asche auf mein haupt

von holger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>Ich habe im Datenblatt nachgeguckt und dort im Zeichencode für das
>Gradzeichen rausgefunden, dass es der Hexawert 0xA0 ist.

Bei meinen Displays war das bisher immer 0xDF.
Aber gut möglich das es bei dir 0xA0 ist.

>Habe es mit lcd_puts(0x0A); versucht.

Also gleich doppelt falsch. Wenn schon dann auch lcd_puts(0xA0);
Dann hast du nur noch einen Fehler. lcd_putc(0xA0); und der
zweite Fehler ist weg.

von spess53 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi

>Ich habe im Datenblatt nachgeguckt und dort im Zeichencode für das
>Gradzeichen rausgefunden, dass es der Hexawert 0xA0 ist.

Bei HD44780-Kompatiblen Displays ist es 0xBF.

>Habe es mit lcd_puts(0x0A); versucht.

0x0A ist auch nicht 0xA0.

MfG Spess

von spess53 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi

>Bei HD44780-Kompatiblen Displays ist es 0xBF.

Holger hat Recht. Es ist natürlich 0xDF.

MfG Spess

von Heinz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ok das mit dem Gradzeichen hat funktioniert!

Wie kriege ich es noch hin das "C" bzw "F" vor dem Gradzeichen nach dem 
Temperaturwert erscheint?

Wenn ich es beim ersten lcd_puts dahinter das C einsetze erscheint es 
vor den Temperaturwert.

von chris (Gast)


Bewertung
0 lesenswert
nicht lesenswert
wäre das eine möglichkeit??

lcd_puts("Temperatur:-----°C")

--- als leerzeichen ersetzen

von holger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>wäre das eine möglichkeit??
>
>lcd_puts("Temperatur:-----°C")

Oh man ey.

lcd_puts("Temperatur:-----");
lcd_putc(0xA0); // oder 0xDF
lcd_putc('C');

oder

lcd_puts("Temperatur:-----\xa0C");

oder

lcd_puts("Temperatur:-----\xdfC");

Du brauchst dringend ein C Buch.

von spess53 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi

>wäre das eine möglichkeit??

>lcd_puts("Temperatur:-----°C")

>--- als leerzeichen ersetzen

Nein. Das '°' in deinem String hat den ASCII-Wert 0xB0.

Aber evtl. funktioniert das

lcd_puts("Temperatur:-----",0xDF,"C");

MfG Spess

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.