Problem mit LCD-Darstellung

chaki

Neues Mitglied
06. Okt. 2010
3
0
0
Sprachen
Hallo,

gerade habe ich versucht ein LCD (2x16) (Bestellt bei ELV: 54184) anzusteuern. Jedoch habe ich noch leichte Probleme damit.
Zwar funktioniert die Anzeige im Prinzip schon, leider habe ich allerdings noch ein Problem den Zeilenwechsel bei längeren Strings vorzunehmen. Bei kurzen Strings ist dies allerdings kein Problem.
Hier mal einige Fakten, an die ich bereits dachte / probiert habe:
0.) Sprache: C
1.) Strings und Zeichen sind auf dem LCD darstellbar, daher nehme ich an, dass die Initialisierung korrekt ist.
2.) Cursorposition beeinflussbar. Dies funktioniert auch wunderbar, solange ich Strings mit einer maximalen Länge von 16 Zeichen darstelle. Übergebe ich längere Strings, z.B.:
lcd_putstring("012345678u012345678v012345678w012345678x012345678y01234");
wird im Display nur folgendes angezeigt:
1.Zeile: 012345678u012345
2.Zeile: 012345678y01234
Also Anfang und Ende des Strings.
die Funktione für das Cursorsetzen ist folgende:
Code:
void lcd_cursor_redirect()
{
	curpos++;

	if (curpos == 0x10)	{curpos=0x40; lcd_command2init(LCD_DDRAM_ADDR + 0x40);}
	if (curpos == 0x50)	{curpos=0x00; lcd_command2init(LCD_DDRAM_ADDR + 0x00);}

}

Die Variable "curpos" ist global bekannt. Die Funktion der Wertübergabe (lcd_command2init(...)) habe ich auch überprüft, indem ich im Hauptprogramm damit den Cursor an eine bestimmte Stelle setze und dieser dann dort auch fröhlich blinkt.
Bin mir nicht ganz sicher zu den hexadezimalen Adressen, da im Datenblatt (auf ELV-Seite mit obiger Bestellnummer einsehbar) keine Angaben zum Adressraum gemacht wurden. Also nahm ich den üblichen HD44780 kompatiblen Raum an!?
1.Zeile:0x00
2.Zeile:0x40

Wäre wirklich hilfreich, wenn jemand Vorschläge hätte, woran es liegen könnte. Vielleicht habe ich auch einfach was wichtiges übersehen/vergessen.
Sollten noch Angeben fehlen, gebt mir kurz Bescheid.

Danke schon mal.
 
Habe den "Fehler" mittlerweile selber gefunden, wollte aber den Eintrag nicht ohne Rückmeldung hinterlassen.
Kurz zur Lösung:
Innerhalb der Stringübergabe existiert eine while-Schleife, welche solange durchlaufen wird, bis das Stringendezeichen gefunden wird. Unmittelbar danach, erfolgt der Aufruf der curpos-Funktion. Allerdings hatte ich vergessen, beide Sachen in einem Block zusammenzufassen (Klammern), so dass die curpos-Funktion nur einmal aufgerufen wurde.

Also Klammern ergänzt und schon funktionierte es.

Danke an die jenigen, die sich bereits Gedanken gemacht hatten.
 
Hallo Chaki!

Auch wenn du selber schneller gewesen bist, als die "Herrn C-Programmierer" dir antworten konnten, möchte ich noch schnell zwei Dinge loswerden....

1.) Willkommen im AVR-Praxis Forum! :ciao:

2.) Danke, für die Rückmeldung und Lösung!


Gerade für Punkt 2 gebührt dir ein dickes Danke, weil dies leider nicht selbstverständlich ist.
Die meisten vergessen leider hier ihren Beitrag zu ergänzen, wenn sie selbst das Problem gelöst haben. :eek:

Wünsche dir also weiterhin viel Erfolg beim Probleme beseitigen! ;)


Grüße,
Cassio
 
Danke, für das Lob und den Willkommensgruß.
Lese zwar schon recht lange immer mal wieder in diesem Forum, hatte allerdings bisher keinen Grund mich "einzumischen". Deshalb hatte ich auch vergessen zuerst ein freundliches Hallo an das Forum zu richten. Dies will ich hiermit natürlich nachholen.

Also, bis demnächst mal wieder....
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)