¿cómo inicializar SD1289 LCD TFT?

1

Amigos,

He intentado iniciar TFT LCD con el chipset SD1289, Foto del resultado:

Códigodeinicioqueheescrito

voidLcd_Write_Com(intDH)//ÃüÁî{LCD_RS=0;LCD_CS=0;LCD_DataPortH=DH>>8;LCD_DataPortL=DH;LCD_WR=0;LCD_WR=1;LCD_CS=1;}voidLcd_Write_Data(intDH)//Êý¾Ý{LCD_RS=1;LCD_CS=0;LCD_DataPortH=DH>>8;LCD_DataPortL=DH;LCD_WR=0;LCD_WR=1;LCD_CS=1;}voidmain_init(void){LCD_RS=1;LCD_WR=1;LCD_RD=1;LCD_CS=1;LCD_REST=0;//P1=0xFF;delayms(100);LCD_REST=1;P2=0x00;delayms(20);P3=0x00;delayms(20);//StartscreeninitialisationLcd_Write_Com(OSC_START);//StartOscillationLcd_Write_Data(0x00);Lcd_Write_Data(0x01);delayms(30);Lcd_Write_Com(DRIVER_OUT);//DriverOutputControlLcd_Write_Data(0x23);Lcd_Write_Data(0x3F);delayms(30);Lcd_Write_Com(LCD_DRIVE_AC);//LCDDriveACControlLcd_Write_Data(0x06);Lcd_Write_Data(0x00);delayms(30);Lcd_Write_Com(POWER_CONTROL1);//PowerControl(1)Lcd_Write_Data(0xA8);Lcd_Write_Data(0xA6);delayms(30);Lcd_Write_Com(DISPLAY_CONTROL);//DisplayControlLcd_Write_Data(0x00);Lcd_Write_Data(0x33);delayms(30);Lcd_Write_Com(POWER_CONTROL2);//PowerControl(2)Lcd_Write_Data(0x00);Lcd_Write_Data(0x05);delayms(30);Lcd_Write_Com(POWER_CONTROL3);//PowerControl(3)Lcd_Write_Data(0x30);Lcd_Write_Data(0x0B);delayms(30);Lcd_Write_Com(POWER_CONTROL4);//PowerControl(4)Lcd_Write_Data(0x20);Lcd_Write_Data(0x00);delayms(30);Lcd_Write_Com(ENTRY_MODE);//SetDisplaycolormodefor65kcolorLcd_Write_Data(0x68);Lcd_Write_Data(0x30);delayms(30);Lcd_Write_Com(SLEEP_MODE);//ExitSleepModeLcd_Write_Data(0x00);Lcd_Write_Data(0x00);delayms(30);//delay30msLcd_Write_Com(POWER_CONTROL5);//PowerControl(5)Lcd_Write_Data(0x00);Lcd_Write_Data(0xA8);delayms(30);Lcd_Write_Com(HORIZONTAL_RAM_START);//HorizontalRAMaddresspositionstart/endsetupLcd_Write_Data(0xEF);//decimal239Lcd_Write_Data(0x00);//decimal0,i.e.horizontalrangesfrom0->239delayms(30);//PORvalueis0xEF00anyway.ThisaddressmustbesetbeforeRAMwriteLcd_Write_Com(VERTICAL_RAM_START);//VerticalRAMaddressstartpositionsettingLcd_Write_Data(0x00);//0x0000=decimal0Lcd_Write_Data(0x00);delayms(30);Lcd_Write_Com(VERTICAL_RAM_END);//VerticalRAMaddressendpositionsettingLcd_Write_Data(0x01);//0x013F=decimal319Lcd_Write_Data(0x3F);delayms(30);Lcd_Write_Com(RAM_WRITE);//Commanded'ecrituredanslaMemoireecranLCD_CLS(BLANC);//sendblank(mode16Bits)}

hojadedatosdeSD1289

enlace

    
pregunta Rick Ant

2 respuestas

1

No pasé mucho tiempo leyendo la hoja de datos que señalaba, pero noté algunos puntos que no se ajustan a tu código.

  1. ¿Está seguro de que tiene una buena comunicación con SD1289? Por favor, intente leer el registro de IR (0x00). De acuerdo con la hoja de datos (p.27), debería darle un valor de 0x8989. Es el ID del dispositivo. Si no obtiene este valor, eso significa que no tiene una buena conexión con el dispositivo y no se realizará el procedimiento de inicio.

  2. Si puede leer la ID del dispositivo, verifique si la escritura también funciona. Escribe algo, luego léelo y compara. Para la prueba, puede utilizar el registro 0x4F (Establecer GDDRAM Y addr)

  3. En mi opinión, parece que sus funciones de lectura / escritura están incompletas. Consulte la página 21. El pin E se utiliza como señal de reloj para la interfaz paralela MPU. En sus funciones solo veo señales de R / W #, CS # y D / C # (¿lo llamó RS?). No veo el reloj Otro problema es el ancho de datos. Está escribiendo / leyendo 16 bits (probablemente) mientras que la interfaz es de 18 bits. ¿Ha establecido los 2 bits restantes en algún valor definido?

  4. Secuencia de inicialización: se ve un poco diferente en la hoja de datos que en su código. Consulte la página 72. _ 1er paso en el manual - Reg 0x07 = 0x0021, e inicia OSC y luego escribe 0x0023 en R0x07.

respondido por el Grzegorz Majewski
0

Le recomiendo que le pida al fabricante de TFT el código de inicialización, por lo general, lo tienen preparado para los microcontroladores más populares (AVR y / o PIC). Saber que el protocolo del controlador es solo parte del problema, hay muchos parámetros que dependen del tipo de transistores utilizados y los componentes auxiliares que solo el fabricante conoce y es casi imposible descifrarlo por casualidad. Además, algunos de los parámetros determinan los voltajes aplicados, que tal vez (supongo que eso nunca me sucedió) pueden dañar la pantalla.

    
respondido por el fceconel

Lea otras preguntas en las etiquetas