Now,This is main.c in my project:
Code: Select all
//Config TFT
sfr int CUSTOM_TFT_DATAPORT;
sbit TFT_Data_D0 at GPIOD_ODR.B14;
sbit TFT_Data_D1 at GPIOD_ODR.B15;
sbit TFT_Data_D2 at GPIOD_ODR.B0;
sbit TFT_Data_D3 at GPIOD_ODR.B1;
sbit TFT_Data_D4 at GPIOE_ODR.B7;
sbit TFT_Data_D5 at GPIOE_ODR.B8;
sbit TFT_Data_D6 at GPIOE_ODR.B9;
sbit TFT_Data_D7 at GPIOE_ODR.B10;
sbit TFT_Data_D8 at GPIOE_ODR.B11;
sbit TFT_Data_D9 at GPIOE_ODR.B12;
sbit TFT_Data_D10 at GPIOE_ODR.B13;
sbit TFT_Data_D11 at GPIOE_ODR.B14;
sbit TFT_Data_D12 at GPIOE_ODR.B15;
sbit TFT_Data_D13 at GPIOD_ODR.B8;
sbit TFT_Data_D14 at GPIOD_ODR.B9;
sbit TFT_Data_D15 at GPIOD_ODR.B10;
int TFT_DATAPORT at CUSTOM_TFT_DATAPORT;
///
sbit TFT_RST at GPIOD_ODR.B6;
sbit TFT_RS at GPIOD_ODR.B11;
sbit TFT_CS at GPIOD_ODR.B7;
sbit TFT_RD at GPIOD_ODR.B4;
sbit TFT_WR at GPIOD_ODR.B5;
sbit TFT_BLED at GPIOD_ODR.B13;
/////End Config TFT
/*static void Read_to_PortX(unsigned int port)
{
port=TFT_Data_D15 << 15 | TFT_Data_D14 << 14 | TFT_Data_D13 << 13 |TFT_Data_D12<< 12 | TFT_Data_D11<< 11 | TFT_Data_D10 << 10 | TFT_Data_D9 << 9 | TFT_Data_D8<< 8 | TFT_Data_D7<< 7 | TFT_Data_D6<< 6 | TFT_Data_D5<< 5 | TFT_Data_D4<< 4 | TFT_Data_D3<< 3 | TFT_Data_D2<< 2 | TFT_Data_D1<<1| TFT_Data_D0;
return port;
}*/
void Write_to_PortX(char values) //TFT_DataPort = _data;
{
unsigned int temp;
char value;
TFT_DataPort = TFT_Data_D15 << 15 | TFT_Data_D14 << 14 | TFT_Data_D13 << 13 |TFT_Data_D12<< 12 | TFT_Data_D11<< 11 | TFT_Data_D10 << 10 | TFT_Data_D9 << 9 | TFT_Data_D8<< 8 | TFT_Data_D7<< 7 | TFT_Data_D6<< 6 | TFT_Data_D5<< 5 | TFT_Data_D4<< 4 | TFT_Data_D3<< 3 | TFT_Data_D2<< 2 | TFT_Data_D1<<1| TFT_Data_D0;
temp = TFT_Data_D15 << 15 | TFT_Data_D14 << 14 | TFT_Data_D13 << 13 |TFT_Data_D12<< 12 | TFT_Data_D11<< 11 | TFT_Data_D10 << 10 | TFT_Data_D9 << 9 | TFT_Data_D8<< 8 | TFT_Data_D7<< 7 | TFT_Data_D6<< 6 | TFT_Data_D5<< 5 | TFT_Data_D4<< 4 | TFT_Data_D3<< 3 | TFT_Data_D2<< 2 | TFT_Data_D1<<1| TFT_Data_D0;
temp &= 0xFF00;
value = values | temp;
GPIOD_ODR.B14 = (value&0x01)?1:0;
GPIOD_ODR.B15 = (((value) >> 1)&0x01)?1:0;
GPIOD_ODR.B0= (((value) >> 2)&0x01)?1:0;
GPIOD_ODR.B1 = (((value) >> 3)&0x01)?1:0;
GPIOE_ODR.B7 = (((value) >> 4)&0x01)?1:0;
GPIOE_ODR.B8 = (((value) >> 5)&0x01)?1:0;
GPIOE_ODR.B9 = (((value) >> 6)&0x01)?1:0;
GPIOE_ODR.B10 = (((value) >> 7)&0x01)?1:0;
GPIOE_ODR.B11 = (((value) >> 8)&0x01)?1:0;
GPIOE_ODR.B12 = (((value) >> 9)&0x01)?1:0;
GPIOE_ODR.B13 = (((value) >> 10)&0x01)?1:0;
GPIOE_ODR.B14 = (((value) >> 11)&0x01)?1:0;
GPIOE_ODR.B15 = (((value) >> 12)&0x01)?1:0;
GPIOD_ODR.B8 = (((value) >> 13)&0x01)?1:0;
GPIOD_ODR.B9 = (((value) >> 14)&0x01)?1:0;
GPIOD_ODR.B10 = (((value) >> 15)&0x01)?1:0;
}
void TFT_Write_Strobe()
{
TFT_WR = 0 ;
asm nop; ;
TFT_WR = 1 ;
}
/////
void TFT_Set_Index_CustomX(unsigned short index)
{
TFT_RS = 0;
Write_to_PortX(index);
TFT_Write_Strobe();
}
void TFT_Write_Command_CustomX(unsigned short cmd) {
TFT_RS = 1;
Write_to_PortX(cmd);
TFT_Write_Strobe();
}
void TFT_Write_Data_16bit_CustomX(unsigned int _data)
{
TFT_RS = 1; // Write to 16-bit port
Write_to_PortX( _data); // Strobe
TFT_Write_Strobe() ;
}
//////////////////
void main()
{
GPIO_Config(&GPIOD_BASE, _GPIO_PINMASK_0|_GPIO_PINMASK_1|_GPIO_PINMASK_8|_GPIO_PINMASK_9|_GPIO_PINMASK_10|_GPIO_PINMASK_14|_GPIO_PINMASK_15, _GPIO_CFG_DIGITAL_OUTPUT);
GPIO_Config(&GPIOE_BASE, _GPIO_PINMASK_7|_GPIO_PINMASK_8|_GPIO_PINMASK_9|_GPIO_PINMASK_10|_GPIO_PINMASK_11|_GPIO_PINMASK_12|_GPIO_PINMASK_13|_GPIO_PINMASK_14|_GPIO_PINMASK_15, _GPIO_CFG_DIGITAL_OUTPUT);
TFT_Set_Active(&TFT_Set_Index_CustomX, &TFT_Write_Command_CustomX, &TFT_Write_Data_16bit_CustomX);
TFT_Init_Custom(320, 240);
TFT_Fill_Screen(CL_RED);
TFT_Write_Text("MENU MACHINE SETUP", 110, 100);
delay_ms(1000) ;
while(1) { }
}