www.mikrocontroller.net

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


Autor: Robert S. (razer) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.
void lcd_init(void)
{
  //reset
  LCD_CS_LOW();
  LCD_RS_HIGH();
  LCD_RESET_LOW();
  delay_ms(100);
  LCD_RESET_HIGH();
  delay_ms(100);

  lcd_cmd(0xFD, 0xFD);
  lcd_cmd(0xFD, 0xFD);

  delay_ms(50);

  //init 1
  lcd_cmd(0xEF, 0x00);
  lcd_cmd(0xEE, 0x04);
  lcd_cmd(0x1B, 0x04);
  lcd_cmd(0xFE, 0xFE);
  lcd_cmd(0xFE, 0xFE);
  lcd_cmd(0xEF, 0x90);
  lcd_cmd(0x4A, 0x04);
  lcd_cmd(0x7F, 0x3F);
  lcd_cmd(0xEE, 0x04);
  lcd_cmd(0x43, 0x06);

  delay_ms(7); //important: 7-8 ms

  //init 2
  lcd_cmd(0xEF, 0x90);
  lcd_cmd(0x09, 0x83);
  lcd_cmd(0x08, 0x00);
  lcd_cmd(0x0B, 0xAF);
  lcd_cmd(0x0A, 0x00);
  lcd_cmd(0x05, 0x00);
  lcd_cmd(0x06, 0x00);
  lcd_cmd(0x07, 0x00);
  lcd_cmd(0xEF, 0x00);
  lcd_cmd(0xEE, 0x0C);
  lcd_cmd(0xEF, 0x90);
  lcd_cmd(0x00, 0x80);
  lcd_cmd(0xEF, 0xB0);
  lcd_cmd(0x49, 0x02);
  lcd_cmd(0xEF, 0x00);
  lcd_cmd(0x7F, 0x01);
  lcd_cmd(0xE1, 0x81);
  lcd_cmd(0xE2, 0x02);
  lcd_cmd(0xE2, 0x76);
  lcd_cmd(0xE1, 0x83);

  delay_ms(50);

  //init 3
  lcd_cmd(0x80, 0x01); //display on
}

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

Autor: Marius S. (lupin) Benutzerseite
Datum:

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

Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mache ich danach
void lcd_draw(unsigned int color)
{
  ssi1_write((uint8_t)(color>>8));
  ssi1_write((uint8_t)color);
}

void fillDisplay(void)
{
  lcd_cmd(0xEF, 0x90);
  lcd_cmd(0x05, 0x00);
  lcd_cmd(0x06, 0x00);
  lcd_cmd(0x07, 0x00);

  for(int i=0; i<0xB580; i++)
  {
    lcd_draw(0);
  }
  
}

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

Autor: Andreas Watterott (andreasw) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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/brows...


Gruß
Andreas

Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas,

You made my day =)

lg Robert

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.