Forum: Mikrocontroller und Digitale Elektronik Probleme Dog Display


von Harley (Gast)


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)

von Karl H. (kbuchegg)


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.

von Nachtaktiver (Gast)


Lesenswert?

Wo liegt nun eigentlich genau dein Problem?

Den R/W Pin kannst du ja einfach mitanschließen, auch wenn du diesen in 
der Display Ansteuerung vernachlässigst.

von ATMEL (Gast)


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?

von Karl H. (kbuchegg)


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.

von Axel S. (a-za-z0-9)


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

von Spess53 (Gast)


Lesenswert?

Hi

Warum tut man sich den 4-Bit-Mode an, wenn man das Display mit weniger 
Leitungen über SPI ansteuern kann?

MfG Spess

von Harley (Gast)


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.

von Nachtaktiver (Gast)


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? :>

von Harley (Gast)


Lesenswert?

Die 4-Bit Ansteuerung war eine Empfehlung.

von Karl H. (kbuchegg)


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!

von Harley (Gast)


Lesenswert?

Das stimmt auch wieder. Jedenfalls habt ihr mir schon sehr 
weitergeholfen und ich werde mir morgen ganz in Ruhe das Tutorial zur 
LCD-Ansteuerung durchlesen.

Danke!

von Spess53 (Gast)


Lesenswert?

Hi

>Die 4-Bit Ansteuerung war eine Empfehlung.

Manche wissen es halt nicht besser.

MfG Spess

von Nachtaktiver (Gast)


Angehängte Dateien:

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.

von Nachtaktiver (Gast)


Lesenswert?

Vergessen: Die Initialisierung musst du natürlich auch anpassen.

von holger (Gast)


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.

von Karl H. (kbuchegg)


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.

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.