www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeichen verschwinden bei DOG-M und ADC Abfrage


Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe ein DOG-M 63 laufen. Das auch soweit funktioniert (nach einigen 
init. problemen)
Nun frage ich einen ADC Wert ab und lasse ihn mir erst einmal direkt 
ausgeben. Nun habe ich das Problem, dass wenn der AD Wert 100 übersteigt 
und wieder unter 100 fällt quasi die 0 stehen bleibt ebenso bei dem 
Wechsel von 10 auf 9...wenn ich also wieder 0 erreiche zeigt es 000 an.

Wenn ich vor dem schreiben ein clear einfüge, dann schimmert der ADC 
Wert nur noch durch!

Hier mal meine Main mit clear in der Schleife (ADC-Wert schimmert durch) 
Ich habe nun auch schon ein delay dahinter eingefügt ohne Besserung!

Für Vorschläge an was es liegen könnte, wäre ich dankbar.

int main(void)
{
  lcd_init();
  lcd_clear();
  ADC_Init();
while (1)
  {
   char Buffer[30];
    result = ADC_Read(2);
           lcd_clear();
    lcd_goto_xy( 8, 2 );
    itoa(result, Buffer, 10);
    lcd_write(Buffer);
    }
  }

mfg Frank

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank schrieb:

> Nun frage ich einen ADC Wert ab und lasse ihn mir erst einmal direkt
> ausgeben. Nun habe ich das Problem, dass wenn der AD Wert 100 übersteigt
> und wieder unter 100 fällt quasi die 0 stehen bleibt ebenso bei dem
> Wechsel von 10 auf 9...wenn ich also wieder 0 erreiche zeigt es 000 an.

zutreffende Analyse

> Wenn ich vor dem schreiben ein clear einfüge, dann schimmert der ADC
> Wert nur noch durch!
>
> Hier mal meine Main mit clear in der Schleife (ADC-Wert schimmert durch)
> Ich habe nun auch schon ein delay dahinter eingefügt ohne Besserung!

Du gehst das 'Problem' falsch an.
Die Lösung liegt nicht darin, das Display zu löschen, sondern dafür zu 
sorgen, dass diese überzähligen Zeichen bei einem Wechsel der 
angezeigten Stellen auch wieder gelöscht werden. Zum Beispiel dadurch, 
dass man hinten nach einfach noch ein paar Leerzeichen ausgibt, die eine 
eventuell von vorher noch sichtbare überzählige Ziffer automatisch 
löschen.

Überschreibe ich 100 mit 99, dann bleibt mir 990 an Display stehen. 
Überschreibe ich 100 aber mit "99 ", dann überschreibt mir das 
Leerzeichen die 0 und es steht tatsächlich 99 am Display.


Oder aber, in dem man den Wert immer rechtsbündig in einem Feld ausgibt 
und entweder führende 0-en akzeptiert oder anstelle von führenden 0-en 
wieder Leerzeichen hinmalen lässt.

> while (1)
>   {
>    char Buffer[30];
>     result = ADC_Read(2);
>            lcd_clear();

lcd_clear, weg damit

>     lcd_goto_xy( 8, 2 );
>     itoa(result, Buffer, 10);

zb so
      sprintf( Buffer, "%4d", result );

anstelle von itoa.

>     lcd_write(Buffer);
>     }
>   }
>
> mfg Frank

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah ok, hab es jetzt mit auffüllen von Leerzeichen gemacht aber hat 
geklappt :) so schnell kann es gehen :)

danke

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.