Forum: Mikrocontroller und Digitale Elektronik DOGM081 Display zeigt seltsame Zeichen


von Tobi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein bereits bestehendes funktionierendes Programm umgestrickt.
Bisher war es für ein "Standard" 16x2 Display geschrieben.
Jetzt möchte ich ein DOGM081 Display betreiben und habe versucht die
Initialisierung anzupassen.

Leider klappt das nicht ganz. Nur ein bißchen.

Die Ausgabe "A" sieht so aus "  oa"

Verschiebe ich den Cursor von 0,1 auf 1,1 dann wandert das auch nach 
rechts.
2,1 oder andere Positionen sind nicht effektiv.

Was ich auch nicht verstehe, daß ich bei der Cursor-Zeile 0x40, was 
eigentlich die zweite Zeile sein müsste, verwenden muß. Bei 0x00 kommt 
gar nichts.

Die Ausgabe ist stabil. Und bei anderen Buchstaben kommen auch andere 
Zeichen. Daher glaube ich jetzt mal, daß es kein Verdrahtungsproblem 
ist.

Leider bin ich ein absoluter Anfänger und finde den Fehler einfach 
nicht.

Kann hier mal jemand über den C-Code schauen, ob er was findet ?

Ich hoffe, es ist einigermaßen lesbar.

Viele Grüße
Tobi

von Tobi (Gast)


Lesenswert?

Edit:  Vergessen.
Ich verwende das Display im 4-Bit Modus.
Attiny 2313.

Ups. Und sorry für zwei Attachments.
Ist beides Mal das Gleiche.

von Tobi (Gast)


Lesenswert?

Ist der Fehler zu trivial oder zu langweilig ?

von spess53 (Gast)


Lesenswert?

Hi

>Leider bin ich ein absoluter Anfänger und finde den Fehler einfach
>nicht.

Und dann nimmst du die idiotischste Ansteuerung, die ein Dog-Display zu 
bieten hat. SPI ist wesentlich simpler.
Was mir aufgefallen ist: Du hast am Anfang der Initialisierung nur eine 
Wartezeit von 15ms. Das Datenblatt vom ST7036 verlangt aber 40ms.

MfG Spess

von Tobi (Gast)


Lesenswert?

Hallo Spess,

der Grund dafür ist der, daß die Schaltung schon fix und fertig 
aufgebaut ist. (gedruckte Schaltung)

Leider klappts auch nicht mit 100ms vor der ersten Nachricht.

VG
Tobi

von spess53 (Gast)


Lesenswert?

Hi

>der Grund dafür ist der, daß die Schaltung schon fix und fertig
>aufgebaut ist. (gedruckte Schaltung)

Na und. Es werden doch keine anderen Leitungen als im 4-Bit-Mode 
benutzt.

Übrigens, diese Zeile ist auch etwas merkwürdig:

>   case 1: tmp=0x80+0x40+x; break;    // 1. Zeile

MfG Spess

von Tobi (Gast)


Lesenswert?

spess53 schrieb:
> Na und. Es werden doch keine anderen Leitungen als im 4-Bit-Mode
> benutzt.

Daran siehst Du mal, wie wenig Ahnung ich eigentlich hab... rotwerd

Hm, diese Zeile stammt aus einem 16x4-Display Teil.
Ich dachte, daß die 0x40 je Zeile drauf addiert werden.
Erstaunlicherweise funktioniert diese Routine garnicht,
wenn ich die Zeile "0" verwende. (also nur 0x80+x)

von spess53 (Gast)


Lesenswert?

Hi

>Hm, diese Zeile stammt aus einem 16x4-Display Teil.
>Ich dachte, daß die 0x40 je Zeile drauf addiert werden.

Mit 'lcd_command(0x29);' initialisierst du ein 2-Zeiliges Display

MfG Spess

von Tobi (Gast)


Lesenswert?

Hi,

uhhhh. Da hast Du recht.
Jetzt wo Du es gesagt hast, kann ich die entsprechende Table of Command
auch verstehen.

Jetzt steht da eine 0x21....

Ändert aber leider nichts.

Und die 0x80+x führt immer noch dazu, daß das Display nur Striche in
der obersten Pixelzeile jedes Zeichens darstellt :-(

Viele Grüße
Tobi

von Tobi F. (Gast)


Lesenswert?

Hallo,

ich hab das Problem gelöst.
Nicht nur die erste Zeile war auf 8-Bit eingerichtet. Sondern
auch noch eine weiter... die hatte ich übersehen.

Naja. Und im 8-Bit Modus versteh das LCD 4-Bit Befehle so schlecht.

Danke für den Wink.

Jetzt muß ich mich nur noch mit den selbstdefinierbaren Zeichen 
auseinander setzen.

Viele Grüße
Tobi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.