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


von Tzu Y. (tzu)


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
1
//...Initalisierung Display main u.s.w. .....
2
3
4
for(int i=60;i>0;i--) //geht los mit i=59
5
  {
6
7
    //k++;
8
    lcd_gotoxy(13,1);
9
    lcd_putc(i);
10
    
11
    if (i%2 == 0) 
12
    {
13
      PORTB |= (1<<PB7);  
14
      n++;
15
    }
16
17
    delay_s(1);
18
    PORTB &= ~(1<<PB7);
19
    lcd_clrscr();
20
  }

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?*

von Karl H. (kbuchegg)


Lesenswert?


von Tzu Y. (tzu)


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 (-:

von Karl H. (kbuchegg)


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.

von Tzu Y. (tzu)


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...?
1
for(int i=60;i>0;i--) //geht los mit i=59
2
  {
3
    
4
    
5
    char string s=i;
6
    lcd_gotoxy(13,1);
7
    lcd_puts(s);
8
    
9
    if (i%2 == 0) 
10
    {
11
      PORTB |= (1<<PB7);  
12
      n++;
13
    }
14
15
    delay_s(1);
16
    PORTB &= ~(1<<PB7);
17
    lcd_clrscr();
18
  }
Gruß
TZU

von Karl H. (kbuchegg)


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.

von Karl H. (kbuchegg)


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!

von Tzu Y. (tzu)


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:
1
#include <avr/io.h>
2
#include <util/delay.h> // Headerdadei für delay Funktion
3
#include <stdlib.h>  // <- Wichtig!!!
4
5
6
7
char Buffer[40];   //<- Wichtig!!!
8
9
10
11
for(int i=60;i>0;i--) //geht los mit i=59
12
  {
13
    
14
    
15
    
16
    itoa( i, Buffer, 10 );  //<- Wichtig!!!
17
    lcd_gotoxy(13,1);
18
    lcd_puts( Buffer );   //<- Wichtig!!!
19
    
20
    if (i%2 == 0) 
21
    {
22
      PORTB |= (1<<PB7);  
23
      n++;
24
    }
25
26
    delay_s(1);
27
    PORTB &= ~(1<<PB7);
28
    lcd_clrscr();
29
  }

VIELEN DANK (-:

von Rufus Τ. F. (rufus) Benutzerseite


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."

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.