Forum: Mikrocontroller und Digitale Elektronik S65 Display initialisieren (LS020)


von Robert S. (razer) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo an alle,

Ich bin gerade beim initialisieren des S65 Displays LS020. Als 
Mikrocontroller verwende ich einen ARM Cortex mit 5MHz SPI Takt.

Leider funktioniert es noch nicht ganz. Im Anhang habe ich einen Bild, 
wie das Display nach der Initialisierung aussieht.
1
void lcd_init(void)
2
{
3
  //reset
4
  LCD_CS_LOW();
5
  LCD_RS_HIGH();
6
  LCD_RESET_LOW();
7
  delay_ms(100);
8
  LCD_RESET_HIGH();
9
  delay_ms(100);
10
11
  lcd_cmd(0xFD, 0xFD);
12
  lcd_cmd(0xFD, 0xFD);
13
14
  delay_ms(50);
15
16
  //init 1
17
  lcd_cmd(0xEF, 0x00);
18
  lcd_cmd(0xEE, 0x04);
19
  lcd_cmd(0x1B, 0x04);
20
  lcd_cmd(0xFE, 0xFE);
21
  lcd_cmd(0xFE, 0xFE);
22
  lcd_cmd(0xEF, 0x90);
23
  lcd_cmd(0x4A, 0x04);
24
  lcd_cmd(0x7F, 0x3F);
25
  lcd_cmd(0xEE, 0x04);
26
  lcd_cmd(0x43, 0x06);
27
28
  delay_ms(7); //important: 7-8 ms
29
30
  //init 2
31
  lcd_cmd(0xEF, 0x90);
32
  lcd_cmd(0x09, 0x83);
33
  lcd_cmd(0x08, 0x00);
34
  lcd_cmd(0x0B, 0xAF);
35
  lcd_cmd(0x0A, 0x00);
36
  lcd_cmd(0x05, 0x00);
37
  lcd_cmd(0x06, 0x00);
38
  lcd_cmd(0x07, 0x00);
39
  lcd_cmd(0xEF, 0x00);
40
  lcd_cmd(0xEE, 0x0C);
41
  lcd_cmd(0xEF, 0x90);
42
  lcd_cmd(0x00, 0x80);
43
  lcd_cmd(0xEF, 0xB0);
44
  lcd_cmd(0x49, 0x02);
45
  lcd_cmd(0xEF, 0x00);
46
  lcd_cmd(0x7F, 0x01);
47
  lcd_cmd(0xE1, 0x81);
48
  lcd_cmd(0xE2, 0x02);
49
  lcd_cmd(0xE2, 0x76);
50
  lcd_cmd(0xE1, 0x83);
51
52
  delay_ms(50);
53
54
  //init 3
55
  lcd_cmd(0x80, 0x01); //display on
56
}

Nach dem Display-On Kommando schaltet sich das Display ein, so wie es im 
Bild ersichtlich ist.

Weiß jemand was da falsch laufen könnte??

Danke für eure Hilfe.
lg Robert

von Marius S. (lupin) Benutzerseite


Lesenswert?

Alles richtig gelaufen, nur solltest du das display noch mit einem neuen 
Bild beschreiben. Das was du da siehst ist irgendwelcher Datenmüll...

von Robert S. (razer) Benutzerseite


Lesenswert?

Das mache ich danach
1
void lcd_draw(unsigned int color)
2
{
3
  ssi1_write((uint8_t)(color>>8));
4
  ssi1_write((uint8_t)color);
5
}
6
7
void fillDisplay(void)
8
{
9
  lcd_cmd(0xEF, 0x90);
10
  lcd_cmd(0x05, 0x00);
11
  lcd_cmd(0x06, 0x00);
12
  lcd_cmd(0x07, 0x00);
13
14
  for(int i=0; i<0xB580; i++)
15
  {
16
    lcd_draw(0);
17
  }
18
  
19
}

Wenn ich diese Funktion danach aufrufe, schaut es aus als ob das Bild 
einmal aktualisiert wird. Danach ist sofort wieder dieser Datenmüll am 
Display.

Weiß jemand warum?

lg Robert

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

Hallo Robert,

Setzt du den CS- und RS-Pin?

In meinem Code lcd_drawstart() und lcd_drawstop():
http://code.google.com/p/arm-webradio/source/browse/trunk/src/lcd/lcd_ls020.c


Gruß
Andreas

von Robert S. (razer) Benutzerseite


Lesenswert?

Hallo Andreas,

You made my day =)

lg Robert

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.