Forum: Mikrocontroller und Digitale Elektronik Hilfe beim Initialisieren des SED1335F gesucht


von Michael S. (michi-s2)


Angehängte Dateien:

Lesenswert?

Hallo,

hab hier ein par Displays AMPIRE AT320240Q3 und AT320240Q6, mit 320 x 
240 Pixel.

Da ist ein SED1335F drin. Hab versucht die Initialisierung nach 
Datenblatt (S. 123) zu machen, haut allerdings nicht hin und ich hab 
keine Ahnung woran es liegen kann.

Wenn beim initialisieren der Reset gemacht wird, gibts kurz ein bis zwei 
horizontale Streifen, dann zeigt das Display nichts mehr an.
1
 
2
void lcd_init(){
3
4
  DDRB = 0xFF;
5
  DDRD = 0xFF;
6
7
  lcd_reset();
8
9
  lcd_setC(0x40);              //SYSTEM SET        
10
  lcd_setP(0x30);              //Setze P1
11
  lcd_setP(0x87);                     //Setze P2              
12
  lcd_setP(0x07);              //Setze P3
13
  lcd_setP(0x27);              //Setze P4  
14
  lcd_setP(0x2B);    //55          //Setze P5  
15
  lcd_setP(0xEF);              //Setze P6
16
  lcd_setP(0xF0);  //28            //Setze P7
17
  lcd_setP(0);              //Setze P8
18
  
19
  lcd_setC(0x44);              //SCROLL  
20
  lcd_setP(0);              //Setze P1
21
  lcd_setP(0);                     //Setze P2              
22
  lcd_setP(0x40);              //Setze P3
23
  lcd_setP(0);              //Setze P4  
24
  lcd_setP(0x10);              //Setze P5  
25
  lcd_setP(0x40);              //Setze P6
26
  lcd_setP(0);              //Setze P7
27
  lcd_setP(0x04);              //Setze P8
28
  lcd_setP(0);              //Setze P9
29
  lcd_setP(0x30);              //Setze P10
30
31
  lcd_setC(0x5A);              //HDOT SCR
32
  lcd_setP(0);              //Setze P1
33
34
  lcd_setC(0x5B);              //OVLAY
35
  lcd_setP(0x01);              //Setze P
36
37
  lcd_setC(0x58);              //DISP OFF
38
  lcd_setP(0x56);              //Setze P1
39
  
40
41
  //Clear data in first layer
42
  //Coursor auf Start
43
  lcd_setC(0x46);              //CSRW
44
  lcd_setP(0x00);              //Setze P1
45
  lcd_setP(0x00);              //Setze P2
46
47
  //überschreibe alles mit ' ' 
48
  lcd_setC(0x42);              //MWRITE
49
  for (int i = 0; i < 40 * 15; i++) lcd_setP(' ');
50
  
51
52
53
  //Clear data in second layer
54
  //Coursor auf Start
55
  lcd_setC(0x46);              //CSRW
56
  lcd_setP(0x00);              //Setze P1
57
  lcd_setP(0x10);              //Setze P2
58
59
  //überschreibe alles mit ' ' 
60
  lcd_setC(0x42);              //MWRITE
61
  for (int i = 0; i < 40 * 15; i++) lcd_setP(0x00);
62
63
64
  lcd_setC(0x59);              //DISP ON
65
  lcd_setP(0x10);              //Setze P1
66
67
  lcd_setC(0x5D);              //CSR FORM
68
  lcd_setP(0x04);              //Setze P1
69
  lcd_setP(0x86);              //Setze P2
70
71
  lcd_setC(0x4C);              //CSR DIR
72
73
  //Coursor auf Start
74
  lcd_setC(0x46);              //CSRW
75
  lcd_setP(0x00);              //Setze P1
76
  lcd_setP(0x00);              //Setze P2
77
78
  lcd_setC(0x42);              //MWRITE  
79
  lcd_setP(' ');              //Setze P1
80
  lcd_setP('M');                     //Setze P2              
81
  lcd_setP('i');              //Setze P3
82
  lcd_setP('c');              //Setze P4  
83
  lcd_setP('h');              //Setze P5  
84
  lcd_setP('i');              //Setze P6
85
}
86
87
88
void lcd_setC(char c){
89
90
  PORTD = (1<<LCD_A0) | (1<<LCD_RD) | (1<<LCD_RESET);       //Setze C
91
  asm volatile ("nop");
92
  PORTB = c;    
93
94
  for(int i = 0; i < 100; i++) asm volatile ("nop"); //pause
95
  
96
}
97
98
99
void lcd_setP(char p){
100
  PORTD = (1<<LCD_RD) | (1<<LCD_RESET);  //P setzen
101
  asm volatile ("nop");
102
  PORTB = p;
103
104
  for(int i = 0; i < 100; i++) asm volatile ("nop"); //pause
105
}
106
107
108
109
void lcd_reset(){
110
111
  for(unsigned int i = 0; i < 53300; i++) asm volatile ("nop");  //3ms Warten
112
113
  PORTB = 0;  
114
  PORTD = 0;
115
116
  for(int i = 0; i < 100; i++) asm volatile ("nop"); //pause
117
118
  PORTD = (1<<LCD_RESET);  
119
120
  for(unsigned int i = 0; i <  53300; i++) asm volatile ("nop");  //3ms Warten
121
}


Danke für die Hilfe!
Michi

von Thomas Forster (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe mal für ein anderes 320x240-Display folgenden Code quick and 
dirty zusammengebastelt. Funktioniert bei mir mit einen SED1335.
Evtl. hilft dir die Initialisierung weiter.

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.