[C] PIND Auslesen und auf Display ausgeben.

OP #963545
Lesenswert?

Hallo

Ich möchte den Dezimal Wert der PORTD an ein LCD Senden...

Ich mache das in meinem Prog so:
1
void send_int(int *zahl){
2
       char Buffer[20];          //umwandlung von Dezimal in ASCII
3
       itoa(zahl, Buffer, 10 ); 
4
     
5
       lcd_string(Buffer);
6
    }
7

8

9

10
int main(void){
11

12
    lcd_init();
13
  DDRD = 0;
14
  
15
  
16
 while(1)
17
    { 
18
  set_cursor(0,1);
19
  send_int(PIND);
20
    }
21
}

Wenn ich nun zb. Taster 0 Drücke, dan steht auf dem Display 254
wenn ich Taster 1 Drücke steht 253
wenn ich Taster 1 und 0 Drücke so steht 252

Also alles ok

wenn ich taster 7 Drücke, steht 127
wenn ich taster 6 drücke steht 191
wenn ich jedoch taster 7 und 6 drücke, steht 637

woher kommt das?

Danke schonmal
Gast #963565
Lesenswert?

Hallo mal wieder Claudio,
also ich wette mal du drückst taster 7 und 127 erscheint auf dem 
Display.
danach drückst Taster 6 und 7. Da sollte dann nach deiner 
Anschlussbelegung natürlich 63 erscheinen.
Das Problem ist nur du setzt den Cursor immer auf erstes Zeichen und da 
127 drei Zeichen hat und 63 nur zwei wird von der 127 nur 1 und 2 
überschrieben und die 7 bleibt stehen. Ergebnis = 63 von Taster 6 und 7 
und die 7 von der 127. Also alles Ok.

MAch also am besten bei sowas lcd_clear(); statt set_cursor.

Gruss
OP #963589
Lesenswert?

Hi....

ja hab ich probiert....

Das problem ist, wenn ich lcd_clear() in der while(1) schleife
ausführe, dann sieht man nix mehr auf dem display.....

also müsst ich bei Stellen wechsel clear nur einmal ausführen
doch bevor ich mir den kopf zerbrochen habe wie man das machen könnte,
hab ich gedacht ich warte ab ob es noch ne andere lösung gibt

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