LCD-Display auf ATmega8 zeigt nur weiße Balken

Gast #3868411
Guten Abend,

ich versuche momentan eine Schaltung mit Display zum Laufen zu bekommen, 
scheitere aber daran, dass mein Display nur weiße Balken in der oberen 
Zeile anzeigt und sonst nichts.
Ich verwende einen ATmega8 Mikrocontroller, ein Display vom Typ 1602A.
Alle Kontrasteinstellungen habe ich schon durchprobiert, daran kann es 
nicht liegen. Momentan verwende ich das angehängte Testprogramm um 
irgendein Ergebnis zu erzielen, allerdings bisher erfolglos.

Hat irgendeiner einen Rat für mich? Die SuFu hat bisher nichts gebracht 
was ich nicht schon ausprobiert hätte...

Vielen Dank!
Angehängte Dateien:
#3868423
Ich vermisse in deinem Code die ganzen Definitionen, über dir die 
Hardware konfiguriert wird.

Wo ist zb in deinem Code enthalten
1
           sbr   temp1, 1<<PIN_RS        ; entspricht 0b00010000

auf welchem Pin die RS Leitung liegt? Eigentlich sollte das überhaupt 
nicht assemblieren, weil der Assembler ja keine Ahnung davon hat, was 
'PIN_RS' sein soll. Hast du denn da keine Fehlermeldungen gekriegt?
#3868430
Karl Heinz schrieb:
> Ich vermisse in deinem Code die ganzen Definitionen, über dir die
> Hardware konfiguriert wird.
>
> Wo ist zb in deinem Code enthalten
>
1
>            sbr   temp1, 1<<PIN_RS        ; entspricht 0b00010000
2
>
>
> auf welchem Pin die RS Leitung liegt? Eigentlich sollte das überhaupt
> nicht assemblieren, weil der Assembler ja keine Ahnung davon hat, was
> 'PIN_RS' sein soll. Hast du denn da keine Fehlermeldungen gekriegt?

Und dein Mega läuft auch wirklich mit
1
.ifndef XTAL
2
.equ XTAL = 4000000
3
.endif
4Mhz?
Gast #3868432
Mein Projekt findet im Rahmen eines Seminars an meiner Schule statt. Wir 
verwenden alle die gleichen Dateien (Die Lcd_routines.asm die von dieser 
Website hier stammen). Bei einigen funktioniert es ohne Probleme, ohne 
weitere Definitionen wie PIN_RS, bei anderen (wie mir) wiederum nicht. 
AVR Studio hat jedes Programm bisher ohne Fehlermeldungen geschluckt...
#3868438
Albert schrieb:
> Mein Projekt findet im Rahmen eines Seminars an meiner Schule statt.

Das ist kein Grund, der dich vom Mitdenken entbindet.

> Website hier stammen). Bei einigen funktioniert es ohne Probleme, ohne
> weitere Definitionen wie PIN_RS,

Sorry. Das kann nicht sein.
Du erzählst Blödsinn. Eine nicht erfolgte Definition ist eine nicht 
erfolgte Definition. Die schmeisst dir der Assembler um die Ohren. Der 
kann sich ja die korrekten Werte nicht aus den Fingern saugen.
#3868442
Albert schrieb:

> Bei einigen funktioniert es ohne Probleme,

Ich denke, bei einigen in deinem Seminar ist es so, dass die nicht 
einfach nur den erst besten Code aus dem Tutorial abkopieren, sondern 
dass die sich auch die begleitenden Texte dazu durchlesen und sich dann 
die Version aus dem Tutorial kopieren, die die endgültige ist.
Gast #3868443
Danke! Der mega läuft tatsächlich nur mit 1Mhz, habe das mal umgestellt. 
Bringt aber dennoch keine Besserung...

Außerdem habe ich eben diese Definitionen nachgefügt:

EQU  LCD_PORT = PORTD
.EQU   LCD_DDR  = DDRD
.EQU   PIN_RS   = 4
.EQU   PIN_E    = 5
.EQU   XTAL    = 1000000

Tut mir Leid das ich das bisher nicht erwähnt habe, ist jetzt Teil des 
Programms.

Funktioniert trotzdem nicht...
#3868447
Albert schrieb:
> Danke! Der mega läuft tatsächlich nur mit 1Mhz, habe das mal umgestellt.
> Bringt aber dennoch keine Besserung...
>
> Außerdem habe ich eben diese Definitionen nachgefügt:
>
> EQU  LCD_PORT = PORTD
> .EQU   LCD_DDR  = DDRD
> .EQU   PIN_RS   = 4
> .EQU   PIN_E    = 5
> .EQU   XTAL    = 1000000
>

Das wäre aber schon ein seltsamer Zufall, wenn dein LCD exakt genau so 
angeschlossen ist, wie im Tutorial. Kann natürlich sein, möglich ist 
alles.

Also: Wie ist das LCD angeschlossen. An welchem Port und an welchen 
Pins?
Gast #3868450
Karl Heinz schrieb:
> Albert schrieb:
>
>>
>
> Ich denke, bei einigen in deinem Seminar ist es so, dass die nicht
> einfach nur den erst besten Code aus dem Tutorial abkopieren, sondern
> dass die sich auch die begleitenden Texte dazu durchlesen und sich dann
> die Version aus dem Tutorial kopieren, die die endgültige ist.


Ich habe mich heute über eine Stunde mit einem meiner Mitschüler 
auseinandergesetzt, bei denen das Programm auf Anhieb funktionierte, 
auch er fand keinen Fehler.

Schaltplan hab ich übrigens angefügt.
Angehängte Dateien:
#3868454
Es gibt im Grunde nur 3 mögliche Fehlerquellen
* das LCD ist nicht wirklich HD44780 kompatibel
* die Leitungen sind verkehrt an die Pins angeschlossen und stimmen 
nicht
  mit den Angaben im Programm überein
* dein LCD ist knapp mit dem Timing. D.h. die Wartezeiten sind etwas zu 
kurz.

Punkt 3 ist der häufigste Fall, aber auch die anderen beiden sind nicht 
ausser Acht zu lassen und kommen in der Praxis vor. Ist mir selbst auch 
schon passiert, dass ich ein LCD auf dem Steckbrett an die falschen Pins 
verkabelt habe und es nicht gleich gemerkt habe.
Gast #3868458
Albert schrieb:

> Schaltplan hab ich übrigens angefügt.

Das ist kein (vollständiger) Schaltplan. Es fehlen Verbindungen und jede 
Menge Bezeichnungen.

Du solltest auch das vollständiges Programm posten. So wie es durch das 
AVR-Studio übersetzt wurde.
Gast #3868462
Karl Heinz schrieb:
> Es gibt im Grunde nur 3 mögliche Fehlerquellen
> * das LCD ist nicht wirklich HD44780 kompatibel
> * die Leitungen sind verkehrt an die Pins angeschlossen und stimmen
> nicht
>   mit den Angaben im Programm überein
> * dein LCD ist knapp mit dem Timing. D.h. die Wartezeiten sind etwas zu
> kurz.
>
> Punkt 3 ist der häufigste Fall, aber auch die anderen beiden sind nicht
> ausser Acht zu lassen und kommen in der Praxis vor. Ist mir selbst auch
> schon passiert, dass ich ein LCD auf dem Steckbrett an die falschen Pins
> verkabelt habe und es nicht gleich gemerkt habe.

Okay, dann werde ich das jetzt noch einmal komplett überprüfen, danke 
für die Antwort!
Gast #3868473
Wenn der, bei dem es funktioniert, ein vernünftiger Kerl ist, dann bitte
ihn mal, statt seines Displays das von Dir an sein Steckbrett zu 
stecken.

Damit hast Du die Gewähr, daß das Display in Ordnung ist und mußt dann
bei Dir weiter in Verdrahtung und Programm suchen, wo die Macke ist.

MfG Paul
#3868474
Ach, da ist vieles nicht verschaltet.

Der zweite GND gehört angeschlossen.
AVcc gehört angeschlossen

An beiden Pärchen VCC/Gnd AVcc/Gnd gehören Stützkondensatoren.
Ein Reset-Widerstand (ca. 10k) nach Vcc hat noch nie geschadet.

