Hallo,
ich versuche ein EA DOGM132-5 132x32 Pixel Grafikdisplay über SPI
anzusteuern. Doch nicht mal die Initialisierung geht.
Ich verwende die Schaltung auf Seite 4 unten "Low Voltage" mit 9 Volt
Kontrastspannung:
http://www.lcd-module.de/deu/pdf/grafik/dogm132-5.pdf
Reset halte ich dauerhaft auf high über 10 kOhm. A0 ist dauerhaft auf
GND (=Command)
Zur Ansteuerung nehme ich einen PIC18F452 mit 10 MHz
Hier der C-Code. Die Initialisierung ist direkt aus dem Datenblatt
übernommen.
//Alle Pins als Ausgang
set_tris_a(0);
set_tris_b(0);
set_tris_c(0);
set_tris_d(0);
set_tris_e(0);
//SPI einstellen
setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_16);
delay_ms(100);
//Initialisierung "low voltage"
SPI_WRITE(0x40);delay_ms(1);
SPI_WRITE(0xA1);delay_ms(1);
SPI_WRITE(0xC0);delay_ms(1);
SPI_WRITE(0xA6);delay_ms(1);
SPI_WRITE(0xA2);delay_ms(1);
SPI_WRITE(0x2D);delay_ms(1);
SPI_WRITE(0x23);delay_ms(1);
SPI_WRITE(0x81);delay_ms(1);
SPI_WRITE(0x1F);delay_ms(1);
SPI_WRITE(0xAC);delay_ms(1);
SPI_WRITE(0x00);delay_ms(1);
SPI_WRITE(0xAF);delay_ms(1);
delay_ms(1000);
//all on
SPI_WRITE(0b10100101);
delay_ms(1000);
//all off
SPI_WRITE(0b10100100);
while(1)
{}
Achso, das Problem: 1. Nichts passiert. 2. Hab kein Oszi.
Ein paar Fragen habe ich schon mal:
1. Kann das delay_ms zwischen den Befehlen beliebig groß sein?
2. Muss ich den SPI Dout vom PIC an den SPI Din vom Display verbinden?
An der Leitung ist ein Pullup mit 10k: gut, schlecht, egal? Die
Clock-Leitung hat keinen Pullup.
3. Für die Kondensatoren nehme ich 1µF Elkos, ist das OK? Funktion der
Pins ist laut Datenblatt "LC Drive". Mit 100nF Kerkos passiert auch
nichts.
4. Sonst noch Ideen wo der Fehler liegen könnte?
Besten Dank,
Gruß,
Thomas
Eins vorweg, ich kenn mich mit GLCDs nicht aus.
> 2. Muss ich den SPI Dout vom PIC an den SPI Din vom Display verbinden?
Ich denke: Ja
> 3. Für die Kondensatoren nehme ich 1µF Elkos, ist das OK? Funktion der> Pins ist laut Datenblatt "LC Drive". Mit 100nF Kerkos passiert auch> nichts.
Im Datenblatt steht, man soll einen 1µ C nehmen, nix von Elko, also
warum nimmst Du einen Elko?
Woher hast Du die 1ms delays? Schau mal hier:
http://www.lcd-module.de/eng/pdf/zubehoer/st7565r.pdf
Ab Seite 51 steht was zur initialisierung. Da steht was von insgesamt
5ms...die überschreitest Du...evtl. liegst daran, dass die 1ms zu lang
sind?
Ich habe das Display bisher zwar mit AVR und STM32 angesteuert, aber
sollte beim PIC ja so ähnlich gehen.
1. Zwischen den Befehlen muß überhaupt kein Delay sein. Die Zeit für die
SPI-Übertragung reicht als Delay aus.
2. Wenn deine PIC-Pins als PushPull-Ausgänge geschaltet sind, brauchst
Du keine Pullup-Widerstände. Das Display hat keinen Daten-Ausgang, die
MISO-Leitung am Controller bleibt also frei.
3. Es ist egal, was für 1 µF Kondensatoren Du benutzt. Ich hab zunächst
Elkos mangels Kerkos eingesetzt, beides klappt hervorragend. Nur bei
Elkos auf die Polarität achten (CAP1N/1P/3N/3P).
4. Sehr wichtig ist die Reset-Leitung. Bitte das Display unbedingt nach
dem Power-On kurz resetten. Also die Reset-Leitung kurz auf Low, dann
wieder auf High. Erst danach die Init-Sequenz starten. Ich hatte auch
zunächst die Reset-Leitung fest auf High gelegt und keinerlei Erfolge
erziehlt.
5. Und A0 mußt Du natürlich auch ansteuern. Für die Initialisierung muß
die natürlich auf Low sein, aber wenn Du Daten zum Display schicken
willst, muß die natürlich auf High liegen.
6. Die Initialisierungssequenz, die Du benutzt hast, ist für die
"Low-Voltage" version. Funktioniert natürlich nur, wenn Du eine externe
9-12 Volt Spannung für das Display hast (Siehe Schalbild im Datenblatt
Seite 4 "LOW VOLTAGE"). Wenn Du die Schaltung nach "LOW POWER" oder
"WIDE RANGE" aufgebaut hast, dann unbedingt auch die dazu passende
Initialiserungssequenz benutzen.
Als Anhang habe ich mal ein Projekt von mir mit einem DOGM128, also der
größeren Version dieses Displays, das aber identisch angesteuert wird.
Der Controller ist übrigends ein STM32F101C8 Cortex-M3.
Erwin
A0 dauerhaft auf GND ist nicht empfehlenswert. Da kannst du nur
Kommandos rueberschicken, aber keine Displaydaten die dann angezeigt
werden.
Siehe dazu Punkt (6) in der Tabelle auf Seite 5 deines Datenblattes...
Ich vermute auch das eines oder zwei deiner Delays zu kurz sind.
Zumindest bei den DOG Textdisplays brauchen da einige Befehle ein
laengeres. Schau mal in das Datenblatt des Controllers, da findest du
dazu anstaendige Infos.
cu Tarzanwiejane
Danke an alle für die Tipps, es geht aber immer noch nicht.
@ munter (Gast)
"Im Datenblatt steht, man soll einen 1µ C nehmen, nix von Elko, also
warum nimmst Du einen Elko?"
Weil ich nur 100 nF Kerkos habe.
"Woher hast Du die 1ms delays? Schau mal hier:
http://www.lcd-module.de/eng/pdf/zubehoer/st7565r.pdf
Ab Seite 51 steht was zur initialisierung. Da steht was von insgesamt
5ms...die überschreitest Du...evtl. liegst daran, dass die 1ms zu lang
sind?"
OK, habe die Delays rausgenommen, hilft aber nicht.
@ Erwin Reuss
Gut zu wissen, dass es auch mit Elkos geht.
Danke für den Hinweis mit der Reset Leitung, steht ja auch im
ausführlichem Datenblatt (vom Controller, das Datenblatt vom Display
enthält auch die Initialisierung aber ohne die Details). Ich verwende
natürlich die passende Beschaltung mit 9 Volt für die Kontrastspannung.
A0 habe ich (noch) nicht genutzt um die Schaltung einfach zu lassen.
Display initialisieren und alle Pixel an/aus geht auch so (also es
sollte gehen... )
@ Thomas Otto
Zum testen erst mal ohne A0. Der lange Delay bei den Textdisplays ist
mir bekannt, scheint hier aber anders zu sein. Eher anders rum, dass die
Initialisierung nur 5ms dauern soll.
Also, ich werde doch mal 1 µF Kerkos kaufen und schauen ob ich noch
einen anderen SPI-IC zum testen habe, vielleicht läuft da ja auch was
schief. Ist mein erster Versuch mit SPI.
Gruß,
Thomas
hi thomas,
ich sehe,du hast dich schon mit dem LCD DOGM132-5 beschäftigt.ich möchte
auch dieses Display einsteuern aber ich weiss nicht wie ich anfangen
soll.kannst du mir vielleicht einen Schaltplan oder so was schicken
damit ich erstmal sehen kann wie ich überhaupt das ganze aufbauen kann.
Danke im Voraus
hi Erwin,
ich möchte ein DOGM132-5 LCD mit AVR (Assembler) über SPI einsteuern.ich
sehe dass du dich mit diesem LCD schon beschäftigt hast.kannst du mir
vielleicht einen Schaltplan erreichen damit ich sehe wie ich anfangen
kann.
danke
Hallo
Gibt es inzwischen etwas Neues zum Thema Dogm 132?
Seit einiger Zeit wird das Dogm 128x64 von Bascom unterstützt. Ich habe
es auch erfolgreich zum Laufen gebracht. Nun habe ich hier ein 132-5 und
habe zwei oder drei Werte in der Initialisierung des Displays aus der
Bascom Library angepasst. Jetzt bekomme ich wenigstens schon mal einen
Text angezeigt.
Nun bin ich aber kein Programmierer und bräuchte Hilfe bei der Anpassung
der Library bezüglich der anderen Displayauflösung (132x32 statt
128x64).
Kann mir da jemand helfen?
Viele Grüße
Hi, ich habe nun schon einige threads durchgewühlt um häufige Fehler bei
der Ansteuerung zu finden. Bei mir will mein DOGM132 am ATmega8 nicht
funktionieren.
Habe nun sogar schon mit dem Oszilloskop überprüft ob die SPI daten
zusammen mit der clock richtig ankommen. Vielleicht stimmt aber einfach
an der Software was nicht. Ich wäre euch total dankbar wenn da mal
jemand kurz drüberschaut:
1
voidspi_master_transmit(charcData)
2
{
3
4
PORTB&=~CS_LCD;
5
PORTC&=~LC_A0;
6
7
SPDR=cData;
8
while(!(SPSR&(1<<SPIF)));
9
10
PORTC|=LC_A0;
11
PORTB|=CS_LCD;
12
13
_delay_us(10);
14
}
(Habe es auch schon ohne das aus und wieder anschalten von CS und A0
vor/nach jedem Befehl probiert)
Das Display ist im Low-power-mode mit zwei spannungen betrieben (10V an
VOUT und 3,3V an VDD,VDD2 und SPI).
An PortC pin 5, hängt eine LED, daher diese befehle.
Am Display tut sich einfach gar nichts. Das bleibt komplett schwarz (ist
en weiß auf schwarz display). Sollte sich da nicht wenigstens schon
irgendwas ein bisschen verändern, wenn man eine Spannung anlegt?
Viele Grüße,
Philipp
Hi,
also auch bei mir geht das Display nun.
Was ich geändert habe:
Nicht mehr im Dual-Power mode sondern mit den zusätzlichen Kondensatoren
betreiben. Jetzt gehts... (Die Initialisierung muss dann natürlich auch
entsprechend angepasst werden)
Komische Sache trotzdem...