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