HD44780, Problem mit benutzerdefinierten Zeichen

Hallo,

ich habe da ein seltsames Problem mit HD44780 kompatiblem Displays. Ich versuche Benutzerdefinierte Zeichen im CG Ram zu definieren. Das funktioniert auch im Prinzip, aber die Speicherstellen für die ersten

2,5 Zeichen enthalten offenbar nur Nullen:

Ich hab das mit zwei verschiedenen Displays 4x20 ausprobiert, beide von Reichelt. Einmal das blaue Displaymodul und einmal das grüne.

Nach der Grundinitialisierung schreibe ich zunächst ein 0x40 in das Controlregister, anschließend das Bitmuster in das Datenregister.

Zu Testzwecken hab ich 00010101 in die Speicherstellen 00-3F geschrieben. Anschließend drucke ich die Zeichen #0 bis #7 auf das Display. Dabei bleiben bei den ersten beiden Ziffern die Pixel alle aus. Vom dritten Zeichen sehe ich die untere Hälfte, danach die vollständigen Zeichen.

Hat da jemand einen Tip für mich?

Hier ein paar Codeschnipsel. Interessant wird es ganz unten. Die Delays hab ich zu Testzwecken eingebaut.

Gruß Stefan DF9BI

---------------------------------------------------------------------------------

void LCD_printcharx(char b) // ein Zeichen zum Display schicken zb: '*' { char c; c = b & 0xF0; LCD_PORT = c; SetBit(LCD_PORT,LCD_rs); // dataregister adressieren SetBit(LCD_PORT,LCD_enable); // Daten schreiben, Impuls an enable ClrBit(LCD_PORT,LCD_enable); b=b 1; PORTC.2 = Register // select ->0 = control char c; c = (b & 0xF0); LCD_PORT = c; SetBit(LCD_PORT,LCD_enable); ClrBit(LCD_PORT,LCD_enable); // Komandobyte & Enable=0 Input=Instruction=0 auf Port C legen "bbbb // 0000" b=b

Reply to
Stefan Brröring
Loading thread data ...

Ich hab noch was rausgefunden:

Wenn ich in der Schleife den Zähler auf 40 reduziere, sind die ersten drei Zeichen in Ordung. Ich kann dann aber nur 5 Zeichen neu definieren. Für meine Anwendung brauche ich aber alle 8.

Ich habe dann den Schleifenindex auf 1-8 geändert und nach jedem Zeichen neu adressiert. Das Ergebnis bleibt gleich. Auch eine zusätzliche Wartezeit vor dem LCD_cfg brachte da nichts.

Gruß

Stefan DF9BI

Reply to
Stefan Brröring

So, ich hab mal weiter rumprobiert und einiges umgestellt. Das letzte Experiment bestand darin, zuerst die Zeichen #2..#7 zu definieren und dann die Zeichen #0 und #1.

Der Effekt, der sich daraus ergibt ist, dass die Zeichen #2 - #4 überschrieben werden. #4 dabei zur Hälfte. Ich vermute deshalb, dass ich die Codedefinition nicht ordnungsgemäß abschließe...

Dieser Thread scheint ein Monolog zu werden ;-)

Würde mich trotzdem über Ratschläge freuen.

Gruß

Stefan DF9BI

Reply to
Stefan Brröring

So, manchmal helfen auch Selbstgespräche ;-)

Habs gefunden. Nachdem ich die Bitmuster übertrage, sende ich einfach in das Control-Register ein #0. Damit wird der Zugriff auf das CG Ram beendet.

Gruß

Stefan DF9BI

Reply to
Stefan Brröring

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.