Hallo zusammen,
Ich habe eine eigene header Datei geschrieben welche ein 2x16 Zeichen LC-Display per µC ansteuert. Der LCD Controller ist ein HD44780, der µC welchen ich verwende ein ATmega32.
Folgendes:
Ich kann die Zeichen aus dem Datenblatt 0x21 bis 0xDF ohne Probleme an jeder Stelle auf dem Display schreiben, überschreiben, und löschen.
Mit z.B. den Umlauten, Griechischen Buchstaben oder dem Blocksymbol kann ich das nur dann, wenn diese Symbole nicht an erster Stelle der Zeile stehen.
Ich bekomm diese Symbole also in das Display, kann sie aber nur dann überschreiben wenn sie NICHT an erster Stelle in der jeweiligen Zeile stehen.
Das einzige das funktioniert ist der Befehl clear Display, welcher die komplette Anzeige löscht.
Und genau das würde ich gerne vermeiden.
Ein leerzeichen drüber zu schreiben geht leider auch nicht.
void lcdSendData (char output[], int row, int cursorPosition) {
int i;
int capacity = strlen(output); // determines the number of values to be written
PORTD |= (1<<PD2);
PORTC = row;
isBfSet();
PORTD &= ~(1<<PD2);
setCursorPosition(cursorPosition, row);
for(i = 0; i < capacity; i++) {
PORTD |= (1<<PD0);
PORTD |= (1<<PD2);
PORTC = output[i];
isBfSet();
PORTD &= ~(1<<PD2);
PORTD &= ~(1<<PD0);
}
}
Alles anzeigen
Vielleicht hat jemand eine idee.
Hier ist mal ein auszug aus meinem quellcode.
Für hilfreiche Kritik was das Problem angeht bin ich sehr dankbar.
Schönen Sonntag!