LCD Encoder Ausgabe von rechts nach links

OP #4993201
Lesenswert?

Hallo,

also ich habe mir nachfolgenden Code erstellt. In dem ich mir den 
eingelesenen Wert, eines Drehencoders über ein lcd Display ausgebe. Dazu 
habe ich  die .c und .h Dateien aus 
[[http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung]] 
eingebunden. Der Wert wird mir jetzt in Zeile 1 an der Achten Stelle 
ausgegeben. Wenn der Wert jetzt über 9 geht, also auf 10, dann springt 
mir die null an die 9.te Stelle, wie kann ich das jetzt lösen, das mir 
die 1 der 10 an die 7.te Stelle springt und die 0 an die 8.te usw. 
Könnte mir bitte jemand einen Tip geben, oder sogar zeigen.





1
#define F_CPU 16000000
2
#include <avr/interrupt.h>
3
#include <util/delay.h>
4
#include <string.h>
5
#include <avr/io.h>
6

7

8
char zustand = 6;               //Anfangszustand
9
volatile int global_wert;       // =0 ist nicht nötig, da globale Variablen mit 0 initialisiert werden
10

11
char automat [7][4] =  {        { 0, 1, 2, 0 },    //Automatentabelle
12
                                { 0, 1, 1, 3 },
13
                                { 0, 2, 2, 5 },
14
                                { 3, 1, 4, 3 },
15
                                { 2, 2, 2, 2 },
16
                                { 3, 3, 3, 3 },
17
                                { 0, 1, 2, 3 }};
18

19

20
ISR(TIMER2_OVF_vect)
21
{   
22
  zustand = automat[zustand][PINB & 0x3];             //A,B an PB0 und PB1
23
  if(zustand == 4 )
24
  global_wert++;
25
  if(zustand == 5)
26
  global_wert--;
27
}
28

29
int main(void)
30
{  
31
  int wert;
32
  char fe[20];
33
  DDRB = 0x03;      
34
  
35
  char outpt[16];
36
  lcd_init();
37
  
38
  //fuer Mega328 ...
39
  TIMSK2 = TIMSK2 | (1<<TOIE2);             //Timer/Counter2 Overflow Interrupt Enable
40
  TCCR2B |= (1<<CS20);                      //Clock ohne Teiler an Timer
41
  
42
  while(1)
43
  {  
44
     cli();                               //Fuer kurze Zeit den Interrupt deaktivieren
45
     wert = global_wert;
46
     sei();
47
     
48
    lcd_clear();
49
    lcd_setcursor(8, 1);
50
    itoa(wert, outpt, 10);
51
    lcd_string(outpt);
52
      _delay_ms(100);
53
    
54
  }
55
}
Gast #4993229
Lesenswert?

Meinst du sowas vielleicht?
1
void demo (void)
2
{
3
  int wert;
4
  char  tmpstr[20];
5

6
  wert =  9;
7
  sprintf (tmpstr, "%02d", wert);
8
  lcd_string(tmpstr);
9

10
  wert = 10;
11
  sprintf (tmpstr, "%02d", wert);
12
  lcd_string(tmpstr);
13
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren