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)
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.
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.
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?
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.
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
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.
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-AnsteuerungHarley 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? :>
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!
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!
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.
>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.
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.