"Gradzeichen" und "C" auf LCD Display ausgeben 16*2

Gast #3517631
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?
#3517633
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)
Gast #3517639
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
Gast #3517652
>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.
Gast #3517654
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
Gast #3517674
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.
Gast #3517719
>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.
Gast #3517725
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

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.