Hallo,
ich habe ein Problem mit einer angepassten Lib von Fleury und dem
LCD2004. Ich habe es mit 2 verschiedenen getestet
QC2004A
http://site.gravitech.us/MicroResearch/Others/LCD-20x4B/HD44780.pdf
J204A
http://www.systronix.com/access/Systronix_20x4_lcd_brief_data.pdf
1 | #define LCD_WRAP_LINES 0
|
2 |
|
3 | LCD_START_LINE1 0x00
|
4 | LCD_START_LINE2 0x40
|
5 | LCD_START_LINE3 0x14
|
6 | LCD_START_LINE4 0x54
|
Abweichende Adressen habe ich nicht gefunden.
Das ansteuern über lcd_gotoxy geht richtig!
1) Versuch
1 | /*
|
2 | #define LCD_WRAP_LINES 0
|
3 | */
|
4 |
|
5 | lcd_clrscr();
|
6 | lcd_home();
|
7 |
|
8 | char buf[] = "00000000000000000000\n11111111111111111111\n22222222222222222222\n33333333333333333333";
|
9 | char ic = 0;
|
10 |
|
11 | while (buf[ic] != '\0') {
|
12 |
|
13 | lcd_putc(buf[ic++]);
|
14 | gpioDelay(150000);
|
15 | }
|
Ausgabe auf dem Display
Beginnt in Zeile 1 und schreibt durchgehend 0, danach geht es in Zeile
4(!) und schreibt hier durchgehend 1.
Schreibt in die 2. Zeile 2 und danach schreibt er 3 über die 0 aus Zeile
1
2) Versuch
Ich nehme aus char buf[] jeweils eine Zahl raus, so dass es pro Zeile 19
Zeichen sind.
Hier wird alles korrekt ausgegeben, nur dass halt das Letzte Zeichen
jeder Zeile nichts anzeigt (logisch bei 19 Zeichen)
3) Versuch
Nun aufbauen auf Versuch 2 jedoch mit #define LCD_WRAP_LINES 1
Nun wird Zeile 1 mit 0 gefüllt und Zeile 2 mit 1 gefüllt. Alle weiteren
Zeichen werden in Zeile 2 geschrieben
4) Versuch
Nun wie in Versuch 3 aber ohne Linefeed.
Er schreibt in die 1. Zeile 0 bis auf das letzte Zeichen, dieses ist die
erste 1. Das läuft alle korrekt bis zu Zahl 2 in Zeile 3. Mit der Zahl 3
springt er wieder in der ersten Zeile und überschreibt diese.
Könnte jetzt noch weitere Test ausführen, aber ich komme nicht auf einen
guten Nenner.
Was gewünscht ist:
Wenn String länger ist als die Zeile (20 Zeichen) soll er in die nächste
optische Zeile (nicht intern) springen und weiterschreiben.
Kommt ein \n vor, soll er ebenfalls in die nächste optische Zeile
wechseln.
Hat jemand solche Probleme schon gehabt?