Probleme Dog Display

Gast #3082106
Lesenswert?

Guten abend.

Ich kämpfe seit einigen Tagen mit dem Datenblatt vom Dog162 und mit 
google. Die Beschaltung im Datenblatt ist ja nicht so klar dargestellt, 
wie ich finde. Daher bitte ich um eure Hilfe.

Das Display würde ich gerne im 4-Bit Modus an 3,3V betreiben. Anschluss 
wie folgt:

-Display-    -Mega8-
D7          PD4 (XCK/T0)
D6          PD5(T1)
D5          PD6(AIN0)
D4          PD7(AIN1)
D3 - D0     an VCC
E           PD3(INT1)
RS          PD2(INT0)
R/W         ???


Kann ich R/W an GND anschließen? Fürs Schreiben muss eine 0 gesetzt 
werden (Datenblatt ST7036)
#3082107
Lesenswert?

Harley schrieb:
> Guten abend.
>
> Ich kämpfe seit einigen Tagen mit dem Datenblatt vom Dog162 und mit
> google. Die Beschaltung im Datenblatt ist ja nicht so klar dargestellt,
> wie ich finde. Daher bitte ich um eure Hilfe.
>
> Das Display würde ich gerne im 4-Bit Modus an 3,3V betreiben. Anschluss
> wie folgt:
>
> -Display-    -Mega8-
> D7          PD4 (XCK/T0)
> D6          PD5(T1)
> D5          PD6(AIN0)
> D4          PD7(AIN1)

Das ist keine gute Idee.
Halte die Reihenfolge gleich. Wenn das eine aufsteigend nummeriert ist, 
dann lass auch das ander in gleicher Reihenfolge nummeriert sein. Ja, 
man kann das natürlich in Software wieder ausgleichen. Aber wenn du 
sowieso auf Kriegsfuss stehst, musst du dir nicht auch noch Prügel 
zwischen die Beine werfen.

> D3 - D0     an VCC

Steht das im Datenblatt, dass du das tun sollst?

> E           PD3(INT1)
> RS          PD2(INT0)
> R/W         ???
> Kann ich R/W an GND anschließen? Fürs Schreiben muss eine 0 gesetzt
> werden (Datenblatt ST7036)

Wenn du Write nicht brauchst, dann kannst du das machen.
Gast #3082118
Lesenswert?

D0 - D3 sind im Datenblatt an 3,3V angeschlossen.

Also:

-Display-    -Mega8-
D7          PD7(AIN1)
D6          PD6(AIN0)
D5          PD5(T1)
D4          PD4 (XCK/T0)
D0 - D3     VCC
E           PD3(INT1)
RS          PD2(INT0)
R/W         GND

Kann ich das Dog so beschalten, ohne große Probleme bei der 
Proragmmierung zu bekommen oder sollte ich mit E an PD0 und RS an PD1 
anfangen und dann bis PD7 der Reihe nach die Pins belegen?
#3082120
Lesenswert?

ATMEL schrieb:
> D0 - D3 sind im Datenblatt an 3,3V angeschlossen.

ok. dann mach das auch so.
Im Zweifel weiß der Hersteller immer besser wies geht.


> Kann ich das Dog so beschalten, ohne große Probleme bei der
> Proragmmierung zu bekommen oder sollte ich mit E an PD0 und RS an PD1
> anfangen und dann bis PD7 der Reihe nach die Pins belegen?

Das ist wiederrum egal.
Bei den Datenbits gehts nur darum, dass du nicht 4 Bits in sich spiegeln 
musst um sie am Port auszugeben. Bei den Steuerleitungen wird sowieso an 
jeder Leitung einzeln gewackelt. Und da ist es dann wurscht, ob du an D1 
oder an D3 wackelst. Ein

    PORTD |= ( 1 << PD1 );

unterscheidet sich nicht gravierend von einem

    PORTD |= ( 1 << PD3 );

eine Zahl ist anders, aber der Vorgang an sich ist ja derselbe.


Aber zu derartigen Standard-LCD gibt es doch Tutorien und auch fertigen 
Code zu Hauf. Normalerweise ist das eine Sache auf ein paar Minuten, je 
nachdem wie 'kompatibel' das LCD wirklich ist.
#3082124
Lesenswert?

Harley schrieb:

> Ich kämpfe seit einigen Tagen mit dem Datenblatt vom Dog162 und mit
> google. Die Beschaltung im Datenblatt ist ja nicht so klar dargestellt,
> wie ich finde.

Darf man wissen, was du vermißt? Der ST7036 ist ja weitestgehend 
kompatibel zum HD44780, der der Industriestandard für alphanumerische 
LCD ist. Und zun diesem Controller gibt es nun wirklich mehr als genug 
Tutorials, Anleitungen, fertige Libraries etc. Siehe z.B. hier: 
HD44780

> Das Display würde ich gerne im 4-Bit Modus an 3,3V betreiben. Anschluss
> wie folgt:
>
> -Display-    -Mega8-
> D7          PD4 (XCK/T0)
> D6          PD5(T1)
> D5          PD6(AIN0)
> D4          PD7(AIN1)

Blöde Idee. So mußt du nicht nur das Low-Nibble verschieben, um eine 
8-Bit Übertragung in zwei Zyklen zu realisieren, du mußt auch noch 
einzelne Bits jonglieren. Was spricht gegen D7..D4 = PD7..PD4 ?

> E           PD3(INT1)
> RS          PD2(INT0)
> R/W         ???
>
> Kann ich R/W an GND anschließen? Fürs Schreiben muss eine 0 gesetzt
> werden (Datenblatt ST7036)

Kann man machen. Allerdings kann man dann nicht vom Display lesen. Weder 
aus dem Display-RAM noch aus dem Character-RAM. Und man kann 
insbesondere das Busy-Flag nicht auslesen, weswegen man nach jedem 
Befehl der länger dauert (z.B. CLR oder auch HOME) die maximale 
Ausführungszeit abwarten muß. Auch wenn das Display eigentlich viel 
schneller wäre. Mich würde das stören.


XL
Gast #3082134
Lesenswert?

Es geht hier eher um die Hardwareplanung. Bevor ich ätze möchte ich 
sicher gehen, das meine Displaybeschaltung so auch korrekt ist. Da ich 
in dieser Materie nicht so bzw. gar nicht fit bin suche ich Hilfe, damit 
ich "Verdrahtungsfehler" ausschließen kann, da ich denke, das die 
Programmierung für einen absoluten Anfänger haarsträubend wird.
Gast #3082137
Lesenswert?

Um die Kommunikation auf Datenebene zu vereinfachen solltest du die 
Datenpins des Display in passender Korrespondenz beschalten (Wie es Karl 
beschrieben hat)

D7 - PX7
D6 - PX6
D5 - PX5
D4 - PX4

Für E/RS/R!W kannst du dir beliebige Pins aussuchen und passend 
definieren.
Du musst dann nur dann deine Ansteuerungsroutine daran anpassen ohne 
dich großartig auf dem Kopfstellen zu müssen.

Ein einfaches Beispiel:
1
#define   LCD_RS              PD4    
2
#define   LCD_EN              PD3
3
#define   LCD_RW              PD2
4

5
#define   LCD_IODDR           DDRD
6
#define   LCD_IOPORT          PORTD
7
#define   LCD_DATAPORT        DDRC
8
#define   LCD_DATAPORT        DDRC

Kannst dir hier mal was dazu ansehen: Vielleicht hilft es dir dann eine 
Vorstellung davon zu bekommen wie man das ganze clever verschalten kann:
(Der ST Controller ist abgesehen von ein paaar Sonder Features zum HD 
kompatibel wie Axel es schon beschrieben hat)

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung

Harley schrieb:
> Es geht hier eher um die Hardwareplanung. Bevor ich ätze möchte ich
> sicher gehen, das meine Displaybeschaltung so auch korrekt ist. Da ich
> in dieser Materie nicht so bzw. gar nicht fit bin suche ich Hilfe, damit
> ich "Verdrahtungsfehler" ausschließen kann, da ich denke, das die
> Programmierung für einen absoluten Anfänger haarsträubend wird.

Warum tust du dir dann eine 4Bit Ansteuerung an um dir noch mehr 
Probleme zu machen? :>
#3082147
Lesenswert?

Harley schrieb:
> Es geht hier eher um die Hardwareplanung. Bevor ich ätze

Bevor man ätzt, probiert man das Zeug erst mal so aus!
So ein Display ist doch mit einem Flachbandkabel ruck zuck 
angeschlossen.

Dann probiert man das mal, programmiert sich eine Ansteuerung (oder 
benutzt eine fertige) und erst dann, wenn man gesehen hat, dass es so 
funktioniert, dann ätzt man sich eine Platine!
Gast #3082162
Lesenswert?

Im Anhang ist eine Ansteuerungsroutine für das DOGM Display. Inklusive 
das Laden von Benutzerdefinierten (8) Zeichen im CGRAM welche man 
praktisch im Flash des Mikrocontrollers abspeichern kann, sowie der 
Einstellung des Double Height Fonts.

Du musst nur noch die Funktion LCD_Data() und LCD_Command() für dich
entsprechend anpassen.

Ich garantiere aber nicht das alles Funktioniert da diese Routine für 
ein EA DOGM163 ist.
Angehängte Dateien:
Gast #3082173
Lesenswert?

>Um die Kommunikation auf Datenebene zu vereinfachen solltest du die
>Datenpins des Display in passender Korrespondenz beschalten (Wie es Karl
>beschrieben hat)
>
>D7 - PX7
>D6 - PX6
>D5 - PX5
>D4 - PX4

Wozu? Wenn das LCD Tutorial von dieser Seite einfach mal
konsequent eine Routine mit beliebiger Pin und Portbelegung
zeigen würde, wären wahrscheinlich 90% der Threads zu
Problemen mit LCDs unnötig. Das kostet einen Witz von Flash
mehr.

Ist nur meine Meinung.
#3082190
Lesenswert?

holger schrieb:
>>Um die Kommunikation auf Datenebene zu vereinfachen solltest du die
>>Datenpins des Display in passender Korrespondenz beschalten (Wie es Karl
>>beschrieben hat)
>>
>>D7 - PX7
>>D6 - PX6
>>D5 - PX5
>>D4 - PX4
>
> Wozu?

Lass uns froh sein, wenn sie das erst mal so hinkriegen und das LCD 
korrekt durch die Initialisierung bringen.
Selbst mit fertigen Tutorial-Routinen ist das ja nicht immer als gegeben 
anzunehmen.

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