/**************************************************************** Function name: TFT_Init() Inputs : TFT initialization parameters Outputs : None Description : Initialize the TFT LCD ****************************************************************/ void TFT_Init(void) { PLL_Init(); TFT_CmdWrite(0x10); //SYSR bit[4:3] color bit[2:1]= MPU interface TFT_DataWrite(0x0C); //65k TFT_CmdWrite(0x04); //PCLK TFT_DataWrite(0x81); delay_ms(1); //Horizontal set TFT_CmdWrite(0x14); //HDWR//Horizontal Display Width Setting Bit[6:0] TFT_DataWrite(0x63); //Horizontal display width(pixels) = (HDWR + 1)*8 TFT_CmdWrite(0x15); //Horizontal Non-Display Period Fine Tuning Option Register (HNDFTR) TFT_DataWrite(0x00); //Horizontal Non-Display Period Fine Tuning(HNDFT) [3:0] TFT_CmdWrite(0x16); //HNDR//Horizontal Non-Display Period Bit[4:0] TFT_DataWrite(0x03); //Horizontal Non-Display Period (pixels) = (HNDR + 1)*8 TFT_CmdWrite(0x17); //HSTR//HSYNC Start Position[4:0] TFT_DataWrite(0x03); //HSYNC Start Position(PCLK) = (HSTR + 1)*8 TFT_CmdWrite(0x18); //HPWR//HSYNC Polarity ,The period width of HSYNC. TFT_DataWrite(0x0B); //HSYNC Width [4:0] HSYNC Pulse width(PCLK) = (HPWR + 1)*8 //Vertical set TFT_CmdWrite(0x19); //VDHR0 //Vertical Display Height Bit [7:0] TFT_DataWrite(0xDF); //Vertical pixels = VDHR + 1 TFT_CmdWrite(0x1a); //VDHR1 //Vertical Display Height Bit [8] TFT_DataWrite(0x01); //Vertical pixels = VDHR + 1 TFT_CmdWrite(0x1b); //VNDR0 //Vertical Non-Display Period Bit [7:0] TFT_DataWrite(0x20); //Vertical Non-Display area = (VNDR + 1) TFT_CmdWrite(0x1c); //VNDR1 //Vertical Non-Display Period Bit [8] TFT_DataWrite(0x00); //Vertical Non-Display area = (VNDR + 1) TFT_CmdWrite(0x1d); //VSTR0 //VSYNC Start Position[7:0] TFT_DataWrite(0x16); //VSYNC Start Position(PCLK) = (VSTR + 1) TFT_CmdWrite(0x1e); //VSTR1 //VSYNC Start Position[8] TFT_DataWrite(0x00); //VSYNC Start Position(PCLK) = (VSTR + 1) TFT_CmdWrite(0x1f); //VPWR //VSYNC Polarity ,VSYNC Pulse Width[6:0] TFT_DataWrite(0x01); //VSYNC Pulse Width(PCLK) = (VPWR + 1) TFT_CmdWrite(0xc7); TFT_DataWrite(0x01); TFT_CmdWrite(0x01); TFT_DataWrite(0x80); g_LcdHeight = LCD_70_HEIGHT; g_LcdWidth = LCD_70_WIDTH; RA8875_SetDirection(0); TFT_CmdWrite(0x41); TFT_DataWrite(0x00); Active_Window(0x00,g_LcdWidth,0x00,g_LcdWidth); TFT_CmdWrite(0x8a);//PWM setting TFT_DataWrite(0x80); TFT_CmdWrite(0x8a);//PWM setting TFT_DataWrite(0x81);//open PWM TFT_CmdWrite(0x8b);//Backlight brightness setting TFT_DataWrite(0xff);//Brightness parameter 0xff-0x00 delay_ms(500); TFT_Write_Direction(0X01,0X80);//display on } /**************************************************************** Function name: PLL_Init() Inputs : Initialize PLL Outputs : None Description : Initialize PLL of TFT LCD ****************************************************************/ void PLL_Init(void) { TFT_CmdWrite(0x88); TFT_DataWrite(0x0C); delay_ms(1); TFT_CmdWrite(0x89); TFT_DataWrite(0x02); delay_ms(1); } /**************************************************************** Function name: TFT_Write_Direction() Inputs : command and Data Outputs : None Description : Write command and parameter ****************************************************************/ void TFT_Write_Direction(uint8_t Cmd,uint8_t Data) { TFT_CmdWrite(Cmd); TFT_DataWrite(Data); } /**************************************************************** Function name: TFT_CmdWrite() Inputs : command and Data Outputs : None Description : Write command and parameter ****************************************************************/ void TFT_CmdWrite(uint8_t Cmnd_u8) { SPI_Select_CS(true); SPI_Perform_Write(0x80); SPI_Perform_Write(Cmnd_u8); SPI_Select_CS(false); } /**************************************************************** Function name: TFT_DataWrite() Inputs : Data Outputs : None Description : ****************************************************************/ void TFT_DataWrite(uint8_t Data_u8) { SPI_Select_CS(true); SPI_Perform_Write(0x00); SPI_Perform_Write(Data_u8); SPI_Select_CS(false); } /**************************************************************** Function name: Active_Window() Inputs : Data Outputs : None Description : ****************************************************************/ void Active_Window(uint16_t XL,uint16_t XR ,uint16_t YL ,uint16_t YR) { uint8_t temp; //setting active window X temp=XL; TFT_CmdWrite(0x30);//HSAW0 TFT_DataWrite(temp); temp=XL>>8; TFT_CmdWrite(0x31);//HSAW1 TFT_DataWrite(temp); //setting active window Y temp= XR; TFT_CmdWrite(0x34);//VSAW0 TFT_DataWrite(temp); temp=temp>>8; TFT_CmdWrite(0x35);//VSAW1 TFT_DataWrite(temp); temp=YL; TFT_CmdWrite(0x32);//HEAW0 TFT_DataWrite(temp); temp=YL>>8; TFT_CmdWrite(0x33);//HEAW1 TFT_DataWrite(temp); temp= YR; TFT_CmdWrite(0x36);//VEAW0 TFT_DataWrite(temp); temp=temp>>8; TFT_CmdWrite(0x37);//VEAW1 TFT_DataWrite(temp); } /* ********************************************************************************************************* * Function name: RA8875_SetDirection * Inputs: * ********************************************************************************************************* */ void RA8875_SetDirection(uint8_t _ucDir) { uint8_t reg20H = 0; s_reg_40H = 0x01; if (_ucDir == 0) { s_reg_40H = 0x01; reg20H = (0 << 3) | (0 << 2); } else if (_ucDir == 1) { s_reg_40H = 0x01; reg20H = (1 << 3) | (1 << 2); } else if (_ucDir == 2) { s_reg_40H = 0x09; reg20H = (0 << 3) | (1 << 2); } else if (_ucDir == 3) { s_reg_40H = 0x09; reg20H = (1 << 3) | (0 << 2); } TFT_CmdWrite(0x40); TFT_DataWrite(s_reg_40H); TFT_CmdWrite(0x20); TFT_DataWrite(reg20H); if (_ucDir > 1) { uint16_t temp; if (g_LcdHeight < g_LcdWidth) { temp = g_LcdHeight; g_LcdHeight = g_LcdWidth; g_LcdWidth = temp; } } else { uint16_t temp; if (g_LcdHeight > g_LcdWidth) { temp = g_LcdHeight; g_LcdHeight = g_LcdWidth; g_LcdWidth = temp; } } } //////////////Background color settings void Text_Background_Color1(uint16_t b_color) { TFT_CmdWrite(0x60);//BGCR0 TFT_DataWrite((uint8_t)(b_color>>11)); TFT_CmdWrite(0x61);//BGCR0 TFT_DataWrite((uint8_t)(b_color>>5)); TFT_CmdWrite(0x62);//BGCR0 TFT_DataWrite((uint8_t)(b_color)); }