-
        

Ergebnis 1 bis 1 von 1

Thema: Display Initialisieren HILFE

  1. #1

    Display Initialisieren HILFE

    Anzeige

    Hallo,
    ich versuche nun schon seid etlichen Stunden ein Display zu initialisieren, nur leider bekomme ich nur Schneegestöber im wahrsten Sinne des Wortes. Ich hoffe hier ist jemand der sich das Datenblatt mal ansehen würde und mir vllt sagen kann was ich vergessen, falsch gemacht habe.
    Kann leider nur die Initroutine hochladen da das gesamte blatt zu groß ist aber ich stell gern bei Anmerkungen weitere seiten einzeln rein =)

    Danke schoneinmal im vorraus
    Code:
    void lcd_init(void) 
    {	
    	// 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);*/
    
            LPC_GPIO1 -> FIODIR |= A0; //A0
            LPC_GPIO1 -> FIODIR |= D0;  //D0
            LPC_GPIO1 -> FIODIR |= XWR; //XWR
            LPC_GPIO1 -> FIODIR |= XRES;  //XRES
            LPC_GPIO1 -> FIOCLR |= XRES;
            LPC_GPIO1 -> FIODIR |= XCS;  //XCS
            LPC_GPIO1 -> FIODIR |= C86;  //C86
            LPC_GPIO1 -> FIODIR |= PS; //PS
    
    
    	// Verzögerung für stabile Spannungsversorgung
    	delayMs(100);
    
            // Taktleitung 
    	LPC_GPIO1 -> FIOPIN  |= XWR;             // L H x x clk ser
    
    	// Chip Select
    	LPC_GPIO1 -> FIOPIN  |= XCS;              // L H L x clk ser
    	
    	// Auf seriellen Übertragungsmodus schalten
    	LPC_GPIO1 -> FIOPIN |= C86;               // x H x x x x
    	LPC_GPIO1 -> FIOPIN &= ~PS;               // L H x x x x
    
            // Taktleitung 
    	LPC_GPIO1 -> FIOPIN  &= ~XCS;             // L H L x x x
    
    	// Chip Select
    	LPC_GPIO1 -> FIOPIN &= ~XWR;              // L H L x clk ser
    
            // PARA+CMD
            LPC_GPIO1 -> FIOPIN  &= ~A0;              // L H L L clk ser
    
    	// Reset aufheben
    	LPC_GPIO1 -> FIOPIN |= XRES;
    
    	// Verzögerung nach Reset-Release
    	delayMs(250);	
    
    	// Display aus dem Sleep Mode holen
    	lcd_send_byte(CMD, 0x11);                 // L H L L clk ser
    	delayMs(50);	
    
    
    	// Column Adress Region setzen
    	lcd_send_byte(CMD, 0x2A);                 // L H L L clk ser
    	lcd_send_byte(PARA, 0x00);                // L H L H clk ser
    	lcd_send_byte(PARA, 0x06);                // L H L H clk ser
    	lcd_send_byte(PARA, 0x00);                // L H L H clk ser
    	lcd_send_byte(PARA, 0x7D);                // L H L H clk ser
    
    	// Page Adress Region setzen
    	lcd_send_byte(CMD, 0x2B);                 // L H L L clk ser
    	lcd_send_byte(PARA, 0x00);                // L H L H clk ser
    	lcd_send_byte(PARA, 0x00);                // L H L H clk ser
    	lcd_send_byte(PARA, 0x00);                // L H L H clk ser
            lcd_send_byte(PARA, 0xAF);                // L H L H clk ser
    
    	// Displayart setzen Monochrom
            lcd_send_byte(CMD, 0x3A);                // L H L L clk ser
    	lcd_send_byte(PARA, 0x02);               // L H L H clk ser
    
    	delayMs(10);
    
            // RGB Color set
            lcd_send_byte(CMD, 0x2D);   //              L H L L clk ser
    	lcd_send_byte(PARA, 0x00);  //1             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //2             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //3             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //4             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //5             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //6             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //7             L H L H clk ser
            lcd_send_byte(PARA, 0xFF);  //              L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //1             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //2             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //3             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //4             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //5             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //6             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //7             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //8             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //9             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //10            L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //11            L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //12            L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //13            L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //14            L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //15            L H L H clk ser
            lcd_send_byte(PARA, 0xFF);  //              L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //1             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //2             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //3             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //4             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //5             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //6             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //7             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //8             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //9             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //10            L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //11            L H L H clk ser
            lcd_send_byte(PARA, 0xFF); //               L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //1             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //2             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //3             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //4             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //5             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //6             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //7             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //8             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //9             L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //10            L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //11            L H L H clk ser
            lcd_send_byte(PARA, 0x00);  //12            L H L H clk ser
    
            lcd_send_byte(CMD, 0x2C); //                L H L L clk ser
    
            delayMs(10);
    
            //Taktleitung
            LPC_GPIO1 -> FIOPIN  |= XWR;//              L H L L H L
    
            // Chip Select
    	LPC_GPIO1 -> FIOPIN |= XCS;//               L H H L H L
    
            //Datenleitung
            LPC_GPIO1 -> FIOPIN &= ~D0;
    
            // Auf parallele Übertragungsmodus schalten
    	LPC_GPIO1 -> FIOPIN &= ~C86;//              L L H L H L
    	LPC_GPIO1 -> FIOPIN |= PS;//                H L H L H L
    
            // Chip Select
    	LPC_GPIO1 -> FIOPIN &= ~XCS; //             H L L L H L
    
            //Datenleitung
            LPC_GPIO1 -> FIOPIN |= D0;
    
            // Taktleitung
            LPC_GPIO1 -> FIOPIN &= ~XWR; //             H L L L clk par
    
            // CMD+PARA Leitung
            LPC_GPIO1 -> FIOPIN |= A0;//                H L L H clk par
    
            //Sende dots one bit
            for (uint16_t y = 0; y <= 330 ; y++)
    	{
            lcd_send_pixel(0x00);//                     H L L H clk par
            lcd_send_pixel(0x00);//                     H L L H clk par
            }
            //lcd_clear_display();
    
            // Taktleitung
            LPC_GPIO1 -> FIOPIN  |= XWR; //             H L L H H L
    
    	// Chip Select
    	LPC_GPIO1 -> FIOPIN |= XCS;//               H L H H H L
    
            //Datenleitung
            LPC_GPIO1 -> FIOPIN &= ~D0;
    
    	// Auf seriellen Übertragungsmodus schalten
    	LPC_GPIO1 -> FIOPIN |= C86;//               H H H H H L
    	LPC_GPIO1 -> FIOPIN &= ~PS;//               L H H H H L
    
            //Datenleitung
            LPC_GPIO1 -> FIOPIN |= D0;
            	
            // Chip Select
    	LPC_GPIO1 -> FIOPIN &= ~XCS;//              L H L H H L
            
            //Taktleitung
            LPC_GPIO1 -> FIOPIN  &= ~XWR;//             L H L H clk ser
    
    	// Display on	
    	lcd_send_byte(CMD, 0x29);//                 L H L L clk ser
    
    } 
    
    
    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++)
    	{
    		LPC_GPIO1 -> FIOPIN &= ~XWR;
    		
    		if (u8_Byte & (1<<(7 - x)))
    		{
    			LPC_GPIO1 -> FIOPIN |= D0;
    		}
    		else
    		{
    			LPC_GPIO1 -> FIOPIN &= ~D0;
    		}
    
    		LPC_GPIO1 -> FIOPIN |= XWR;				
    	}
    
    }
    
    void lcd_send_pixel(uint32_t u32_Block)
    {
      LPC_GPIO1 -> FIOPIN &= ~XWR;
      for (uint32_t x = 0; x <= 31 ; x++)
      {
        if (u32_Block & (1<<(31 - x)))
        {
          LPC_GPIO1 -> FIOPIN |= D0;
        }
        else
        {
          LPC_GPIO1 -> FIOPIN &= ~D0;
        }		
      }
       LPC_GPIO1 -> FIOPIN |= XWR;
    }
    Angehängte Dateien Angehängte Dateien

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •