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:
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.
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.