PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie steuert man ein DOGM 163 an?



homer3345
18.05.2011, 20:03
Guten Abend!

Ich habe ein DOGM 163 und bin langsam am verzweifeln!
Seid zwei Wochen bin ich auf der Suche nach einem Beispiel um das Display am Atmega 16 zum laufen zu bringen!:(

Wie steuere ich das DOGM 163 an bzw. gibt es eine lib für den 4 bit Modus?
Hat evtl. jemand schonmal ein DOGM163 zum laufen gebracht und kann mir seinen Quellcode geben?;)

Ich würde mich sehr freuen, wenn mir jemand hilft sonst fliegt das Display irgendwann noch aus dem Fenster!:D

TobiKa
18.05.2011, 20:21
Also im Prinzip wie jedes andere mit nem HD447... auch.
Außerdem ist es im Datenblatt ausführlich beschrieben!

Zeig mal her was du hast! Bisherigen Quellcode UND Beschaltung!


Hat evtl. jemand schonmal ein DOGM163 zum laufen gebracht und kann mir seinen Quellcode geben?
Erwartest du wirklich nen fertigen Quellcode wenn du nicht einmal schreibst in welcher Sprache du programmierst?

homer3345
18.05.2011, 20:47
Ich kann im Datenblatt nur den 8 Bit Modus finden oder hab ich einfach nicht gründlich genug nachgeschaut?

An Quellcode habe ich bisher nichts da ich nirgends was dazu gefunden habe besonders zur intialisierung!

So jetzt zur beschaltung!

D7 = PD6
D6 = PD5
D5 = PD4
D4 = PD3

RS = PD0
RW = PD1
E = PD2

Sorry, ich programiere in C!

homer3345
20.05.2011, 13:09
Kann mir denn keiner helfen?

robocat
20.05.2011, 14:07
Man findet eigentlich massig Dokumentation zu dem Display, allerdings auch massig Leute, die dennoch (wie du) am verzweifeln sind. Das Datenblatt für das Display taugt nicht viel, versuche es mal direkt mit dem Datenblatt für den Controller.

http://www.mikrocontroller.net/topic/180903 (es finden sich dort noch viele andere Threads, die sich mit dem Teil befassen)

Gruesse von der Katze

Hartwig
08.07.2011, 11:37
Das Besondere beim DOGM im 8-bit Modus bei 3.3V Betriebsspannung ist das Timing beim Schreiben.
Das sieht dann beispielswweise so aus:



void LCD_Write(unsigned char data, int8 rs)
{
if(rs)
RS_BIT = 0x0001;
else
RS_BIT = 0x0000;
PMDATA = data;

RW_BIT = 0;
delay_us(4); // Tb
E_BIT = 1;
delay_us(10); // Tm
E_BIT = 0;
// delay_us(1); // Te

delay_us(30);
Nop();
Nop();
Nop();
Nop();
}


Die kritischen Zeiten sind die delays "um das Enable Bit herum". Ein standard 44780-basiertes Display ist da scheinbar toleranter. Das DOGM jedenfalls braucht diese Delays jedoch. (Generell wäre auch empfehlenswert, eine Abfrage-Routine für sein "Busy-Flag" zu nutzen, anstatt delays zu verwenden.)
Ein Workaround wäre auch, entweder das Display mit 5V zu betreiben, oder mit 3.3V die SPI-Ansteuerung zu benutzen. Dort gibt es dieses Problem nicht.

Viel Erfolg,
Hartwig