www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TFT monochrom Init


Autor: Tom (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich seh den Wald vor lauter Bäumen nicht glaube ich. Ich versuche gerade 
ein TFT-monochrom Display zu initialisieren, erhalte jedoch immer nur 
ein Schneebild und ich weiß nicht woran es liegen könnte.
Ich poste euch hier mal meinen Code sowie die zwei Funktionen auf die 
die Init zugreift und hoffe ihr könnt mir helfen im Anhang befindet sich 
die Initialisierung aus dem Datenblatt. Achja ich programmiere einen 
LPC1768

vielen Dank schoneinmal fürs rübergucken.
delayMs(250);  
  // Pins für die Displaysteuerung als Ausgänge deklarieren
  DDR_MFA_A0    |= (PIN_MFA_A0);
  DDR_MFA_D0    |= (PIN_MFA_D0);
  DDR_MFA_XRES    |= (PIN_MFA_XRES);
  DDR_MFA_XCS    |= (PIN_MFA_XCS);
  DDR_MFA_XWR    |= (PIN_MFA_XWR);
  DDR_MFA_C86    |= (PIN_MFA_C86);
  DDR_MFA_PS    |= (PIN_MFA_PS);

  // Verzögerung für stabile Spannungsversorgung
  delayMs(100);
  
  // Auf seriellen Übertragungsmodus schalten
  PORT_MFA_C86 |= (PIN_MFA_C86);
  PORT_MFA_PS &= ~(PIN_MFA_PS);

  // Chip Select
  PORT_MFA_XCS &= ~(PIN_MFA_XCS);
    
  // Taktleitung 
  PORT_MFA_XWR  &= ~(PIN_MFA_XWR);

  // Reset aufheben
  PORT_MFA_XRES |= (PIN_MFA_XRES);

  // Verzögerung nach Reset-Release
  delayMs(250);  

  // Display aus dem Sleep Mode holen
  lcd_send_byte(CMD, 0x11);
  delayMs(50);  


  // Column Adress Region setzen
  lcd_send_byte(CMD, 0x2A);
  lcd_send_byte(PARA, 0x00);
  lcd_send_byte(PARA, 0x06);
  lcd_send_byte(PARA, 0x00);
  lcd_send_byte(PARA, 0x7D);

  // Page Adress Region setzen
  lcd_send_byte(CMD, 0x2B);
  lcd_send_byte(PARA, 0x00);
  lcd_send_byte(PARA, 0x00);
  lcd_send_byte(PARA, 0x00);
        lcd_send_byte(PARA, 0xAF);

  lcd_send_byte(CMD, 0x3A);
  lcd_send_byte(PARA, 0x02);

  delayMs(10);

  /* Für Landscape-Format eincodieren */
  /* -------------------------------- */
  // defines LCD_WIDTH & LCD_HEIGHT müssen getauscht werden!
  // defines LCD_RAM_PAGES_START_ADDRESS/LCD_RAM_PAGES_END_ADDRESS & LCD_RAM_COLUMNS_START_ADDRESS/LCD_RAM_COLUMNS_END_ADDRESS müssen getauscht werden!
  /*
  lcd_send_byte(CMD, 0x36);
  lcd_send_byte(PARA, 0b01100000);

  _delay_ms(10);
  */
        lcd_send_byte(CMD, 0x2D);
  lcd_send_byte(PARA, 0x00);   //1
        lcd_send_byte(PARA, 0x00);  //2
        lcd_send_byte(PARA, 0x00);  //3
        lcd_send_byte(PARA, 0x00);  //4
        lcd_send_byte(PARA, 0x00);  //5
        lcd_send_byte(PARA, 0x00);  //6
        lcd_send_byte(PARA, 0x00);  //7
        lcd_send_byte(PARA, 0xFF);  
        lcd_send_byte(PARA, 0x00);  //1
        lcd_send_byte(PARA, 0x00);  //2
        lcd_send_byte(PARA, 0x00);  //3
        lcd_send_byte(PARA, 0x00);  //4
        lcd_send_byte(PARA, 0x00);  //5
        lcd_send_byte(PARA, 0x00);  //6
        lcd_send_byte(PARA, 0x00);  //7
        lcd_send_byte(PARA, 0x00);  //8
        lcd_send_byte(PARA, 0x00);  //9
        lcd_send_byte(PARA, 0x00);  //10
        lcd_send_byte(PARA, 0x00);  //11
        lcd_send_byte(PARA, 0x00);  //12
        lcd_send_byte(PARA, 0x00);  //13
        lcd_send_byte(PARA, 0x00);  //14
        lcd_send_byte(PARA, 0x00);  //15
        lcd_send_byte(PARA, 0xFF);
        lcd_send_byte(PARA, 0x00);  //1
        lcd_send_byte(PARA, 0x00);  //2
        lcd_send_byte(PARA, 0x00);  //3
        lcd_send_byte(PARA, 0x00);  //4
        lcd_send_byte(PARA, 0x00);  //5
        lcd_send_byte(PARA, 0x00);  //6
        lcd_send_byte(PARA, 0x00);  //7
        lcd_send_byte(PARA, 0x00);  //8
        lcd_send_byte(PARA, 0x00);  //9
        lcd_send_byte(PARA, 0x00);  //10
        lcd_send_byte(PARA, 0x00);  //11
        lcd_send_byte(PARA, 0xFF);
        lcd_send_byte(PARA, 0x00);  //1
        lcd_send_byte(PARA, 0x00);  //2
        lcd_send_byte(PARA, 0x00);  //3
        lcd_send_byte(PARA, 0x00);  //4
        lcd_send_byte(PARA, 0x00);  //5
        lcd_send_byte(PARA, 0x00);  //6
        lcd_send_byte(PARA, 0x00);  //7
        lcd_send_byte(PARA, 0x00);  //8
        lcd_send_byte(PARA, 0x00);  //9
        lcd_send_byte(PARA, 0x00);  //10
        lcd_send_byte(PARA, 0x00);  //11      
        lcd_send_byte(PARA, 0x00);  //12

        lcd_send_byte(CMD, 0x2C);
        delayMs(10);

        //Taktleitung
        PORT_MFA_XWR  |= (PIN_MFA_XWR);

        // Datenleitung
        PORT_MFA_D0   &= ~(PIN_MFA_D0);

        // CMD+PARA Leitung
        PORT_MFA_A0   &= ~(PIN_MFA_A0);

  // Chip Select
  PORT_MFA_XCS |= (PIN_MFA_XCS);

        // Auf parallele Übertragungsmodus schalten
  PORT_MFA_C86 &= ~(PIN_MFA_C86);
  PORT_MFA_PS |= (PIN_MFA_PS);

        // Chip Select
  PORT_MFA_XCS &= ~(PIN_MFA_XCS);

        // Taktleitung
        PORT_MFA_XWR &= ~(PIN_MFA_XWR);

        // CMD+PARA Leitung
        PORT_MFA_A0 |= (PIN_MFA_A0);

        //Sende dots one bit
        for (uint16_t y = 0; y <= 1320 ; y++)
  {
        lcd_send_pixel(0xFF);
        lcd_send_pixel(0xFF);
        }

        // Taktleitung
        PORT_MFA_XWR  |= (PIN_MFA_XWR);

        // Datenleitung
        PORT_MFA_D0   &= ~(PIN_MFA_D0);

  // Chip Select
  PORT_MFA_XCS |= (PIN_MFA_XCS);

  // Auf seriellen Übertragungsmodus schalten
  PORT_MFA_C86 |= (PIN_MFA_C86);
  PORT_MFA_PS &= ~(PIN_MFA_PS);
          
        // Chip Select
  PORT_MFA_XCS &= ~(PIN_MFA_XCS);
        
        //Taktleitung
        PORT_MFA_XWR  &= ~(PIN_MFA_XWR);

        //Datenleitung
        PORT_MFA_D0   |= (PIN_MFA_D0);

  // Display on  
  lcd_send_byte(CMD, 0x29);


void lcd_send_byte(uint8_t u8_Type, uint8_t u8_Byte)
{
  if (u8_Type == CMD)
  {
    LCD_COMMAND_MODE();
  }
  else
  {
    LCD_PARAMETER_MODE();
  }
  
  // -> Serielle Übertragung des Bytes
  for (uint8_t x = 0; x <= 7 ; x++)
  {
    PORT_MFA_XWR &= ~(PIN_MFA_XWR);
    
    if (u8_Byte & (1<<(7 - x)))
    {
      PORT_MFA_D0 |= (PIN_MFA_D0);
    }
    else
    {
      PORT_MFA_D0 &= ~(PIN_MFA_D0);
    }

    PORT_MFA_XWR |= (PIN_MFA_XWR);        
  }

}

void lcd_send_pixel(uint8_t u8_Block)
{
for (uint8_t x = 0; x <= 7 ; x++)
  {
    PORT_MFA_XWR &= ~(PIN_MFA_XWR);

    
    if (u8_Block & (1<<(7 - x)))
    {
      PORT_MFA_D0 |= (PIN_MFA_D0);
    }
    else
    {
      PORT_MFA_D0 &= ~(PIN_MFA_D0);
    }

    PORT_MFA_XWR |= (PIN_MFA_XWR);        
  }
}

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.