LC Display will einfach nicht

Gast #1466976
Hallo Leute, ich bin total am verzweifeln...

Seit gestern mmorgen versuche ich intensivst mein Display zum
Laufen zu kriegen (Display: 
http://www.pollin.de/shop/downloads/D120420D.PDF)

Die Beschaltung ist folgender Maßen:

DB4 - DB7: PC0 - PC3
RS: PC4
E: PC5
RW: GND


Ich habe mir nun folgenden Code zusammenkopiert und abgeändert ( Ja ich 
bin ein Anfänger) und komm nicht drauf, warum es nicht funktioniert.
Nach der Initialisierung und lcd_clear sollte das Display ja nichts 
anzeigen.
(Blincken und Cursor aus siehe Code).
Jedoch zeigt das Display (2x16) in der ersten Zeile nur schwarze Balken 
an...

Ist in dem Code was falsch oder meint ihr das Display ist hinüber ( was 
garnicht schlecht wäre, dann könnte ich meine seit gestern angestaute 
Wut an ihm auslassen)


Code:
1
#include <util/delay.h>
2
#include <lcd.h>
3

4
void long_delay(int ms) {
5
    for(; ms>0; ms--) _delay_ms(1);
6
}
7

8

9

10
void lcd_init (void)
11

12
{  
13

14
  DDRC = 0xff;
15

16
  
17
   long_delay(100);  
18
   PORTC =3;
19
   unsigned int a = 0;
20
     
21
   while(a < 3){
22
    long_delay(10);
23
    PORTC |= (1<<PC5);
24
    long_delay(10);
25
    PORTC &= ~(1<<PC5);
26
    a++;
27
   }
28

29
   long_delay(10);
30
  
31
  PORTC = 2;
32
  long_delay(10);
33
  PORTC |= (1<<PC5);
34
  long_delay(10);
35
  PORTC &= ~(1<<PC5);
36
  long_delay(10);
37
  
38
  lcd_write(40,0);
39

40
  lcd_write(12,0);
41
  
42
  lcd_write(4,0); 
43

44

45
}
46

47

48
void lcd_write (char Data,char CD)
49

50
{
51

52
  //Soll ins Seuer oder Datenregister geschrieben werden?
53
  if (CD == 0)
54
    {
55
    LCD_Port_Write &=~ (1<<PC4); //RS = 0 Steuerregister
56
    }
57
    else
58
    {
59
    LCD_Port_Write |= (1<<PC4); //RS = 1 Dataregister
60
    }
61

62

63

64
  //Schreiben der 1. 4Bit an das LCD Display
65
  LCD_Port_Write = (LCD_Port_Write&0xF0) + ((Data&0xF0)>>4); 
66
  LCD_Port_Write |= (1<<PC5);
67
  long_delay(10);
68
  LCD_Port_Write &=~ (1<<PC5);  
69

70
  //Schreiben der 2. 4Bit an das LCD Display  
71
  LCD_Port_Write = (LCD_Port_Write&0xF0) + (Data&0x0F);
72
  LCD_Port_Write |= (1<<PC5);
73
  long_delay(10);
74
  LCD_Port_Write &=~ (1<<PC5);
75
}
76

77

78

79

80

81
void lcd_clear (void)
82
{
83
  lcd_write (1,0); //Clear Display
84
  lcd_write (0x80,0);  //Set DD-Ram Adresse = 0
85
}
86

87

88
int main(void){
89
  
90
  long_delay(100);
91
  lcd_init();
92
  long_delay(100);
93
  lcd_clear();
94

95
  while(1){
96
  }
97

98
}
Gast #1466996
1
//Schreiben der 2. 4Bit an das LCD Display  
2
  LCD_Port_Write = (LCD_Port_Write&0xF0) + (Data&0x0F);
3
  LCD_Port_Write |= (1<<PC5);
4
  long_delay(10);
5
  LCD_Port_Write &=~ (1<<PC5);

Kann hier vill. der Fehler versteckt sein?
1
(LCD_Port_Write&0xF0) + (Data&0x0F);
???(einmal 0xF0 und einmal 0x0F)???
Nicht böse sein wenn ich unsinniges frag kenne mich mit der Sprache 
nicht aus!!

MfG
Gast #1467065
Hatte ich vergessen, es handelt sich um einen ATMEGA 8.
Also JTAG kommt für das Problem nicht in Frage.

@I2C, kann nicht sagen, ob das einen Fehler enthält, dafür kenn ich mich 
zu wenig mit der Syntax aus.

Sonst jemand ne Idee?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.