unsigned char INIT1[] = {0xFD, 0xFD, 0xFD, 0xFD, 0xEF, 0x00, 0xEE, 0x04, 0x1B, 0x04, 0xFE, 0xFE, 0xFE, 0xFE, 0xEF, 0x90, 0x4A, 0x04, 0x7F, 0x3F, 0xEE, 0x04, 0x43, 0x06}; unsigned char INIT2[] = {0xEF, 0x90, 0x09, 0x83, 0x08, 0x00, 0x0B, 0xAF, 0x0A, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0xEF, 0x00, 0xEE, 0x0C, 0xEF, 0x90, 0x00, 0x80, 0xEF, 0xB0, 0x49, 0x02 ,0xEF, 0x00, 0x7F, 0x01, 0xE1, 0x81, 0xE2, 0x02, 0xE2, 0x76, 0xE1, 0x83}; unsigned char INIT3[] = {0x80, 0x01}; void LCD_Init(void) { // Perform Reset SPI_RESET(RESET_ON); WaitMilli(10); SPI_RESET(RESET_OFF); // Init 1 LCD_SendCommand(INIT1, sizeof(INIT1)); WaitMilli(7); // Init 2 LCD_SendCommand(INIT2, sizeof(INIT2)); WaitMilli(50); // Init 3 LCD_SendCommand(INIT3, sizeof(INIT3)); SPI_RS(COMMAND); // Set to Commands SPI_Send_Byte(0xEF); SPI_Send_Byte(0x90); SPI_Send_Byte(0x00); SPI_Send_Byte(0x00); } void LCD_Test(void) { int i; SPI_RS(COMMAND); // Set to Commands SPI_Send_Byte(0xEF); SPI_Send_Byte(0x90); SPI_Send_Byte(0x05); SPI_Send_Byte(0x00); SPI_Send_Byte(0x06); SPI_Send_Byte(0x00); SPI_Send_Byte(0x07); SPI_Send_Byte(0x00); SPI_RS(DATA); // Send Data for (i = 0; i < 1000; i++) SPI_Send_Word(0xA000); } void SPI_Send_Word(unsigned int iWord) { SPI_Send_Byte((char)(iWord >> 8)); SPI_Send_Byte((char)(iWord)); } void SPI_Send_Byte(unsigned char cByte) { signed char c; SPI_CS(CS_ON); // Activate CS for (c = 7; c >= 0; c--) { if (ReadBit(&cByte,c) == TRUE) // Set Output Bit SetBit(&SPI_PORT, DAT); // Set Data high else ClrBit(&SPI_PORT, DAT); // Set Data low SetBit(&SPI_PORT, CLK); // Clock High ClrBit(&SPI_PORT, CLK); // Clock Low } SPI_CS(CS_OFF); // Deactivate CS }