mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2x16 LCD-Display funkt einfach nicht


Autor: Stefanie (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
bin mittlerweile schon ziemlich verzweifelt, weil ich den ganzen Tag
versuche dieses be... LCD-Display zum Laufen zu bewegen!

Also, an sich benutze ich das Ethernutbetriebssystem (www.ethernut.de)
und dort ist schon ein LCD-Display integriert, auf dem mein Code
aufbaut. Kurz und gut, der Code funktioniert einfach nicht! Naja,
genauer gesagt ist es so, wenn ich dass LCD-Display anschieße ist die
erste Zeile ein schwarzer Balken normal, sobald ich den Code drauf
spiele ist das ganze Display normal und wenn ich lange auf RESET drücke
kommt in der ersten Zeile der schwarze Balken wieder (weiß nicht, ob
dass weiter hilft).

Ich weiß auch nicht auf was ich LCD_DATA_BITS setzen soll (0x0F oder
0xF0) hab alle Infos mal angehängt und wäre sehr, sehr dankbar, wenn
sich wer erbarmen würde und mal einen Blick über den Code werfen!! Ach
ja, bin noch absoluter Anfänger, kann also auch ein total doofer Fehler
sein!)

Ich hab auch schon den von Peter Fleury probiert, aber da passiert
genau so wenig.

Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich schließe jetzt einfach mal einen Hardware-Fehler aus, ich denke mal,
dass die richtigen Pins Deines µC mit den richtigen Pins des Displays
verdrahtet sind?

Um ein LCD im 4Bit Modus zu betreiben, muss dieses auch so
initialisiert werden.

Ganz bestimmte Bits werden auf der Datenleitung gesetzt und gewisse
Wartezeiten sind einzuhalten.

Schau mal bitte in dieses Datenblatt unter "SET FUNCTION" und
vergleiche, ob Du Dein Diplay genauso initialisiert hast?

Sonst kannst Du lange suchen, wenn Dein Diplay im 8-Bit Modus
herumdümpelt ;)


Erst dann können anzuzeigende Zeichen an das Display gesendet werden.

Autor: Cristian Grigoruta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Programmiersprache verwendest du eigentlich??

Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christian
Was soll das den heißen, ich dachte das ist C, oder?

@Bernhard
In dem Datenblatt von dem Display, dass ich verwende steht doch nicht
von Initialisierung für den 4-Bit-Modus (wenn ich nicht übersehen
habe). Soll ich versuchen, einfach mal die Daten für dein Display raus
zu schicken??

DANKE

Autor: Cristian Grigoruta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry sorry :)
Habe dein attachment net angesehen.

Habe ne kleine routine für ein 2 * 16 LCD für den 8051 geschrieben!!
Wenn du willst schick ich sie dir bzw. stell ich sie hier rein!

Autor: Cristian Grigoruta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso,ist jedoch im 8 Bit Mode....kannst mal versuchen ob du es mit 8Bit
hinbekommst!!!!
Das ummodeln ist dann net so schwer!!!

Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann leider an der Hardware nichts mehr ändern! Hab's ja auch total
doof, da die Datenleitungen auf verschiedenen Ports liegen.

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefanie,

also ich habe bisher noch kein LC-Display gehabt, daß im 4-Bit-Modus
nicht funktioniert, und ich habe schon einige verbaut.

Mal so ´ne ganz dumme Frage: Hast Du mal am Poti für den Kontrast
gedreht?

Hast Du ein Oszi oder Datenlogger, um die Pegel und das Timing am
LCD-Port mal nachzumessen?

Gruß,
Markus_8051

Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Markus: Ein Oszi hab ich leider nicht. Das mit dem Kontrast glaub ich
nicht, da ich doch am Anfang diese schwarzen Balken sehen kann.

Kannst du mir nicht mal einen Code von dir schicken, da ich mir nicht
sicher bin, ob der Code passt?

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefanie

>In dem Datenblatt von dem Display, dass ich verwende steht doch nicht
>von Initialisierung für den 4-Bit-Modus (wenn ich nicht übersehen
>habe)

Und genau das wunderte mich auch,
denn hardwaremäßig betreibst Du Dein LCD im 4-Bit-Modus.

Mein Tipp:

Schreibe Dir bitte eine LCD-Initialisierungs-Routine exakt für den
4-Bit Modus.

In Assembler könnte es so aussehen:

           ldi temp, 0b00000011     ;muss 3mal hintereinander gesendet
           out PORTB, temp          ;werden zur Initialisierung
           rcall lcd_enable             ;1
           rcall wait5ms
           rcall lcd_enable             ;2
           rcall wait5ms
           rcall lcd_enable             ;und 3!
           rcall wait5ms
           ldi temp, 0b00000010        ;4bit-Modus einstellen
           out PORTB, temp
           rcall lcd_enable
           rcall wait5ms



Bernhard

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Steffi: Ich habe leider nur Code für die Initialisierung in Assembler
auf dem 8051, fürchte, damit tust Du nicht viel. Aber ich schau zu
Hause nochmal nach!

Der Tipp von Bernhard ist auch gut: Das Kommando zum Initialisieren im
4bit-Mode muß dreimal gesendet werden und zwischendurch unbedingt
warten!!!

Markus_8051

Autor: Cristian Grigoruta (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ein 4Bit Routine!!!!
Die lcd.h hänge ich im nächsten Beitrag an!!!!

In Hauptprogram kannst du es z.B so progn:
#include <reg517.h>
#include <stdio.h>
#include "lcd.h"

/* globale Variablen */
unsigned char i;

void main(void)
{
                         /* Initialisierung */
        init_lcd();
        blank_lcd();

        /* Ausgabe eines Strings auf der LCD*/
        print_lcd(1,1,"Hallo Du");  // hier gibst du deinen Text ein
        print_lcd(1,10,"SoSo");

        while(1);

}

Autor: Cristian Grigoruta (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok!!!hier ist die Header Datei!!!!
Du kannst sie auch mi #include <lcd.h> einfügen (statt "lcd.h")
"lcd.h" nur nehmen wenn die H.Datei im Projekt dabei ist!

Viel Erfolg!!!

mfg Cri

Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Cri,
hab ganz, ganz herzlichen Dank für dein Programm!! Leider kann ich so
wie ich es sehe, nicht sonderlich viel damit anfangen. Ich habe ja
einen ATmega128 und kann die Pins nicht so einfach umprogrammieren.

Musst du nichts mit DDR, Port und Pin machen?
Das sieht alles so einfach bei dir aus?

Deswegen hab ich gedacht, dass ich lieber noch bei meinem Programm den
Fehler suche. Aber trotzdem danke für deine Mühe!!

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.