Falsche Zeichen bei LCD-Ausgabe

OP #1050147
Lesenswert?

Hallo zusammen

Habe hier ein kleines Problem mit einer LCD-Anzeige. Ich habe das 
AVR-Tutorial durchgelesen, und eigentlich läuft alles einwandfrei, außer 
dass statt Zeichen wie "p" ein "<<" angezeigt wird ("g"->"hocheins", 
"j"->"hochzwei",usw).
Das Datenblatt von HD44780S habe ich stundenlang durchgeguckt. Vor allem 
die Zeichencodetabellen, aber bin leider nicht daraus schlau geworden.
Vielleicht kennt einer dieses Problem schon, und kann mir dabei helfen.

Mit freundlichen Grüßen
Gast #1050243
Lesenswert?

Ich würde hier mal suchen. Sieht irgendwie merkwürdig aus.

lcd_sende:
        swap  temp
        cbr    temp, 0xE0
        rcall  Portexponder_ausgabe
    rcall   lcd_enable
    cbr    temp2, 0xE0
    mov    temp, temp2
        rcall  Portexponder_ausgabe
        rcall   lcd_enable
        ldi    wait_low, low(50*XTAL/ZPS/1000000)
    ldi    wait_high, high(50*XTAL/ZPS/1000000)
        rcall   wait
        ret


Wie sieht die Funktion aus
        rcall  Portexponder_ausgabe
OP #1050374
Lesenswert?

Danke dass du versuchst mir zu helfen holger.

Der Wert 0xE0 -> 0b11100000 kommt daher, weil die ersten 4 Bits für 
Daten stehen, und der Bit4 (RS) wird bei lcd_data auf 1  und bei 
lcd_command auf 0 gesetzt. In temp wird der obere Nibble, und in temp2 
wird am Anfang der untere Nibble gesichert. Das Ganze explizit zu 
erklären wäre zu kompliziert, aber das Programm muss doch richtig 
funktionieren, sonst würden die Zeichen von a bis p (außer g,j,p) alle 
falsch angezeigt werden.

Es muss irgentwie an dem CGROM, und den Tabellen liegen.
Angehängte Dateien:
#1050379
Lesenswert?

Du verwendest die 10x5 Schriftart. Das Display sieht auch so aus, als 
wenn es 11 Pixel pro Zeile hätte (und nicht nur 8 wie normale Displays.)
Eventuell sind da diese Zeichen anders belegt, da die p,g,j usw. mit 
voller Höhe, speziell für den 11 Zeilen Modus weiter hinten liegen. 
Versuch mal den Wert 230, das sollte ein p sein.
Gast #1050385
Lesenswert?

>Das Ganze explizit zu erklären wäre zu kompliziert

Mir ist nichts zu kompliziert ;)

>, aber das Programm muss doch richtig
>funktionieren, sonst würden die Zeichen von a bis p (außer g,j,p) alle
>falsch angezeigt werden.

Das ist richtig. Also diese "hocheins" oder "hochzwei"
sind gelegentlich im oberen Zeichensatz eines LCD zu finden.
Dazu müsste aber D7 im Datenbyte gesetzt sein.

Was ist denn das für ein Display?
OP #1050564
Lesenswert?

Also, ich habe jetzt alle möglichen Zeichen durchprobiert, und das 
Programm nochmals kontrolliert.

Die Werte "230, D7" sind leider auch falsch.

Ist es möglich den CGROM Speicher irgendwie umzuschreiben?
Oder, was ich noch garnicht begriffen habe, wie man zwischen den beiden 
Tabellen (A00,A02) umschaltet?
Die Beiden scheinen irgendwie vermischt zu sein! Denn statt das 
"Ohm"-Zeichen aus A00 wird das "drei viertel"-Zeichen aus A02 angezeigt.

Die Displaybezeichnung lautet: GB-1494V-0
Habe es aus einem Laserdrucker ausgebaut.

Hoffe ihr könnt mir helfen, wäre schade das Ding einfach wegzuschmeißen.
Angehängte Dateien:
#1050780
Lesenswert?

Valentin R. wrote:
> Ist es möglich den CGROM Speicher irgendwie umzuschreiben?

