www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Auf LCD schreiben mit Buchstaben statt Hex-Zahl


Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Markus Kempf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;-)

Autor: Merle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese methode funzt bei allen
Buchstaben außer--> Ä,ä / Ö,ö / Ü,ü
die muss du weiterhin als HEx Zahl
eingeben.

Gruß
Beni

Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

dann nimm einfach den Compiler FASTAVR

Befehl z.B.:

lcd " Test"

und fertig.....


Gruss
A. Arndt

Autor: Johannes (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja,... wenn's Dir zu "billig" ist, dann tüffelele ruhig weiter...


Gruss
A. Arndt

Autor: Johannes Raschke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.