Forum: Mikrocontroller und Digitale Elektronik Testprogramm für LCD


von Christian S. (mueke)


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
1
#define   F_CPU    16E6
2
3
#include <avr/io.h>
4
#include <avr/iom128.h>
5
#include <util/delay.h>
6
#include <lcd.h>
7
8
int main( void )
9
{
10
  unsigned char bcd[6];
11
12
  lcd_init();
13
14
  DDRA = 0x00;
15
16
  lcd_pos(0,0);
17
  lcd_string((unsigned char*)"Uncast:");
18
  lcd_pos(1,0);
19
  lcd_string((unsigned char*)"Cast:");
20
21
// Bis hier funktionierts
22
23
  while(1)
24
  {
25
    if((PINA & 0x80) == 0x80)
26
    {
27
      int_to_bcd((PINA & 0x7F), bcd); // Wandelt die eingegeben Zahl in BCD-Zahlen um und schreibt diese in das übergebene Feld
28
      
29
      while((PINA & 0x80) == 0x80);
30
31
      lcd_pos(0,9);
32
      lcd_string(bcd);
33
      lcd_pos(0,9);
34
      lcd_string(bcd);
35
36
// Ab hier funktiuonierts auch wieder
37
38
      lcd_blink(3);
39
      lcd_shift_right(3);
40
      lcd_blink(5);
41
      lcd_shift_left(3);
42
    }
43
  }
44
  return 0;
45
}

Teil aus der lcd.h
1
void int_to_bcd ( unsigned int x, unsigned char *erg)
2
{
3
  unsigned int i;
4
  
5
  for(i=0;i<5;i++)
6
  {
7
    erg[i] = x % 10;
8
    x /= 10;
9
  }
10
11
  erg[5] = '\0';
12
}
13
14
void lcd_string (unsigned char *kette)
15
{
16
  unsigned int i=0;
17
18
  while(kette[i] != '\0')
19
  {
20
    lcd_data(kette[i]);
21
    i++;
22
  }
23
}

von Frank (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.