//8bit initial code #include "lib\W78e365.h" #include "lib\extent.h" #include "lib\Interface.h" #define Number 8 Byte Item; //===================================================================================== void main(void); //Main void Lcd_init(void); //LCD initial void Delayms(Word wait); //Time Delay ->1ms void Delay(Byte wait) ; void LCD_ILI9481_CMD(Byte Command); //Write Command void LCD_ILI9481_INDEX(Word ComData); //Write Parameter for Command void command_up(); void receivebyte_FPGA(); #define DATAIN 1; #define DATAOUT 0; Byte VCM_value; Byte vcoml; void Writepix(Word Data); //================================================================================================================ //================================================================================================================ // Boot void main(void)//Main { CS=1; SDI=1; SCL=1; RESET=1; rst_fpga=1; Delay(200); Delay(50); Lcd_init(); //lcd initial code rst_fpga=0; RESET=1; //command_up(); CS=1; SDI=1; SCL=1; command_up(); CS=1; SDI=1; SCL=1; } //================================================================================================================ // Initial code for IC :ILI9325 void Lcd_init(void) { VCM_value =0x11; //***************************RESET LCD Driver*******************************// RESET = 1; Delayms(1); RESET = 0; Delayms(10); RESET = 1; Delayms(120); //************* Start Initial Sequence **********// LCD_ILI9481_CMD(0x11); Delayms(20); LCD_ILI9481_CMD(0xD0); // LCD_ILI9481_INDEX(0x07); // VC[2:0] LCD_ILI9481_INDEX(0x45); // PON,BT[2:0] LCD_ILI9481_INDEX(0x11); // VCIRE,VRH[3:0] LCD_ILI9481_CMD(0xD1); LCD_ILI9481_INDEX(0x00); // SELVCM LCD_ILI9481_INDEX(0x27); // VCM[5:0] LCD_ILI9481_INDEX(0x10); // VDV[4:0] LCD_ILI9481_CMD(0xD2); LCD_ILI9481_INDEX(0x01); // AP0[2:0] LCD_ILI9481_INDEX(0x11); // DC10[2:0],DC00[2:0] LCD_ILI9481_CMD(0xC0); //****** ******* LCD_ILI9481_INDEX(0x10); // REV & SM & GS LCD_ILI9481_INDEX(0x3B); // NL[5:0] LCD_ILI9481_INDEX(0x00); // SCN[6:0] LCD_ILI9481_INDEX(0x02); // NDL , PTS[2:0] LCD_ILI9481_INDEX(0x11); // PTG , ISC[3:0] LCD_ILI9481_CMD(0xC5); // Frame rate LCD_ILI9481_INDEX(0x04); LCD_ILI9481_CMD(0xC6); // interface control LCD_ILI9481_INDEX(0x03); LCD_ILI9481_CMD(0xC8); // Gamma Setting LCD_ILI9481_INDEX(0x21); // KP1[2:0],KP0[2:0] LCD_ILI9481_INDEX(0x27); // KP3[2:0],KP2[2:0] LCD_ILI9481_INDEX(0x20); // KP5[2:0],KP4[2:0] LCD_ILI9481_INDEX(0x11); // RP1[2:0],RP0[2:0] LCD_ILI9481_INDEX(0x04); // VRP0[3:0] LCD_ILI9481_INDEX(0x06); // VRP1[4:0] LCD_ILI9481_INDEX(0x75); // KN1[2:0],KN0[2:0] LCD_ILI9481_INDEX(0x05); // KN3[2:0],KN2[2:0] LCD_ILI9481_INDEX(0x65); // KN5[2:0],KN4[2:0] LCD_ILI9481_INDEX(0x11); // RN1[2:0],RN0[2:0] LCD_ILI9481_INDEX(0x06); // VRN0[3:0] LCD_ILI9481_INDEX(0x04); // VRN1[4:0] LCD_ILI9481_CMD(0xE4); LCD_ILI9481_INDEX(0xA0); LCD_ILI9481_CMD(0xF0); LCD_ILI9481_INDEX(0x01); LCD_ILI9481_CMD(0xF3); LCD_ILI9481_INDEX(0x40); LCD_ILI9481_INDEX(0x0A); LCD_ILI9481_CMD(0xF7); LCD_ILI9481_INDEX(0x80); LCD_ILI9481_CMD(0x36); // Set_address_mode LCD_ILI9481_INDEX(0x83); // Bit3: RGB/BGR LCD_ILI9481_CMD(0xB4); // Set_Memory Write _mode LCD_ILI9481_INDEX(0x10); // CPU/RGB//RGB Delayms(120); CS=1; LCD_ILI9481_CMD(0x0B); LCD_ILI9481_INDEX(0x80); CS=1; //Delayms(120); LCD_ILI9481_CMD(0x29); CS=1; } //================================================================================================================ // Write Command void LCD_ILI9481_CMD(Byte Command) { Byte temp,k; CS=1; SCL=1; Delay(10); CS=0; Delay(10); SCL=0; //Delay(2); SDI = 0; Delay(20); SCL=1; Delay(10); for(k=0;k<8;k++) { SCL=0; Delay(10); temp=Command&0x80; if(k==0) { if(temp) SDI=1; else SDI=0; } else { if(temp) SDI=1; else SDI=0; } Delay(10); SCL=1; Delay(10); Command<<=1; } CS=0; } //================================================================================================================ // Write Data for Command void LCD_ILI9481_INDEX(Word Command) { Byte temp,k; CS=0; SCL=0; Delay(2); SDI = 1; Delay(20); SCL=1; Delay(20); for(k=0;k<8;k++) { SCL=0; // DelayIIC(1); temp=Command&0x80; if(k==0) { if(temp) SDI=1; else SDI=0; } else { if(temp) SDI=1; else SDI=0; } Delay(10); SCL=1; Command<<=1; } CS=0; //CS=1; } //================================================================================================================ // Delay 1ms void Delayms(Word wait) { Word j,k; for(j=0;j