lcd initialisierung

Gast #3011784
Lesenswert?
• ▲
▼
Hallo,

ich habe ein problem mit meinem lc-display
ich möchte von meinem mikrocontroller ATmega 8535, eine 4 stellige Zahl 
ausgeben und habe dazu folgendes in der initialisierung des displays 
stehen:

void lcd_zeichen(char Zeichen)
{
  sbi(PORTD,rs);   // rs = 1 Datenmodus
  lcd_write(Zeichen);
  _delay_ms(1);
}

________________________________________________________
void lcd_zahl(unsigned char Zahl)

{
  lcd_zeichen(0x30+Zahl / 1000)    ;Zahl %= 1000;
  lcd_zeichen(0x30+Zahl / 100)    ;Zahl %= 100; //30 von ASCII Code
  //lcd_zeichen('.');
  lcd_zeichen(0x30+Zahl / 10)    ;Zahl %= 10;
  lcd_zeichen(0x30+Zahl);
}

im main programm rufe ich das ganze wie folgt auf:

long Schalldruckverhaeltnis = 8324

lcd_text(1,"Lautstaerke: ");
lcd_zahl(Schalldruckverhaeltnis);
lcd_text(1," dB");

es zeigt mir allerding immer nur die letzten 3 stellen an und rundet ab 
ca 217 auf 4 stellig zeigt aber trotzdem 0217 an

hoffentlich könnt ihr mir helfen
#3011817
Lesenswert?
• ▲
▼
Hi

Du uebergibt einen unsigned char an die Funktion. Das sind 8 Bit und 
damit ist der Wertbereich des Parameters auf 0 .. 255 beschraenkt.
Verwende statt dessen einen 16 Bit Typ. Z.B. uint16_t.
Wie gross ist der Wertbereich fuer 'Schalldruckverhaeltnis'? Hier hast 
Du einen long verwendet.

Gruesse
#3011978
Lesenswert?
• ▲
▼
Noch ein Tip

Anstelle der 0x30 in
1
 lcd_zeichen(0x30+Zahl / 1000);
schreibs lieber so
1
 lcd_zeichen( '0' + Zahl/1000 );
dann versteh man auch, was da passiert. Und das der ASCII Code von '0' 
gleich 0x30 ist ... das muss wirklich niemand auswendig wissen. Das kann 
man getrost dem Compiler überlassen.

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.