Nein. Wie der Name schon sagt, ist es ein bei der Herstellung fest 
eingprogrammiertes ROM.

> Oder, was ich noch garnicht begriffen habe, wie man zwischen den beiden
> Tabellen (A00,A02) umschaltet?

Garnicht. Das sind verschiedene Versionen des Chips, die hinten 
aufgedruckt sind (beim orginalen 44780). Das einige was du machen 
kannst: Die 8 CGRAM Stellen beschreiben.

> Die Beiden scheinen irgendwie vermischt zu sein! Denn statt das
> "Ohm"-Zeichen aus A00 wird das "drei viertel"-Zeichen aus A02 angezeigt.
>
> Die Displaybezeichnung lautet: GB-1494V-0
> Habe es aus einem Laserdrucker ausgebaut.

Das ist nicht die Bezeichnung sondern eine Brandschutzklasse für das 
Platinenmaterial. Oft steht da keine Bezeichnung drauf, wenn es 
kundenspezifisch ist. Dann könnte auch das CGROM kundenspezifisch sein 
(spezielle Cursorformen usw.) Ist denn ein orginalen 44780 verbaut 
(falls ja, wie lautet dessen genaue Bezeichnung), oder ist der Chip 
direkt gebondet (nur ein runder Klecks auf der Platine).

Ich würde ein kleines Programm schreiben, das nacheinander alle Zeichen 
aus dem Zeichensatz ausgibt (immer 16 pro Zeile). Irgendwo müssen das 
p,q,j usw. versteckt sein.
Gast #1050794
Lesenswert?

tja, was heisst zu schade....
Wenn das Ding nicht so richtig macht, was es soll, würde ich da gar 
nicht viel Arbeit investieren, hau weg.
Die Dinger bekommt man für 2-3€, ist es also wirklich nicht wert, da 
viel zu investieren - es sei denn, der EHrgeiz hat dich gepackt.
Pollin 120 545, 1,95€.
#1050846
Lesenswert?

Valentin R. wrote:
> Danke dass du versuchst mir zu helfen holger.
>
> Der Wert 0xE0 -> 0b11100000 kommt daher, weil die ersten 4 Bits für
> Daten stehen, und der Bit4 (RS) wird bei lcd_data auf 1  und bei
> lcd_command auf 0 gesetzt. In temp wird der obere Nibble, und in temp2
> wird am Anfang der untere Nibble gesichert. Das Ganze explizit zu
> erklären wäre zu kompliziert, aber das Programm muss doch richtig
> funktionieren, sonst würden die Zeichen von a bis p (außer g,j,p) alle
> falsch angezeigt werden.
>
> Es muss irgentwie an dem CGROM, und den Tabellen liegen.

Mit 0xE0 werden aber die obersten 3 Bit maskiert. Muss es nicht ein 0xF0 
sein?
#1050881
Lesenswert?

@Valentin: Herzlichen Glückwunsch. Ein Display mit Codetabelle A02 zu 
bekommen, ist ein echter Glücksfall, da dieses Display so einige west- 
und osteuropäische Sonderzeichen sowie einiges an weiteren Zeichen 
mitbringt, die z.B. in Meßgeräten recht nützlich sind.

Ich hänge mal das Datenblatt vom Controller an, auf Seite 18 ist die 
Zeichensatztabelle. Übrigens, bei einen A00-Display würden in deinem 
Bild statt der hochgestellten Ziffern japanische Schriftzeichen stehen. 
Für Umlaute muß grundsätzlich umgemappt werden, der HD44780 entstand zu 
einer Zeit, als es den IBM-PC noch nicht gab. Ergo paßt der Zeichensatz 
vom PC nicht 1:1 aufs Display. Da der A02-Zeichensatz keine 5x10-Zeichen 
hat, kann man das Display gleich als 5x8 initialisieren.

Nochwas, Displays mit dem A02-Zeichensatz sind extrem selten, ich habe 
schon einiges an Displays verbaut/gesehen, ein A02 war nie dabei, A00 
sind dagegen der Normalfall.

Gruß
Jadeclaw.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren