Forum: Mikrocontroller und Digitale Elektronik LCD-Display auf ATmega8 zeigt nur weiße Balken


von Albert (Gast)


Angehängte Dateien:

Lesenswert?

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!

von Georg G. (df2au)


Lesenswert?

Wo findet man die LCD-ROUTINES.ASM?

von Klaus (Gast)


Lesenswert?

Der "Witz" ist in dem Teil verborgen, den du nicht angehängt hast.

von Albert (Gast)


Angehängte Dateien:

Lesenswert?

Die Lcd-Routines.asm also? Da verwende ich die Standardversion, ich hab 
sie trotzdem mal angehängt.

von Klaus (Gast)


Lesenswert?

Albert schrieb:

> Die Lcd-Routines.asm also? Da verwende ich die Standardversion, ich hab
> sie trotzdem mal angehängt.

Das ist bestimmt nicht der Standard. Ist aber sehr nett von dir, dass du 
sie trotzdem angehängt hast.

von Karl H. (kbuchegg)


Lesenswert?

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?

von Klaus (Gast)


Lesenswert?

Vielleicht hast du auch Lust den Schaltplan und ein Bild vom Aufbau zu 
posten :)

von Karl H. (kbuchegg)


Lesenswert?

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?

von Albert (Gast)


Lesenswert?

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...

von Karl H. (kbuchegg)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Albert (Gast)


Lesenswert?

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...

von Albert (Gast)


Lesenswert?

Hab das eben korrigiert, tut mir Leid für den Fehler.

von Karl H. (kbuchegg)


Lesenswert?

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?

von Georg G. (df2au)


Lesenswert?

Der R/W Pin am LCD ist bei dir wie verschaltet?

von Albert (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Albert (Gast)


Lesenswert?

Georg G. schrieb:
> Der R/W Pin am LCD ist bei dir wie verschaltet?

Hängt an GND.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Klaus (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

Albert schrieb:

> Schaltplan hab ich übrigens angefügt.

OK.
Jetzt stellt sich noch die Frage, ob das in der Realität auch 
tatsächlich so gesteckt wurde und/oder ob es zb einen Wackelkontakt 
gibt.

von Georg G. (df2au)


Lesenswert?

Wo sind ein oder zwei Stützkondensatoren am Display und am ATMega?

von Albert (Gast)


Lesenswert?

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!

von Georg G. (df2au)


Lesenswert?

Warum ist der zweite GND Pin am ATMega nicht verschaltet?

von Albert (Gast)


Lesenswert?

Georg G. schrieb:
> Wo sind ein oder zwei Stützkondensatoren am Display und am ATMega?

Wofür benötige ich die Stützkondensatoren? Sorry für die 
Anfänger-Fragen..

von Georg G. (df2au)


Lesenswert?

Warum ist der zweite GND Pin am ATMega nicht verschaltet?
Auch AVCC sollte immer beschaltet sein.

von holger (Gast)


Lesenswert?

Vieleicht ist ja der Kontrast volle Kanne aufgedreht.
Hintergrundbeleuchtung ohne Vorwiderstand anschliessen
führt meist zum defekt der LEDs.

von Albert (Gast)


Lesenswert?

Georg G. schrieb:
> Warum ist der zweite GND Pin am ATMega nicht verschaltet?

Der "rechts"? Soll also auch an GND angeschlossen werden?

von Paul Baumann (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Georg G. (df2au)


Lesenswert?

holger schrieb:
> Hintergrundbeleuchtung ohne Vorwiderstand

In der letzten Lieferung aus China hatte der Hersteller ganz heimlich 
Vorwiderstände eingebaut. Und die LEDs waren deutlich besser als früher, 
wesentlich heller bei weniger Strom.

Es gibt also durchaus positive Überraschungen.

von Albert (Gast)


Lesenswert?

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.

von Albert (Gast)


Lesenswert?

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...

von Georg G. (df2au)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

: Bearbeitet durch User
von Albert (Gast)


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

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.

: Bearbeitet durch User
von Albert (Gast)


Lesenswert?

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!

von Albert (Gast)


Lesenswert?

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...

von Georg G. (df2au)


Lesenswert?

Ich glaube dir gern, dass du es so verschaltet hast. Aber aus der 
Hintergrund Beleuchtung kommt kein einziges Photon :-)

von holger (Gast)


Lesenswert?

>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

von Paul Baumann (Gast)


Lesenswert?

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

von georg (Gast)


Lesenswert?

Albert schrieb:
> dass mein Display nur weiße Balken in der oberen
> Zeile anzeigt und sonst nichts.

also hast du schonmal alles richtig angeschlossen!

vermute den fehler also in der software.

von Mike (Gast)


Lesenswert?

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

von jz (Gast)


Lesenswert?

Wahrscheinlich ist sein Orange ein Braun. Wäre zumindest 
realistischer...

von Karl H. (kbuchegg)


Lesenswert?

georg schrieb:
> Albert schrieb:
>> dass mein Display nur weiße Balken in der oberen
>> Zeile anzeigt und sonst nichts.
>
> also hast du schonmal alles richtig angeschlossen!

Sagen wir mal:
Die Spannungsversorgung ist richtig angeschlossen. Das sind 2 von 10

von holger (Gast)


Lesenswert?

>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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.