LCD Ansteuerung in C wiederholt dinge.

OP #963498
Hallo

Ich steuere ein DISPLAYTECH 161A Display (1x16 Zeichen)
mittels diesem Code an:

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#LCD-Ansteuerung

Jetzt habe ich jedoch folgendes problem...

wenn ich diesen Code ausführe:
1
 while(1)
2
    { 
3
  delay(); //ca 0.5 Sekunden
4
  set_cursor(0,0);
5
  lcd_string("T");
6
  
7
    }

Dan steht auf dem Display nicht einfach "nur" T sondern
alle 0.5 Sekunden kommt eins Dazu also

T
TT
TTT
TTTT
TTTTT

Doch woran liegt das?

Was ich auch merkwürdig finde, ist das die ersten 8 Zeichen als 1. Zeile
gelten und um auf die zweiten 8 Schreiben zu können muss man die 2. 
Zeile umschalten.

Das dies mit dem Display zu tun hat ist mir jedoch klar.

Danke schonmal.
Gast
>Dan steht auf dem Display nicht einfach "nur" T sondern
>alle 0.5 Sekunden kommt eins Dazu also

Das ist einfach. Der Fehler liegt in set_cursor().
Gast
Also ich weiß ja nicht was du vor hast, aber ich würde das Display nicht 
so direkt in die while(1) klatschen, kostet Rechenaufwand, wenn er alle 
0,5 Sekunden (in diesem Fall) die Displayroutine durchrattert obwohl 
sich eh nix ändert... Und der 0,5 delay in der while(1) bremst natürlich 
auch



Grüße
>>wenn du in die erste Zeile , erstes Zeichen schreiben willst musst du:
>>set_cursor(0,1); benutzen.

Keine Ahnung ob das stimmt, aber WENN das so ist, dann ist ein SEHR, 
SEHR schlechter Porgrammierstil. x zählt ab 0 und y ab 1? Und so ein 
Parameterinterface in einer Hochsprache? Sorry, das ist unakzeptabel, 
dumm, verwirrend und völlig unkonsistent. Welcher Depp programmiert so 
etwas?

@OP,
Kannst Du nicht deine aktuelle set_cursor Routine mal posten, dann klärt 
sich das bestimmt schnell. Die while-Schleife zu verdächtigen (wie 
einige geschrieben haben) ist unsinnig. Man darf an die gliche 
Cursor-Position das gleiche Zeichen schreiben SO OFT MAN WILL!
Ob es sinnvoll ist, darum geht es hier ja nicht. Gehen MUSS es, sonst 
stimmt woanders etwas im Programm nicht.

Jochen Müller
Ok, dann hat sich das ja geklärt.

ABER:
set_cursor(x,y) WOBEI x ab 0 zählt, y ab 1

Wieso wird so ein UNGLAUBLICH SCHLECHTER Programmierstil in Tutorials 
verwendet? Sollen die Anfänger darauf getrimmt werden, so schlecht zu 
arbeiten?

Jochen Müller
Gast
Naja sehr sinnvoll ist es nicht, aber wenn man den Code liest ist es 
jedem klar.
Und wer es anders mag kann die das switch-case ja ändern.

Gruss
Gast
@jochen,
die while(1) sollte man möglichst knapp halten und keine unötigen delays 
einfügen, genauso wie in einer Interruptroutine. Stattdessen sollte man 
eher durch if`s Funktionen aufrufen!! Sonst wir alles sinnlos 
durchgerattert und das kostet wertvolle Zeit.
Das nur so nebenbei, ich möchte dem guten Menschen der das hier gepostet 
hat nur wertvolle Tipps geben ;-)


Grüße
@  Jochen Müller (taschenbuch)

>Wieso wird so ein UNGLAUBLICH SCHLECHTER Programmierstil in Tutorials

Nun lass mal die Kirche im Dorf. Zu JEDER Funktion gibt es eine 
Beschreibung, die den Wertebereich der Parameter klar definiert. Wer 
lesen kann . . .

MFG
Falk
Gast
Wenigstens steht Falk zu seinem Code im Tutorial^^.
Nein nur Spaß.
Wie schon oben geschrieben wer lesen kann , der kann den Code ja einfach 
auf sich selbst anpassen.

Gruss

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.