Hi,
hab mir aus der Bucht das hier gekauft:
http://www.ebay.de/itm/380630838372?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649
Wie üblich bei Artikeln aus Fernost ohne Datenblatt.
Habe mich jedoch an folgende beiden Links gehalten und konnte es mit 
Leichtigkeit innerhalb weniger Minuten ansteuern. (Hab einen Teensy++ 
2.0 genutzt)
http://www.mikrocontroller.net/attachment/64073/lcd.pdf
http://www.geocities.com/dinceraydin/lcd/custom.htm
Nun wollte ich noch schnell die 8 benutzerdefinierten Zeichen 
programmieren und kam dabei auf einen Nebeneffekt.
Ich brauchte einen ansteigenden Balken zur Visualisierung verschiedener 
Datensätze.
Folgendes habe ich probiert:
1  | void define_lcd_bars()
  | 
2  | {
 | 
3  |   lcd_sendcmd(0b01000000);//An die Speicheradresse 64 springen (UserDef)
  | 
4  |   lcd_sendchar(0b00000000);//oberste Matrixzeile schreiben
  | 
5  |   lcd_sendchar(0b00000000);
  | 
6  |   lcd_sendchar(0b00000000);
  | 
7  |   lcd_sendchar(0b00000000);
  | 
8  |   lcd_sendchar(0b00000000);
  | 
9  |   lcd_sendchar(0b00000000);
  | 
10  |   lcd_sendchar(0b00000000);
  | 
11  |   lcd_sendchar(0b00011111);//unterste Matrixzeile schreiben
  | 
12  |   lcd_sendcmd(0b10000000);//An die Adresse 128 springen (normale Ausgabe)
  | 
13  |         ...
  | 
14  | }
  | 
Scheint soweit auch zu funktionieren, da ich mit "lcd_sendchar(0);" dann 
ein Zeichen erhalte, welches genau wie das definierte ausschaut.
Nun habe ich den Code erweitert:
1  | void define_lcd_bars()
  | 
2  | {
 | 
3  |   lcd_sendcmd(0b01000000);//An die Speicheradresse 64 springen (UserDef)
  | 
4  |   lcd_sendchar(0b00000000);//oberste Matrixzeile schreiben
  | 
5  |   lcd_sendchar(0b00000000);
  | 
6  |   lcd_sendchar(0b00000000);
  | 
7  |   lcd_sendchar(0b00000000);
  | 
8  |   lcd_sendchar(0b00000000);
  | 
9  |   lcd_sendchar(0b00000000);
  | 
10  |   lcd_sendchar(0b00000000);
  | 
11  |   lcd_sendchar(0b00011111);//unterste Matrixzeile schreiben
  | 
12  |   lcd_sendcmd(0b10000000);//An die Adresse 128 springen (normale Ausgabe)
  | 
13  |   lcd_sendcmd(0b01001000);//An die Speicheradresse 72 springen (UserDef)
  | 
14  |   lcd_sendchar(0b00000000);//oberste Matrixzeile schreiben
  | 
15  |   lcd_sendchar(0b00000000);
  | 
16  |   lcd_sendchar(0b00000000);
  | 
17  |   lcd_sendchar(0b00000000);
  | 
18  |   lcd_sendchar(0b00000000);
  | 
19  |   lcd_sendchar(0b00000000);
  | 
20  |   lcd_sendchar(0b00011111);
  | 
21  |   lcd_sendchar(0b00011111);//unterste Matrixzeile schreiben
  | 
22  |   lcd_sendcmd(0b10000000);//An die Adresse 128 springen (normale Ausgabe)
  | 
23  |         ...usw.
  | 
24  | }
  | 
und bekomme mit:
1  | lcd_sendchar(0);
  | 
2  | lcd_sendchar(1);
  | 
3  | lcd_sendchar(2);
  | 
4  | lcd_sendchar(3);
  | 
5  | lcd_sendchar(4);
  | 
6  | lcd_sendchar(5);
  | 
7  | lcd_sendchar(6);
  | 
8  | lcd_sendchar(7);
  | 
Wie erwartet die richtigen Zeichen.
So weit alles gut. Nun habe ich beim Testen versehenlich mal nicht binär 
incrementiert sondern decimal. (Also das 2. Zeichen in Adresse 
0b01000001 statt 0b01001000 geschrieben; 65 statt 72 usw.)
Das führte dazu, dass die erste Zeile von meinen 2x16 Zeichen Display 
"weiß hinterlegt" war. Also nicht weiß überschrieben, wie es der Curser 
macht, sondern so als ob ich den Kontrast nur für die erste Zeile 
einzelnd einstellen könnte und dieser verstellt wäre.
Nun zur eigentlichen Frage:
Was habe ich dort verstellt und gibt es eine Tabelle mit den Parametern 
für die Adressen 65-126 (ohne 72; 80, 88, 96; 104; 112; 120)
Grüße Oekel