mikrocontroller.net

Forum: Compiler & IDEs lcd_put?(variable) wie gehts?


Autor: Tzu Ying (tzu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Leute versuche grad ein 60Sekunden Timer auf meinem LCD ablaufen zu 
lassen hier der Coder der mir kummer macht:

benutze die header von: Peter Fleury

//...Initalisierung Display main u.s.w. .....


for(int i=60;i>0;i--) //geht los mit i=59
  {

    //k++;
    lcd_gotoxy(13,1);
    lcd_putc(i);
    
    if (i%2 == 0) 
    {
      PORTB |= (1<<PB7);  
      n++;
    }

    delay_s(1);
    PORTB &= ~(1<<PB7);
    lcd_clrscr();
  }

Er gibt an der passenden stelle im Display nur komische 
Zeichen(einstellig) im Sekundentakt an bzw am anfang auch ein paar 
runterzählungen von 9-1.*'*#... Andere Zeichendarstellung über den 
Befehl lcd_putc("text") funktionieren...

*Hat jemand eine Idee wie ich die Variable "i" in der for Schleife 2 
stellig angezeigt bekomme?*

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

Bewertung
0 lesenswert
nicht lesenswert

Autor: Tzu Ying (tzu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Danke für den Link dort war ich schon ist aber für die LCD-routine.h 
nicht für die vom Peter die LCD.h

und normalen Text kann ich ausgeben bloß keine Variable habe es versuch 
von der LCD-routine abzuleiten für die LCD.h aber ohne erfolg vieleichtr 
habe ich auch was übersehn.. komm nciht weiter...


Aber dank dir trotzdem (-:

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

Bewertung
0 lesenswert
nicht lesenswert
Tzu Ying schrieb:
> Hi Danke für den Link dort war ich schon ist aber für die LCD-routine.h
> nicht für die vom Peter die LCD.h
>
> und normalen Text kann ich ausgeben bloß keine Variable habe es versuch
> von der LCD-routine abzuleiten für die LCD.h aber ohne erfolg vieleichtr
> habe ich auch was übersehn..

Hást du den Link verfolgt und auch gelesen was dort steht?

Offenbar nicht!

Du willst mir doch hoffentlich nicht weismachen, dass es dich vor 
unüberwindliche Probleme stellt, wenn die dort beispielhaft benutzte 
Funktion lcd_string bei dir jetzt lcd_puts oder wie auch immer heißt. 
Denn es geht dort nicht um diese Funktion an sich, sondern wie man sich 
einen String baut, den man an dieser Funktion übergeben kann, egal wie 
die Funktion dann tatsächlich heißt.

Autor: Tzu Ying (tzu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Karl heinz,
Hmm vieleicht hast du recht also habs eben so probiert denke du hast 
recht vermutlich kann ich die ablaufende ziffer bloß nciht in ein string 
umwandeln... wäre super wenn du mir auf die sprünge hilfst..


finde grad nicht wie ich das mache )-:

Ging das nicht irgendwie so...?
for(int i=60;i>0;i--) //geht los mit i=59
  {
    
    
    char string s=i;
    lcd_gotoxy(13,1);
    lcd_puts(s);
    
    if (i%2 == 0) 
    {
      PORTB |= (1<<PB7);  
      n++;
    }

    delay_s(1);
    PORTB &= ~(1<<PB7);
    lcd_clrscr();
  }
Gruß
TZU

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

Bewertung
0 lesenswert
nicht lesenswert
Tzu Ying schrieb:
> Hi Karl heinz,
> Hmm vieleicht hast du recht also habs eben so probiert denke du hast
> recht vermutlich kann ich die ablaufende ziffer bloß nciht in ein string
> umwandeln...

Grrrrrrrrr
lies endlich den Link

Dort sind 3(!) Methoden beschrieben, wie man diese Umwandlung 
bewerkstelligen kann!

Das darf ja doch wohl nicht wahr sein! Was soll ich denn noch machen?
Du wirst dir doch wohl vom Link den ersten 3-Zeiler holen können, der 
sich dort rund um itoa findet.

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

Bewertung
0 lesenswert
nicht lesenswert
Das hier

    char string s=i;

ist weder ein String noch ist es eine taugliche Methode um von einer 
Zahl die ASCII Repräsentierung dieser Zahl zu generieren!


Lies neben dem Link auch noch ein C-Buch!

Autor: Tzu Ying (tzu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK Ich habs danke dir für den Link habe ihn mir nochmal angeschaut 
wusste erst nix mit dem "itoa( i, Buffer, 10 );" anzufangen.

So für die Nachwällt des muss so sein:
#include <avr/io.h>
#include <util/delay.h> // Headerdadei für delay Funktion
#include <stdlib.h>  // <- Wichtig!!!



char Buffer[40];   //<- Wichtig!!!



for(int i=60;i>0;i--) //geht los mit i=59
  {
    
    
    
    itoa( i, Buffer, 10 );  //<- Wichtig!!!
    lcd_gotoxy(13,1);
    lcd_puts( Buffer );   //<- Wichtig!!!
    
    if (i%2 == 0) 
    {
      PORTB |= (1<<PB7);  
      n++;
    }

    delay_s(1);
    PORTB &= ~(1<<PB7);
    lcd_clrscr();
  }

VIELEN DANK (-:

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Kommentar "<- Wichtig!!!" ist beim späteren Durchlesen des 
Quelltextes gewiss sehr hilfreich.

--

"Multiple exclamation marks," he went on, shaking his head, "are a sure 
sign of a diseased mind."

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.