www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Testprogramm für LCD


Autor: Christian S. (mueke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich habe mir eine eigene Bibliothek für ein LCD-Display geschrieben. 
Diese funktioniert auch soweit. Jetzt habe ich ein Programm geschrieben, 
weches von meiner Eingabebaugruppe (8-Bit) die Bits 1-7 einliest. Diese 
Bits werden beim an-ausschalten von Bit8 übernommen.
Jetzt soll auf dem Display einmal die eingegebene Zahl und in der 
zweiten Zeile das hinter dieser Zahl 'versteckte' ASCII-Zeichen 
ausgeben. Ich habe folgendes Programm geschrieben, aber es funktioniert 
nicht ganz korrekt. Er schreibt erstens keine Zahl und in der zweiten 
Zeile erscheint kein ASCII-Zeichen, sondern steht gar nichts.

C-Programm
#define   F_CPU    16E6

#include <avr/io.h>
#include <avr/iom128.h>
#include <util/delay.h>
#include <lcd.h>

int main( void )
{
  unsigned char bcd[6];

  lcd_init();

  DDRA = 0x00;

  lcd_pos(0,0);
  lcd_string((unsigned char*)"Uncast:");
  lcd_pos(1,0);
  lcd_string((unsigned char*)"Cast:");

// Bis hier funktionierts

  while(1)
  {
    if((PINA & 0x80) == 0x80)
    {
      int_to_bcd((PINA & 0x7F), bcd); // Wandelt die eingegeben Zahl in BCD-Zahlen um und schreibt diese in das übergebene Feld
      
      while((PINA & 0x80) == 0x80);

      lcd_pos(0,9);
      lcd_string(bcd);
      lcd_pos(0,9);
      lcd_string(bcd);

// Ab hier funktiuonierts auch wieder

      lcd_blink(3);
      lcd_shift_right(3);
      lcd_blink(5);
      lcd_shift_left(3);
    }
  }
  return 0;
}

Teil aus der lcd.h
void int_to_bcd ( unsigned int x, unsigned char *erg)
{
  unsigned int i;
  
  for(i=0;i<5;i++)
  {
    erg[i] = x % 10;
    x /= 10;
  }

  erg[5] = '\0';
}

void lcd_string (unsigned char *kette)
{
  unsigned int i=0;

  while(kette[i] != '\0')
  {
    lcd_data(kette[i]);
    i++;
  }
}

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.