Was auch immer recht gut kommt: eine simple LED an einem Pin, die man 
bei Programmstart einschaltet, dann eine kleine Wartezeit (vielleicht 1 
Sekunde) und wieder ausschaltet, kann viel beitragen. Denn: die darf 
nach dem Brennen des Programms bzw. nach dem Spannungsanlegen nur einmal 
für die eingestellte Zeitdauer aufleuchten. Tut sie das mehrmals, dann 
ist das ein Hinweis darauf, dass der µC ungewollte Resets macht. Was 
wiederrum oft ein Hinweis auf ein Hardwareproblem, wie zb fehlende 
Stützkondensatoren, ist. Leuchtet sie hingegen überhaupt nicht, dann ist 
beim Brennen des Programms was schief gelaufen. So gesehen erlaubt so 
eine simple LED auf ganz einfache Art und Weise schon ein paar Aussagen 
über den 'Status' des Prozessors.
Gast #3868476
holger schrieb:
> Vieleicht ist ja der Kontrast volle Kanne aufgedreht.
> Hintergrundbeleuchtung ohne Vorwiderstand anschliessen
> führt meist zum defekt der LEDs.

Habe an Pinnummer 15 des LCDs einen Vorwiderstand von 10kOhm 
angeschlossen und regele die Hintergrundbeleuchtung über das 
Potentiometer.
Gast #3868479
Paul Baumann schrieb:
> Wenn der, bei dem es funktioniert, ein vernünftiger Kerl ist, dann
> bitte
> ihn mal, statt seines Displays das von Dir an sein Steckbrett zu
> stecken.
>
> Damit hast Du die Gewähr, daß das Display in Ordnung ist und mußt dann
> bei Dir weiter in Verdrahtung und Programm suchen, wo die Macke ist.
>
> MfG Paul

Habe da der Abgabetermin der Arbeit näherkommt ein neues Display (exakt 
gleicher Typ) gekauft und dieses angeschlossen, mit dem gleichen 
Effekt...
#3868486
Albert schrieb:
> Paul Baumann schrieb:
>> Wenn der, bei dem es funktioniert, ein vernünftiger Kerl ist, dann
>> bitte
>> ihn mal, statt seines Displays das von Dir an sein Steckbrett zu
>> stecken.
>>
>> Damit hast Du die Gewähr, daß das Display in Ordnung ist und mußt dann
>> bei Dir weiter in Verdrahtung und Programm suchen, wo die Macke ist.
>>
>> MfG Paul
>
> Habe da der Abgabetermin der Arbeit näherkommt ein neues Display (exakt
> gleicher Typ) gekauft und dieses angeschlossen, mit dem gleichen
> Effekt...

Das ist nicht dasselbe.

Der UNterschied: Beim Kollegen funktioniert sein LCD nachweislich. Baust 
du dein LCD ein und es funktioniert ebenfalls, dann weißt(!) du, dass es 
irgendein Problem in deinem Aufbau geben muss.

Du willst Tests machen, die dir Wissen verschaffen. Und sei es nur das 
Wissen, dass dein LCD in Ordnung ist. Du kannst auch mal deinen 
Prozessor bei ihm einsetzen (mit seiner Verkabelung und seinem LCD). 
Dann WEISST du, dass es nicht an deinem Programm liegt. Und umgekehrt: 
Du kannst seinen Prozessor, mit seinem Programm und seinem LCD in deiner 
Schaltung einsetzen. Wenn es dann in deinem Aufbau läuft, dann weisst 
du, dass dein Aufbau nicht so schlecht sein kann.

Auf gut Deutsch: du benutzt seinen Komplettaufbau um 'Teilchen tauschen' 
Spielchen zu spielen und daraus die Schlüsse zu ziehen, was von deinem 
Aufbau wohl funktioniert und in welchem Bereich der Fehler liegen könnte 
bzw. was du als Ursache ausschliessen kannst.
Gast #3868489
Georg G. schrieb:
> Albert schrieb:
>> Vorwiderstand von 10kOhm
>
> Ich bin ja ein gläubiger Mensch... aber das ist etwas zu viel gelogen.
> Über 10kOhm bekommst du nicht genug Strom für die Beleuchtung.

