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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.