Auf LCD schreiben mit Buchstaben statt Hex-Zahl

Gast #62500
Hallo,

habe eben angefangen mir eine kleine Routine zur Ansteuerung eines
HD44780 Displays zu schreiben. Problematisch ist nur dass ich z.Z
Buchstaben als Hex Zahl auf das Display schreiben muss. Das ist mir auf
die Dauer zu umständlich. Mangels C Kenntnisse weis ich aber auch nicht
wie man die Zeichentabelle da am elegantesten unterbringt. Ich hoffe
mir kann mal jemand auf die Sprünge helfen.

Stelle mir das so write_command('hallo welt'); mäßig vor.

mfg
johannes
Gast
Ich hab da einen Heisen Tip für dich. Der Hexwert mit welchem jedes
Zeichen im speicher des µC abgelegt wird entspricht (in der Regel)
genau dem wert welchen Du an das Display schiken musst.
Deutlicher: Z.B. der ASCII Wert der Zeichens "K" entspicht 4B. Jedes
standart Display giebt ein "K" aus wenn mann ihm 4B schikt.
Wenn du also eine String hast musst du nur die einzelnen Zeichen
nacheinander an das Display schiken, eine umwandlung ist nicht nötig.
Sprich wenn du bissher mit deiner Routine Hexwerte übertargen hast
müsste diese genau das gleiche gute Ergebinns liefern wenn du statt der
Hexzahl ein Charakter in Hochkommas ('A') reinsetzt.
Hoffe das war einigermasen verständlich ausgedrückt ;-)
Gast
Ja ich wollte es aber schon irgendwo selber machen lcd "test" is mir
zu billig. Ich hab das jetzt soweit auch hinbekommen und es
funktioniert tatsächlich gut :)

Hab allerdings jetzt n problem wo ich mit meiner Logik einfach nicht
weiterkomme. Und zwar scheint mein Display bei der Home Adress
irgendwie  aus dem Rahmen zu fallen. Abgesehen davon dass ich den
normalen go to home position befehl nicht nutzen kann sondern die
position mit 0x80 auf  linie 1 spalte 1 setzen muss stimmt nach
lcd_clear gar nichts mehr. statt zeile 3 wird mir dann in zeile 1
geschrieben und das erste zeichen geht auch noch flöten. kann sein dass
ich mich blöd dran stelle aber irgendwie blick ichs nicht. vileicht
weis ja jemand wodrans liegt. würd mich über ne antwort freuen.

Mit freundlichen Grüßen
Johannes
Angehängte Dateien:
Gast
Ich will es nicht beschwören, aber ich meine, einen String legt man mit
C so an:

char mein_string[] = "Blabla";

oder so:

char *mein_string;
malloc (mein_sting, 80); /*max. Länge des Strings*/
*mein_string = "blabla";

so etwa ging das...

Diesen String, bzw. den char-Zeiger kannst Du dann an die
Ausgabe-Funktion übergeben:

print_lcd(mein_string)

die könnte dann so aussehen:

void print_lcd(char *str)
{
   for (int i=0; str[i] != 0; i++)
   {
      lcd_data(str[c]);
    }
}

wobei lcd_data ein einzelnes Zeichen ausgibt....

Viele Grüße

Johannes
Gast
Hallo

die String-Ausgabe funktioniert mitlerweile hervoragend ! Was zur Zeit
überhaupt nicht funktioniert ist clear display da danach die Position
an Line 3 Spalte 1 üüüberhaupt nicht mehr stimmt. Statt dessen schreibt
er in Zeile 1 Spalte -1 ?!? Vileicht ist das ja was typisches ... ich
probier dann mal weiter.

mfg
Gast
Hi Johannes!

>>die String-Ausgabe funktioniert mitlerweile hervoragend ! Was zur
Zeit
überhaupt nicht funktioniert ist clear display da danach die Position
an Line 3 Spalte 1 üüüberhaupt nicht mehr stimmt. Statt dessen
schreibt
er in Zeile 1 Spalte -1

Das clear display sollte den Cursor auch in Zeile 1, Spalte 1 setzen.
Steht zumindest im Datenblatt des HD44780. Und dass das erste Zeichen
flöten geht, liegt wahrscheinlich am Timing, nach clear display muss
eine längere Pause (20ms ?, weiß nicht genau) kommen. Wenn Du das
Display nur löschen willst, ist manchmal ein definiertes Schreiben von
Leerzeichen schneller.

Sven

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.