Ich kann ein Bild für dich machen wenn du möchtest?
#3868491
Albert schrieb:
> Georg G. schrieb:
>> Albert schrieb:
>>> Vorwiderstand von 10kOhm
>>
>> Ich bin ja ein gläubiger Mensch... aber das ist etwas zu viel gelogen.
>> Über 10kOhm bekommst du nicht genug Strom für die Beleuchtung.
>
> Ich kann ein Bild für dich machen wenn du möchtest?

Kannst du.
Dann wird irgendwer die Ringe auf dem Widerstand lesen und feststellen, 
dass das keine 10k sind.

Mit 10k leuchtet keine LED. Schon gar nicht die Hintergrundbeleuchtung.

Aber: Bild ist sowieso eine gute Idee.
Gast #3868492
Karl Heinz schrieb:

>
> Das ist nicht dasselbe.
>

>
> Auf gut Deutsch: du benutzt seinen Komplettaufbau um 'Teilchen tauschen'
> Spielchen zu spielen und daraus die Schlüsse zu ziehen, was von deinem
> Aufbau wohl funktioniert und in welchem Bereich der Fehler liegen könnte
> bzw. was du als Ursache ausschliessen kannst.

Okay, das macht Sinn. Ich werd mich an die Schritte hier halten und 
Rückmeldung geben falls es nicht funktioniert hat, oder (hoffentlich) 
dann doch irgendwann funktioniert.

Vielen Dank für die Hilfe und die schnellen Antworten!
Gast #3868494
Karl Heinz schrieb:
> Albert schrieb:
>> Georg G. schrieb:
>>> Albert schrieb:
>>>> Vorwiderstand von 10kOhm
>>>
>>> Ich bin ja ein gläubiger Mensch... aber das ist etwas zu viel gelogen.
>>> Über 10kOhm bekommst du nicht genug Strom für die Beleuchtung.
>>
>> Ich kann ein Bild für dich machen wenn du möchtest?
>
> Kannst du.
> Dann wird irgendwer die Ringe auf dem LCD lesen und feststellen, dass
> das keine 10k sind.
>
> Mit 10k leuchtet keine LED. Schon gar nicht die Hintergrundbeleuchtung.
>
> Aber: Bild ist sowieso eine gute Idee.

Der Widerstand hat den Farbcode: Lila Blau Orange Silber (oder Gold, 
Licht hier ist schlecht).

Nach der universal Tabelle sollte das 10kOhm sein, kann aber sein das 
ich mich irre...
Gast #3868502
>Der Widerstand hat den Farbcode: Lila Blau Orange Silber (oder Gold,
>Licht hier ist schlecht).

Das sind 75k.

>Nach der universal Tabelle sollte das 10kOhm sein, kann aber sein das
>ich mich irre...

10k = Braun Schwarz Orange silber/gold
Gast #3868503
Albert schrieb:
> Ich werd mich an die Schritte hier halten und
> Rückmeldung geben falls es nicht funktioniert hat, oder (hoffentlich)
> dann doch irgendwann funktioniert.

Ja, mache das so, denn PANIK ist ein schlechter Ratgeber bei der Suche
nach dem Fehler. Wenn man sich einmal eine bestimmte Reihenfolge bei
der Fehlersuche angewöhnt hat, dann kann man die Macke am Besten
festnageln.

FF
(Fiel Fergnügen)
MfG Paul
Gast #3868547
holger schrieb:
>>Der Widerstand hat den Farbcode: Lila Blau Orange Silber (oder Gold,
>>Licht hier ist schlecht).
>
> Das sind 75k.

Nur für Farbenblinde oder CRI Geschädigte.

Seit wann bedeutet Blau "5"? Das Blau muss höchstwahrscheinlich grün 
sein, weil es 76kΩ in den Widerstandsreihen bis einschließlich E24 nicht 
gibt.
http://de.wikipedia.org/wiki/Widerstand_%28Bauelement%29#Farbkodierung_auf_Widerst.C3.A4nden
http://de.wikipedia.org/wiki/E-Reihe
Gast #3868740
>Sagen wir mal:
>Die Spannungsversorgung ist richtig angeschlossen. Das sind 2 von 10

Sagen wir 2 1/2 von 10. Die Kontrastspannung ist auch vorhanden.
Evtl. zu hoch, aber das ist ja egal;)
Beitrag #5068344 wurde von einem Moderator gelöscht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.