LCD flackert - HD44780 kompatibel, Peter Fleury, Atmega32, C

Gast #981805
Hallo! Mein Bordcomputerprojekt hat es in die betaphase geschafft. Danke 
an alle, die mir geholfen haben!!
Nun hat jemand das Problem, dass die rechte Hälfte seines 16*2 Displays 
"flackert". Ich kann das bei mir nachvollziehen indem ich das Display 
stark schräg halte. Wenn ich aber in normalem Winkel draufschaue, dann 
ist alles ruhig...
Bevor ich hier jetzt ewig Code und Schaltpläne poste - vielleicht weiss 
ja jemand etwas aus dem Stehgreif, weil er das Problem auch schon mal 
hatte.
Nur so viel: 4 bit, Datenleitungen 0-3 liegen auf Masse. Sonst 
funktioniert alles Top.
Gast
Servus,
ich vermute das du eine Schleife im Programm hast in der das Display 
ständig aktualisiert wird ohne das sich an den Einträgen was ändert, 
dadurch flackert es. Programmier es am besten so, das es nur 
aktualisiert wird wenn sich was fürs Display ändert.
Aber wie gesagt könnte auch was anderes sein.
Gast
Und ich dachte zu niedrig und hab sie immer höher gesetzt ;)
Ich werde das mal so umstricken, dass nur neu beschrieben wird, wenn 
sich auch was ändert. Danke!
Gast
updatefrequenz war es nicht. ich habe es jetzt folgendermaßen gemacht:

1
//globale variable in main:
2
uint16_t alterwert=0;
3

4
void ausgabe(uint16_t *alterwert)
5
{
6
//in functions:
7
uint16_t neuerwert=0;
8
for(int i=0;i<7;i++) neuerwert+=zeichenfolgefuerslcd[i];
9

10
if(neuerwert!=*alterwert) ausgabe(zeichen...);
11
*alterwert=neuerwert;
12
}
13

14
ausgabe(&alterwert);

leider funktioniert das nicht so ganz. zu beginn, wenn ich nix 
anschliesse flackert nix. wenn ich dann eine feste frequenz dranhänge 
und zB U:  880 dasteht, dann flackert die 880. komisch da ja eigentlich 
nix überschrieben werden dürfte.
oder hab ich mich irgendwo verhaspelt?
Gast
bin mir nicht sicher obs der Fehler ist.
probier mal beim if
1
if(neuerwert!=*alterwert) *alterwert=neuerwert;
2
ausgabe(zeichen...);
3
}

da nun zu erst *altwert auf den neuesten Stand gebracht wird und
danach die Funktion ausgabe aufgerufen wird.
Weis jetzt nicht wie ausgabe aufgebaut ist, aber ich vermute
das du dann nicht mehr zurückspringst damit er
*alterwert=neuwert
machen kann.
Probiers mal aus wie ichs gschrieben hab vllt klappts

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 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.