mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD Ansteuerung in C wiederholt dinge.


Autor: Claudio H. (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

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

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Jetzt habe ich jedoch folgendes problem...

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

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.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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().

Autor: Bereits Fort (Firma: D.ade) (bereitsfort)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
an der while schleife?

Autor: Bereits Fort (Firma: D.ade) (bereitsfort)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn du nur einmal "t" senden willst gehört das delay, der cursor set 
und die textausgabe vor die while zeile

außerdem scheint der cursor set  so nicht zu funktionieren?

Autor: henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wenn du in die erste Zeile , erstes Zeichen schreiben willst musst du:
set_cursor(0,1); benutzen.

Gruss

Autor: Claudio H. (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke....

Hat Funktioniert

Der Tipp mit

set_cursor(0,1);

war der entscheidende :)

Autor: Jochen Müller (taschenbuch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>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

Autor: Jochen Müller (taschenbuch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  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

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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.