mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit Nokia 3310 LCD


Autor: Aleksej Kiselev (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen!
Ich habe Schwierigkeiten mit der LCD Anzeige von Nokia 3310.
Es funktioniert ab und zu, aber am meistenst wird die Anzeige nicht
richtig initialisiert, denke ich mir. Es bleibt alles hell (oder kann
auch dunkel sein), woran könnte es liegen?
Für jede Vermutung würde ich sehr dankbar sein!
MfG, Aleksej

Autor: HansHans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hatte ich auch schon siehe:
http://www.mikrocontroller.net/forum/read-4-96909.html
----->
Wenn das Display nicht arbeitet ist der Fehler evtl.in der
Resetschaltung Reset muß kleiner als 0,7V sein
evtl mal von Hand Resete und erst dan das LCD an den AVR.

Das LCD geht erst an wenn es vom AVR per Befehl eingeschaltet wird
nicht so wie bei den Standart LCD oberste Zeile dunkel .
Gruss
HansHans

Autor: Aleksej Kiselev (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne, leider hat es nichts gutes gebracht. Ich habe an Reset einn
Pullup-Widerstand angelötet (47kOhm zu VCC) und ein Kondensator (100nF
zu GND). Jeztzt wird es zwar immer initialisiert, aber nicht richtig -
auf der Anzeige habe ich was chaotisches, und es ist ein Standbild, da
wird nichts geändert. Ich habe alles wieder entfernt und habe das, was
ich vorher hatte - es wird nur ca. 1 Mal pro 40 Resets richtig
initialisiert, aber dann geht ja alles wie es sein soll. Und alle
weiteren Resets bringen ja keine Probleme mit.
So mache ich es eigentlich:

  //  Pull-up on reset pin.
  LCD_RST_PIN = 1;
  //  Set output bits on port B.
  DDRB = 0xFF;
  LCD_POWER = 1;
  delay_ms(10);
  //  Toggle display reset pin.
  LCD_RST_PIN = 0;
  delay_ms(100);
  LCD_RST_PIN = 1;
  //  Enable SPI port: No interrupt, MSBit first, Master mode, CPOL->0,
CPHA->0, Clk/4
  SPCR = 0x50;
  //  Disable LCD controller
  LCD_CE_PIN = 1;

  LcdSend(0x21, LCD_CMD);  // LCD Extended Commands.
  LcdSend(0xC8, LCD_CMD);  // Set LCD Vop (Contrast).
  LcdSend(0x06, LCD_CMD);  // Set Temp coefficent.
  LcdSend(0x13, LCD_CMD);  // LCD bias mode 1:48.
  LcdSend(0x20, LCD_CMD);  // LCD Standard Commands, Horizontal
addressing mode.
  LcdSend(0x0C, LCD_CMD);  // LCD in normal mode.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht solltest Du nach dem deaktivieren der Reset-Leitung ein
Weilchen warten?

  //  Toggle display reset pin.
  LCD_RST_PIN = 0;
  delay_ms(100);
  LCD_RST_PIN = 1;

  // ### hier so: etwas warten ###

  //  Enable SPI port: (...)
  SPCR = 0x50;

  //  Disable LCD controller
  LCD_CE_PIN = 1;

Diese letzte Zeile: Bedeutet das, daß Du /CS des Displays während des
Resets auf LOW (=aktiv) hältst? Mach das mal andersherum.

Deine LcdSend-Funktion aktiviert den LCD_CE_PIN?

Autor: Aleksej Kiselev (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach meinen Beobachtungen, ist das Verhalten von der Anzeige
positionsabhängig, das heisst, dass auf einigen Positionen wird es am
meistens richtig initialisiert und auf anderen klappt es überhaupt nie.
Kann es an der Kabellänge liegen? Bei mir ist en nicht mehr als 50 cm.
Oder gibt's vielleicht irgendwelche Störungen?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Kabellänge im Telephon -dafür ist das Display schließlich entwickelt
worden- beträgt einige wenige cm. 50cm kann zu Problemen führen, vor
allem, wenn das Display mit hoher Taktfrequenz auf der
SPI-Schnittstelle angesteuert wird und womöglich noch irgendwelche
Störeinstreuungen auftreten.

Autor: Aleksej Kiselev (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiss ja nicht, eigentlich arbeite ich mit 1 MHz Taktfrequenz, ich
glaube nicht, dass die Geschwindigkeit so hoch ist. Ich hab' auch
versucht SPCR = 0x51, es hat auch nicht geholfen.
Aber diese Idee mit der Pause nach dem Befehl: LCD_RST_PIN = 1;
hat doch was gebracht. Jetzt funktioniert es im Prinzip einwandfrei,
aber nicht überall - es ist wirklich sehr positionsabhängig. Wenn ich
die Anzeige um 5-10 cm verschiebe, dann läuft es wieder nicht...

Autor: Jens123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo
evtl ein kontaktproblem??
kurzschluss am Display? kontrolliere das evtl mal
ich hatte diese Probleme auch gehabt
bei mir ist das Kabel ca. 30 .. 40 cm Lang bei 16MHz IOclock

Gruss Jens

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.