Вс сен 03, 2017 20:14:16
oid WrCmd (uint16_t Reg_Value)
{
if (Data_PINs_State == 1) {ili9481_PINs_Data_Out();}
ili9481_LCD_CS_DISABLE;
//ili9481_LCD_RD_DISABLE;
ili9481_LCD_WR_DISABLE;
ili9481_LCD_CD_DATA;
ili9481_LCD_CS_ENABLE;
ili9481_LCD_CD_COMMAND;
ili9481_SET_DATA = Reg_Value;
ili9481_WR_STROBE;
ili9481_LCD_CS_DISABLE;
}
void WrDat (uint16_t Data_for_send)
{
if (Data_PINs_State == 1) {ili9481_PINs_Data_Out();}
ili9481_LCD_CS_DISABLE;
//ili9481_LCD_RD_DISABLE;
ili9481_LCD_WR_DISABLE;
ili9481_LCD_CD_COMMAND;
ili9481_LCD_CS_ENABLE;
ili9481_LCD_CD_DATA;
ili9481_SET_DATA = Data_for_send;
ili9481_WR_STROBE;
ili9481_LCD_CS_DISABLE;
}
void ili9481_Send_Data (uint16_t Reg_Value, uint8_t Data_For_Send)
{
if (Data_PINs_State == 1) {ili9481_PINs_Data_Out();}
ili9481_LCD_CS_DISABLE;
//ili9481_LCD_RD_DISABLE;
ili9481_LCD_WR_DISABLE;
ili9481_LCD_CD_DATA;
ili9481_LCD_CS_ENABLE;
ili9481_LCD_CD_COMMAND;
ili9481_SET_DATA = Reg_Value;
ili9481_WR_STROBE;
ili9481_LCD_CS_DISABLE;
ili9481_LCD_CS_ENABLE;
ili9481_LCD_CD_DATA;
ili9481_SET_DATA = Data_For_Send;
ili9481_WR_STROBE;
ili9481_LCD_CS_DISABLE;
}
void ili9481_PINs_Data_In(void)
{
GPIOE->MODER = 0x00000000;
/*;
GPIOA->CRL &= ~( GPIO_CRL_MODE0 // D0
|GPIO_CRL_MODE1 // D1
|GPIO_CRL_MODE2 // D2
|GPIO_CRL_MODE3 // D3
|GPIO_CRL_MODE4 // D4
|GPIO_CRL_MODE5 // D5
|GPIO_CRL_MODE6 // D6
|GPIO_CRL_MODE7 // D7
);
GPIOA->CRL &= ~( GPIO_CRL_CNF0
|GPIO_CRL_CNF1
|GPIO_CRL_CNF2
|GPIO_CRL_CNF3
|GPIO_CRL_CNF4
|GPIO_CRL_CNF5
|GPIO_CRL_CNF6
|GPIO_CRL_CNF7
);
GPIOA->CRL |= ( GPIO_CRL_CNF0_0
|GPIO_CRL_CNF1_0
|GPIO_CRL_CNF2_0
|GPIO_CRL_CNF3_0
|GPIO_CRL_CNF4_0
|GPIO_CRL_CNF5_0
|GPIO_CRL_CNF6_0
|GPIO_CRL_CNF7_0
);
*/
Data_PINs_State = 1;
GPIOE->ODR &= 0x0000;
}
void ili9481_PINs_Command_Init(void)
{
GPIOD->MODER &= ~( //GPIO_MODER_MODER8 // rd
GPIO_MODER_MODER1 // wr
|GPIO_MODER_MODER0 // rs
|GPIO_MODER_MODER2 // cs
|GPIO_MODER_MODER3 // rst
);
GPIOD->MODER |= ( //GPIO_MODER_MODER8_0 // rd
GPIO_MODER_MODER1_0 // wr
|GPIO_MODER_MODER0_0 // rs
|GPIO_MODER_MODER2_0 // cs
|GPIO_MODER_MODER3_0 // rst
);
}
#define LCD_NOOP 0x00 /* No Operation*/
#define LCD_SWRESET 0x01 /* Software Reset */
#define LCD_RDDPM 0x0A /* Read Display Power Mode */
#define LCD_RDDMADCTL 0x0B /* Read Display MADCTL */
#define LCD_RDDCOLMOD 0x0C /* Read Display Pixel Format */
#define LCD_RDDIM 0x0D /* Read Display Image Format */
#define LCD_RDDSM 0x0E /* Read Display Signal Mode */
#define LCD_RDDSDR 0x0F /* Read Display Self-Diagnostic Result */
#define LCD_SPLIN 0x10 /* Enter Sleep Mode */
#define LCD_SLEEP_OUT 0x11 /* Sleep out register */
#define LCD_PTLON 0x12 /* Partial Mode ON */
#define LCD_NORMAL_MODE_ON 0x13 /* Normal Display Mode ON */
#define LCD_DINVOFF 0x20 /* Display Inversion OFF */
#define LCD_DINVON 0x21 /* Display Inversion ON */
#define LCD_GAMMA 0x26 /* Gamma register */
#define LCD_DISPLAY_OFF 0x28 /* Display off register */
#define LCD_DISPLAY_ON 0x29 /* Display on register */
#define LCD_COLUMN_ADDR 0x2A /* Column address register */
#define LCD_PAGE_ADDR 0x2B /* Page address register */
#define LCD_GRAM 0x2C /* GRAM register */
#define LCD_RGBSET 0x2D /* Color SET */
#define LCD_RAMRD 0x2E /* Memory Read */
#define LCD_PLTAR 0x30 /* Partial Area */
#define LCD_VSCRDEF 0x33 /* Vertical Scrolling Definition */
#define LCD_TEOFF 0x34 /* Tearing Effect Line OFF */
#define LCD_TEON 0x35 /* Tearing Effect Line ON */
#define LCD_MAC 0x36 /* Memory Access Control register*/
#define LCD_VSCRSADD 0x37 /* Vertical Scrolling Start Address */
#define LCD_IDMOFF 0x38 /* Idle Mode OFF */
#define LCD_IDMON 0x39 /* Idle Mode ON */
#define LCD_PIXEL_FORMAT 0x3A /* Pixel Format register */
#define LCD_WRITE_MEM_CONTINUE 0x3C /* Write Memory Continue */
#define LCD_READ_MEM_CONTINUE 0x3E /* Read Memory Continue */
#define LCD_SET_TEAR_SCANLINE 0x44 /* Set Tear Scanline */
#define LCD_GET_SCANLINE 0x45 /* Get Scanline */
#define LCD_READ_DDB_START 0xA1 /* Read DDB start */
/* Level 2 Commands */
#define LCD_CMDACCPRTC 0xB0 /* Command Access Protect */
#define LCD_FRMCTR 0xB3 /* Frame Memory Access and Interface setting */
#define LCD_DMFMCTR 0xB4 /* Display Mode and Frame Memory Write Mode
setting */
#define LCD_DEVCODERD 0xBF /* Device code read */
#define LCD_PANEL_DRV_CTL 0xC0 /* Panel Driving Setting */
#define LCD_NORMAL_TIMING_WR 0xC1 /* Display Timing Setting for Normal Mode */
#define LCD_PARTIAL_TIMING_WR 0xC2 /* Display Timing Setting for Partial Mode */
#define LCD_IDLE_TIMING_WR 0xC3 /* Display Timing Setting for Idle Mode */
#define LCD_FR_INV_CTL 0xC5 /* Frame rate and Inversion Control */
#define LCD_INTERFACE 0xC6 /* Interface Control */
#define LCD_GAMMAWR 0xC8 /* Gamma Setting */
#define LCD_POWER 0xD0 /* POWER CONTROL */
#define LCD_VCOM 0xD1 /* VCOM Control */
#define LCD_NORMAL_PWR_WR 0xD2 /* Power Setting for Normal Mode */
#define LCD_PARTIAL_PWR_WR 0xD3 /* Power Setting for Partial Mode */
#define LCD_IDLE_PWR_WR 0xD4 /* Power Setting for Idle Mode */
#define LCD_NVMEMWR 0xE0 /* NV Memory Write */
#define LCD_NVMEMCTRL 0xE1 /* NV Memory Control */
#define LCD_NVMEMRD 0xE2 /* NV Memory Status */
#define LCD_NVMEMPRT 0xE3 /* NV Memory Protection */
#define LCD_EEPROMWR_ENABLE 0xE8 /* EEPROM Write Enable */
#define LCD_EEPROMWR_DISABLE 0xE9 /* EEPROM Write Disable */
#define LCD_EEPROMWR 0xEA /* EEPROM Word Write */
#define LCD_EEPROMRD 0xEB /* EEPROM Word Read */
#define LCD_EEPROM_ADR_SET 0xEC /* EEPROM Address Set */
#define LCD_EEPROM_ERASE 0xED /* EEPROM Erase */
#define LCD_EEPROM_ERASE_ALL 0xEE /* EEPROM Erase All */
//#define ili9481_LCD_RD_ENABLE (GPIOD->BSRR |= GPIO_BSRR_BR_8)// Read data from LCD
//#define ili9481_LCD_RD_DISABLE (GPIOD->BSRR |= GPIO_BSRR_BS_8) //
#define ili9481_LCD_WR_ENABLE (GPIOD->BSRR |= GPIO_BSRR_BR_1) // Write data to LCD
#define ili9481_LCD_WR_DISABLE (GPIOD->BSRR |= GPIO_BSRR_BS_1) //
#define ili9481_LCD_CD_COMMAND (GPIOD->BSRR |= GPIO_BSRR_BR_0) // Command/Data selection. May be marked as LCD_RS, D/C, A0 or RS.
#define ili9481_LCD_CD_DATA (GPIOD->BSRR |= GPIO_BSRR_BS_0) // Data - Hight. Commands - Low
#define ili9481_LCD_CS_ENABLE (GPIOD->BSRR |= GPIO_BSRR_BR_2) // Chip Select.
#define ili9481_LCD_CS_DISABLE (GPIOD->BSRR |= GPIO_BSRR_BS_2) // Active - LOW
#define ili9481_LCD_RESET_ENABLE (GPIOD->BSRR |= GPIO_BSRR_BR_3) // Reset.
#define ili9481_LCD_RESET_DISABLE (GPIOD->BSRR |= GPIO_BSRR_BS_3) // Active (LCD reset activation) - LOW
#define ili9481_SET_DATA (GPIOE->ODR &= 0x0000); (GPIOE->BSRR)
#define ili9481_READ_DATA (GPIOE->IDR & 0x0000)
#define ili9481_WR_STROBE {ili9481_LCD_WR_ENABLE; ili9481_LCD_WR_DISABLE;}
void ili9481_Init_Test (void)
{
ili9481_PINs_Command_Init();
ili9481_PINs_Data_Out();
_ili9481_Delay_ms(10);
ili9481_LCD_RESET_ENABLE;
_ili9481_Delay_ms(10);
ili9481_LCD_RESET_DISABLE;
_ili9481_Delay_ms(10);
// Âûáðàëè äèñïëåé
ili9481_LCD_CS_DISABLE;
/*
//LCD_FSMC_Config();
_ili9481_Delay_ms(50);
//GPIO_SetBits(GPIOE, GPIO_Pin_1);
ili9481_LCD_RESET_DISABLE;
_ili9481_Delay_ms(20);
//GPIO_ResetBits(GPIOE, GPIO_Pin_1);
ili9481_LCD_RESET_ENABLE;
_ili9481_Delay_ms(20);
//GPIO_SetBits(GPIOE, GPIO_Pin_1);
ili9481_LCD_RESET_DISABLE;
_ili9481_Delay_ms(20);;
*/
/*
WrCmd(0x11);
_ili9481_Delay_ms(20);
//WrCmd(0xD0);
ili9481_Send_Data(0xD0, 0x07);
ili9481_Send_Data(0xD0, 0x42);
ili9481_Send_Data(0xD0, 0x18);
//WrCmd(0xD1);
ili9481_Send_Data(0xD1, 0x00);
ili9481_Send_Data(0xD1, 0x07);
ili9481_Send_Data(0xD1, 0x10);
//WrCmd(0xD2);
ili9481_Send_Data(0xD2, 0x01);
ili9481_Send_Data(0xD2, 0x02);
//WrCmd(0xC0);
ili9481_Send_Data(0xC0, 0x10);
ili9481_Send_Data(0xC0, 0x3B);
ili9481_Send_Data(0xC0, 0x00);
ili9481_Send_Data(0xC0, 0x02);
ili9481_Send_Data(0xC0, 0x11);
//WrCmd(0xC5);
ili9481_Send_Data(0xC5, 0x03);
//WrCmd(0xC8);
ili9481_Send_Data(0xC8, 0x00);
ili9481_Send_Data(0xC8, 0x32);
ili9481_Send_Data(0xC8, 0x36);
ili9481_Send_Data(0xC8, 0x45);
ili9481_Send_Data(0xC8, 0x06);
ili9481_Send_Data(0xC8, 0x16);
ili9481_Send_Data(0xC8, 0x37);
ili9481_Send_Data(0xC8, 0x75);
ili9481_Send_Data(0xC8, 0x77);
ili9481_Send_Data(0xC8, 0x54);
ili9481_Send_Data(0xC8, 0x0C);
ili9481_Send_Data(0xC8, 0x00);
//WrCmd(0x36);
ili9481_Send_Data(0x36, 0x0A);
//WrCmd(0x3A);
ili9481_Send_Data(0x3A, 0x55);
WrCmd(0x2A);
ili9481_Send_Data(0x2A, 0x00);
ili9481_Send_Data(0x2A, 0x00);
ili9481_Send_Data(0x2A, 0x01);
ili9481_Send_Data(0x2A, 0x3F);
//WrCmd(0x2B);
ili9481_Send_Data(0x2B, 0x00);
ili9481_Send_Data(0x2B, 0x00);
ili9481_Send_Data(0x2B, 0x01);
ili9481_Send_Data(0x2B, 0xE0);
_ili9481_Delay_ms(120);
WrCmd(0x29);
*/
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
WrCmd(0x11);
_ili9481_Delay_ms(20);
WrCmd(0xD0);
ili9481_Send_Data(0xD0, 0x07);
ili9481_Send_Data(0xD0, 0x42);
ili9481_Send_Data(0xD0, 0x18);
//WrCmd(0xD1, );
ili9481_Send_Data(0xD1, 0x00);
ili9481_Send_Data(0xD1, 0x07);
ili9481_Send_Data(0xD1, 0x10);
//WrCmd(0xD2, );
ili9481_Send_Data(0xD2, 0x01);
ili9481_Send_Data(0xD2, 0x02);
//WrCmd(0xC0, );
ili9481_Send_Data(0xC0, 0x10);
ili9481_Send_Data(0xC0, 0x3B);
ili9481_Send_Data(0xC0, 0x00);
ili9481_Send_Data(0xC0, 0x02);
ili9481_Send_Data(0xC0, 0x11);
//WrCmd(0xC5, );
ili9481_Send_Data(0xC5, 0x08);
//WrCmd(0xC8, );
ili9481_Send_Data(0xC8, 0x00);
ili9481_Send_Data(0xC8, 0x32);
ili9481_Send_Data(0xC8, 0x36);
ili9481_Send_Data(0xC8, 0x45);
ili9481_Send_Data(0xC8, 0x06);
ili9481_Send_Data(0xC8, 0x16);
ili9481_Send_Data(0xC8, 0x37);
ili9481_Send_Data(0xC8, 0x75);
ili9481_Send_Data(0xC8, 0x77);
ili9481_Send_Data(0xC8, 0x54);
ili9481_Send_Data(0xC8, 0x0C);
ili9481_Send_Data(0xC8, 0x00);
//WrCmd(0x36, );
ili9481_Send_Data(0x36, 0x0a);
// WrCmd(0x3A, );
ili9481_Send_Data(0x3A, 0x55);
//WrCmd(0x2A, );
ili9481_Send_Data(0x2A, 0x00);
ili9481_Send_Data(0x2A, 0x00);
ili9481_Send_Data(0x2A, 0x01);
ili9481_Send_Data(0x2A, 0x3F);
///WrCmd(0x2B, );
ili9481_Send_Data(0x2B, 0x00);
ili9481_Send_Data(0x2B, 0x00);
ili9481_Send_Data(0x2B, 0x01);
ili9481_Send_Data(0x2B, 0xDF);
_ili9481_Delay_ms(120);
WrCmd(0x29);
_ili9481_Delay_ms(25);
*/
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
//WrCmd(0xB9,); // Enable extension command
ili9481_Send_Data(0xB9,0xFF);
ili9481_Send_Data(0xB9,0x83);
ili9481_Send_Data(0xB9,0x57);
_ili9481_Delay_ms(50);
//WrCmd(0xB6,); //Set VCOM voltage
ili9481_Send_Data(0xB6,0x2C); //0x52 for HSD 3.0"
WrCmd(0x11); // Sleep off
_ili9481_Delay_ms(200);
//WrCmd(0x35,); // Tearing effect on
ili9481_Send_Data(0x35,0x00); // Added parameter
//WrCmd(0x3A,); // Interface pixel format
ili9481_Send_Data(0x3A,0x55); // 16 bits per pixel
//WrCmd(0xCC,); // Set panel characteristic
//ili9481_Send_Data(0x09); // S960>S1, G1>G480, R-G-B, normally black
//WrCmd(0xB3); // RGB interface
//ili9481_Send_Data(0x43);
//ili9481_Send_Data(0x00);
//ili9481_Send_Data(0x06);
//ili9481_Send_Data(0x06);
//WrCmd(0xB1,); // Power control
ili9481_Send_Data(0xB1,0x00);
ili9481_Send_Data(0xB1,0x15);
ili9481_Send_Data(0xB1,0x0D);
ili9481_Send_Data(0xB1,0x0D);
ili9481_Send_Data(0xB1,0x83);
ili9481_Send_Data(0xB1,0x48);
//WrCmd(0xC0,); // Does this do anything?
ili9481_Send_Data(0xC0,0x24);
ili9481_Send_Data(0xC0,0x24);
ili9481_Send_Data(0xC0,0x01);
ili9481_Send_Data(0xC0,0x3C);
ili9481_Send_Data(0xC0,0xC8);
ili9481_Send_Data(0xC0,0x08);
//WrCmd(0xB4,); // Display cycle
ili9481_Send_Data(0xB4,0x02);
ili9481_Send_Data(0xB4,0x40);
ili9481_Send_Data(0xB4,0x00);
ili9481_Send_Data(0xB4,0x2A);
ili9481_Send_Data(0xB4,0x2A);
ili9481_Send_Data(0xB4,0x0D);
ili9481_Send_Data(0xB4,0x4F);
//WrCmd(0xE0,); // Gamma curve
ili9481_Send_Data(0xE0,0x00);
ili9481_Send_Data(0xE0,0x15);
ili9481_Send_Data(0xE0,0x1D);
ili9481_Send_Data(0xE0,0x2A);
ili9481_Send_Data(0xE0,0x31);
ili9481_Send_Data(0xE0,0x42);
ili9481_Send_Data(0xE0,0x4C);
ili9481_Send_Data(0xE0,0x53);
ili9481_Send_Data(0xE0,0x45);
ili9481_Send_Data(0xE0,0x40);
ili9481_Send_Data(0xE0,0x3B);
ili9481_Send_Data(0xE0,0x32);
ili9481_Send_Data(0xE0,0x2E);
ili9481_Send_Data(0xE0,0x28);
ili9481_Send_Data(0xE0,0x24);
ili9481_Send_Data(0xE0,0x03);
ili9481_Send_Data(0xE0,0x00);
ili9481_Send_Data(0xE0,0x15);
ili9481_Send_Data(0xE0,0x1D);
ili9481_Send_Data(0xE0,0x2A);
ili9481_Send_Data(0xE0,0x31);
ili9481_Send_Data(0xE0,0x42);
ili9481_Send_Data(0xE0,0x4C);
ili9481_Send_Data(0xE0,0x53);
ili9481_Send_Data(0xE0,0x45);
ili9481_Send_Data(0xE0,0x40);
ili9481_Send_Data(0xE0,0x3B);
ili9481_Send_Data(0xE0,0x32);
ili9481_Send_Data(0xE0,0x2E);
ili9481_Send_Data(0xE0,0x28);
ili9481_Send_Data(0xE0,0x24);
ili9481_Send_Data(0xE0,0x03);
ili9481_Send_Data(0xE0,0x00);
ili9481_Send_Data(0xE0,0x01);
// WrCmd(0x36,); // MADCTL Memory access control
ili9481_Send_Data(0x36,0x48);
_ili9481_Delay_ms(20);
WrCmd(0x21); //Display inversion on
_ili9481_Delay_ms(20);
WrCmd(0x29); // Display on
_ili9481_Delay_ms(120);
*/
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
WrCmd(0xB9); // Enable extension command
WrDat(0xFF);
WrDat(0x83);
WrDat(0x57);
_ili9481_Delay_ms(50);
WrCmd(0xB6); //Set VCOM voltage
WrDat(0x2C); //0x52 for HSD 3.0"
WrCmd(0x11); // Sleep off
_ili9481_Delay_ms(200);
WrCmd(0x35); // Tearing effect on
WrDat(0x00); // Added parameter
WrCmd(0x3A); // Interface pixel format
WrDat(0x55); // 16 bits per pixel
//WrCmd(0xCC); // Set panel characteristic
//WrDat(0x09); // S960>S1, G1>G480, R-G-B, normally black
//WrCmd(0xB3); // RGB interface
//WrDat(0x43);
//WrDat(0x00);
//WrDat(0x06);
//WrDat(0x06);
WrCmd(0xB1); // Power control
WrDat(0x00);
WrDat(0x15);
WrDat(0x0D);
WrDat(0x0D);
WrDat(0x83);
WrDat(0x48);
WrCmd(0xC0); // Does this do anything?
WrDat(0x24);
WrDat(0x24);
WrDat(0x01);
WrDat(0x3C);
WrDat(0xC8);
WrDat(0x08);
WrCmd(0xB4); // Display cycle
WrDat(0x02);
WrDat(0x40);
WrDat(0x00);
WrDat(0x2A);
WrDat(0x2A);
WrDat(0x0D);
WrDat(0x4F);
WrCmd(0xE0); // Gamma curve
WrDat(0x00);
WrDat(0x15);
WrDat(0x1D);
WrDat(0x2A);
WrDat(0x31);
WrDat(0x42);
WrDat(0x4C);
WrDat(0x53);
WrDat(0x45);
WrDat(0x40);
WrDat(0x3B);
WrDat(0x32);
WrDat(0x2E);
WrDat(0x28);
WrDat(0x24);
WrDat(0x03);
WrDat(0x00);
WrDat(0x15);
WrDat(0x1D);
WrDat(0x2A);
WrDat(0x31);
WrDat(0x42);
WrDat(0x4C);
WrDat(0x53);
WrDat(0x45);
WrDat(0x40);
WrDat(0x3B);
WrDat(0x32);
WrDat(0x2E);
WrDat(0x28);
WrDat(0x24);
WrDat(0x03);
WrDat(0x00);
WrDat(0x01);
WrCmd(0x36); // MADCTL Memory access control
WrDat(0x48);
_ili9481_Delay_ms(20);
WrCmd(0x21); //Display inversion on
_ili9481_Delay_ms(20);
WrCmd(0x29); // Display on
_ili9481_Delay_ms(120);
*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
// Configure HX8357-B display
WrCmd(0x11);
_ili9481_Delay_ms(20);
WrCmd(0xD0);
WrDat(0x07);
WrDat(0x42);
WrDat(0x18);
WrCmd(0xD1);
WrDat(0x00);
WrDat(0x07);
WrDat(0x10);
WrCmd(0xD2);
WrDat(0x01);
WrDat(0x02);
WrCmd(0xC0);
WrDat(0x10);
WrDat(0x3B);
WrDat(0x00);
WrDat(0x02);
WrDat(0x11);
WrCmd(0xC5);
WrDat(0x08);
WrCmd(0xC8);
WrDat(0x00);
WrDat(0x32);
WrDat(0x36);
WrDat(0x45);
WrDat(0x06);
WrDat(0x16);
WrDat(0x37);
WrDat(0x75);
WrDat(0x77);
WrDat(0x54);
WrDat(0x0C);
WrDat(0x00);
WrCmd(0x36);
WrDat(0x0a);
WrCmd(0x3A);
WrDat(0x55);
WrCmd(0x2A);
WrDat(0x00);
WrDat(0x00);
WrDat(0x01);
WrDat(0x3F);
WrCmd(0x2B);
WrDat(0x00);
WrDat(0x00);
WrDat(0x01);
WrDat(0xDF);
_ili9481_Delay_ms(120);
WrCmd(0x29);
_ili9481_Delay_ms(25);
// End of HX8357-B display configuration
*/
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
// ili9486
WrCmd(0x01);
WrDat(0x00);
_ili9481_Delay_ms(50);
WrCmd(0x28);
WrDat(0x00);
WrCmd(0xC0); // Power Control 1
WrDat(0x0d);
WrDat(0x0d);
WrCmd(0xC1); // Power Control 2
WrDat(0x43);
WrDat(0x00);
WrCmd(0xC2); // Power Control 3
WrDat(0x00);
WrCmd(0xC5); // VCOM Control
WrDat(0x00);
WrDat(0x48);
WrCmd(0xB6); // Display Function Control
WrDat(0x00);
WrDat(0x22); // 0x42 = Rotate display 180 deg.
WrDat(0x3B);
WrCmd(0xE0); // PGAMCTRL (Positive Gamma Control)
WrDat(0x0f);
WrDat(0x24);
WrDat(0x1c);
WrDat(0x0a);
WrDat(0x0f);
WrDat(0x08);
WrDat(0x43);
WrDat(0x88);
WrDat(0x32);
WrDat(0x0f);
WrDat(0x10);
WrDat(0x06);
WrDat(0x0f);
WrDat(0x07);
WrDat(0x00);
WrCmd(0xE1); // NGAMCTRL (Negative Gamma Control)
WrDat(0x0F);
WrDat(0x38);
WrDat(0x30);
WrDat(0x09);
WrDat(0x0f);
WrDat(0x0f);
WrDat(0x4e);
WrDat(0x77);
WrDat(0x3c);
WrDat(0x07);
WrDat(0x10);
WrDat(0x05);
WrDat(0x23);
WrDat(0x1b);
WrDat(0x00);
WrCmd(0x20); // Display Inversion OFF, 0x21 = ON
WrCmd(0x36); // Memory Access Control
WrDat(0x0A);
WrCmd(0x3A); // Interface Pixel Format
WrDat(0x55);
WrCmd(0x11);
_ili9481_Delay_ms(150);
WrCmd(0x29);
_ili9481_Delay_ms(25);
*/
}
Пн сен 04, 2017 13:25:52
Пн сен 04, 2017 20:00:30
Пн сен 04, 2017 20:10:15
Пн сен 04, 2017 21:15:30
...........
ili9481_Send_Data(0xD0, 0x07);
ili9481_Send_Data(0xD0, 0x42);
ili9481_Send_Data(0xD0, 0x18);
...........
.........
WrCmd(0xB1); // Power control
WrDat(0x00);
WrDat(0x15);
WrDat(0x0D);
.........
Ср сен 06, 2017 14:32:32
isx писал(а):... Так-то я дисплей от 5В запитал. Сама логика должна и от 3В наверное работать...
Чт сен 07, 2017 12:40:35
Вт сен 19, 2017 19:25:38
void ili9481_Init (void)
{
ili9481_PINs_Command_Init();
ili9481_PINs_Data_Out();
ili9481_HW_Reset();
ili9481_Send_Command(0x01);
ili9481_Send_Command(0x11);
_ili9481_Delay_ms(50);
ili9481_Send_Command(LCD_NORMAL_MODE_ON); //0x13
ili9481_Send_Command(0xD0); //(0xD0);
ili9481_Send_Data(0x07);
ili9481_Send_Data(0x43); //0x43 0x42
ili9481_Send_Data(0x15); //0x15 0x18
ili9481_Send_Command(LCD_VCOM); //(0xD1);
ili9481_Send_Data(0x00);
ili9481_Send_Data(0x07);//07
ili9481_Send_Data(0x10);
ili9481_Send_Command(LCD_NORMAL_PWR_WR); //(0xD2);
ili9481_Send_Data(0x01);
ili9481_Send_Data(0x02);
ili9481_Send_Command(LCD_PANEL_DRV_CTL); //(0xC0);
ili9481_Send_Data(0x10); //0x10
ili9481_Send_Data(0x3B);
ili9481_Send_Data(0x00);
ili9481_Send_Data(0x02);
ili9481_Send_Data(0x11);
ili9481_Send_Command(LCD_FR_INV_CTL); //(0xC5);
ili9481_Send_Data(0x01);
ili9481_Send_Command(LCD_GAMMAWR); //(0xC8);
ili9481_Send_Data(0x00);
ili9481_Send_Data(0x32);
ili9481_Send_Data(0x36);
ili9481_Send_Data(0x45);
ili9481_Send_Data(0x06);
ili9481_Send_Data(0x16);
ili9481_Send_Data(0x37);
ili9481_Send_Data(0x75);
ili9481_Send_Data(0x77);
ili9481_Send_Data(0x54);
ili9481_Send_Data(0x0C);
ili9481_Send_Data(0x00);
ili9481_Send_Command(0x36); //(0x2B);
ili9481_Send_Data(0x2B);
ili9481_Send_Command(LCD_PIXEL_FORMAT); //(0x3A);
ili9481_Send_Data(0x55);
ili9481_Send_Command(LCD_COLUMN_ADDR); //(0x2A);
ili9481_Send_Data(0x00);
ili9481_Send_Data(0x00);
ili9481_Send_Data((uint8_t)(ili9481_WIDTH >> 8));
ili9481_Send_Data((uint8_t)(ili9481_WIDTH - 1));
ili9481_Send_Command(LCD_PAGE_ADDR); //(0x2B);
ili9481_Send_Data(0x00);
ili9481_Send_Data(0x00);
ili9481_Send_Data((uint8_t)(ili9481_HEIGHT >> 8));
ili9481_Send_Data((uint8_t)(ili9481_HEIGHT - 1));
_ili9481_Delay_ms(120);
ili9481_Send_Command(LCD_DISPLAY_ON); //(0x29);
}
#define LCD_NOOP 0x00 /* No Operation*/
#define LCD_SWRESET 0x01 /* Software Reset */
#define LCD_RDDPM 0x0A /* Read Display Power Mode */
#define LCD_RDDMADCTL 0x0B /* Read Display MADCTL */
#define LCD_RDDCOLMOD 0x0C /* Read Display Pixel Format */
#define LCD_RDDIM 0x0D /* Read Display Image Format */
#define LCD_RDDSM 0x0E /* Read Display Signal Mode */
#define LCD_RDDSDR 0x0F /* Read Display Self-Diagnostic Result */
#define LCD_SPLIN 0x10 /* Enter Sleep Mode */
#define LCD_SLEEP_OUT 0x11 /* Sleep out register */
#define LCD_PTLON 0x12 /* Partial Mode ON */
#define LCD_NORMAL_MODE_ON 0x13 /* Normal Display Mode ON */
#define LCD_DINVOFF 0x20 /* Display Inversion OFF */
#define LCD_DINVON 0x21 /* Display Inversion ON */
#define LCD_GAMMA 0x26 /* Gamma register */
#define LCD_DISPLAY_OFF 0x28 /* Display off register */
#define LCD_DISPLAY_ON 0x29 /* Display on register */
#define LCD_COLUMN_ADDR 0x2A /* Column address register */
#define LCD_PAGE_ADDR 0x2B /* Page address register */
#define LCD_GRAM 0x2C /* GRAM register */
#define LCD_RGBSET 0x2D /* Color SET */
#define LCD_RAMRD 0x2E /* Memory Read */
#define LCD_PLTAR 0x30 /* Partial Area */
#define LCD_VSCRDEF 0x33 /* Vertical Scrolling Definition */
#define LCD_TEOFF 0x34 /* Tearing Effect Line OFF */
#define LCD_TEON 0x35 /* Tearing Effect Line ON */
#define LCD_MAC 0x36 /* Memory Access Control register*/
#define LCD_VSCRSADD 0x37 /* Vertical Scrolling Start Address */
#define LCD_IDMOFF 0x38 /* Idle Mode OFF */
#define LCD_IDMON 0x39 /* Idle Mode ON */
#define LCD_PIXEL_FORMAT 0x3A /* Pixel Format register */
#define LCD_WRITE_MEM_CONTINUE 0x3C /* Write Memory Continue */
#define LCD_READ_MEM_CONTINUE 0x3E /* Read Memory Continue */
#define LCD_SET_TEAR_SCANLINE 0x44 /* Set Tear Scanline */
#define LCD_GET_SCANLINE 0x45 /* Get Scanline */
#define LCD_READ_DDB_START 0xA1 /* Read DDB start */
/* Level 2 Commands */
#define LCD_CMDACCPRTC 0xB0 /* Command Access Protect */
#define LCD_FRMCTR 0xB3 /* Frame Memory Access and Interface setting */
#define LCD_DMFMCTR 0xB4 /* Display Mode and Frame Memory Write Mode
setting */
#define LCD_DEVCODERD 0xBF /* Device code read */
#define LCD_PANEL_DRV_CTL 0xC0 /* Panel Driving Setting */
#define LCD_NORMAL_TIMING_WR 0xC1 /* Display Timing Setting for Normal Mode */
#define LCD_PARTIAL_TIMING_WR 0xC2 /* Display Timing Setting for Partial Mode */
#define LCD_IDLE_TIMING_WR 0xC3 /* Display Timing Setting for Idle Mode */
#define LCD_FR_INV_CTL 0xC5 /* Frame rate and Inversion Control */
#define LCD_INTERFACE 0xC6 /* Interface Control */
#define LCD_GAMMAWR 0xC8 /* Gamma Setting */
#define LCD_POWER 0xD0 /* POWER CONTROL */
#define LCD_VCOM 0xD1 /* VCOM Control */
#define LCD_NORMAL_PWR_WR 0xD2 /* Power Setting for Normal Mode */
#define LCD_PARTIAL_PWR_WR 0xD3 /* Power Setting for Partial Mode */
#define LCD_IDLE_PWR_WR 0xD4 /* Power Setting for Idle Mode */
#define LCD_NVMEMWR 0xE0 /* NV Memory Write */
#define LCD_NVMEMCTRL 0xE1 /* NV Memory Control */
#define LCD_NVMEMRD 0xE2 /* NV Memory Status */
#define LCD_NVMEMPRT 0xE3 /* NV Memory Protection */
#define LCD_EEPROMWR_ENABLE 0xE8 /* EEPROM Write Enable */
#define LCD_EEPROMWR_DISABLE 0xE9 /* EEPROM Write Disable */
#define LCD_EEPROMWR 0xEA /* EEPROM Word Write */
#define LCD_EEPROMRD 0xEB /* EEPROM Word Read */
#define LCD_EEPROM_ADR_SET 0xEC /* EEPROM Address Set */
#define LCD_EEPROM_ERASE 0xED /* EEPROM Erase */
#define LCD_EEPROM_ERASE_ALL 0xEE /* EEPROM Erase All */
#define ili9481_DATA_PORT GPIOC
#define ili9481_CONTROL_PORT GPIOD
#define ili9481_LCD_WR_ENABLE (ili9481_CONTROL_PORT->BSRR |= GPIO_BSRR_BR_1) // Write data to LCD
#define ili9481_LCD_WR_DISABLE (ili9481_CONTROL_PORT->BSRR |= GPIO_BSRR_BS_1) //
#define ili9481_LCD_CD_COMMAND (ili9481_CONTROL_PORT->BSRR |= GPIO_BSRR_BR_0) // Command/Data selection. May be marked as LCD_RS, D/C, A0 or RS.
#define ili9481_LCD_CD_DATA (ili9481_CONTROL_PORT->BSRR |= GPIO_BSRR_BS_0) // Data - Hight. Commands - Low
#define ili9481_LCD_CS_ENABLE (ili9481_CONTROL_PORT->BSRR |= GPIO_BSRR_BR_2) // Chip Select.
#define ili9481_LCD_CS_DISABLE (ili9481_CONTROL_PORT->BSRR |= GPIO_BSRR_BS_2) // Active - LOW
#define ili9481_LCD_RESET_ENABLE (ili9481_CONTROL_PORT->BSRR |= GPIO_BSRR_BR_3) // Reset.
#define ili9481_LCD_RESET_DISABLE (ili9481_CONTROL_PORT->BSRR |= GPIO_BSRR_BS_3) // Active (LCD reset activation) - LOW
#define ili9481_SET_DATA (ili9481_DATA_PORT->ODR)
#define ili9481_READ_DATA (ili9481_DATA_PORT->IDR & 0x0000)
#define ili9481_WR_STROBE {ili9481_LCD_WR_ENABLE; ili9481_LCD_WR_DISABLE;}
void ili9481_Send_Command (uint16_t Reg_Value)
{
//if (Data_PINs_State == 1) {ili9481_PINs_Data_Out();}
ili9481_LCD_CS_DISABLE;
//ili9481_LCD_RD_DISABLE;
ili9481_LCD_WR_DISABLE;
ili9481_LCD_CD_DATA;
ili9481_LCD_CS_ENABLE;
ili9481_LCD_CD_COMMAND;
ili9481_SET_DATA = Reg_Value;
ili9481_WR_STROBE;
ili9481_LCD_CS_DISABLE;
}
void ili9481_Send_Data (uint16_t Data_for_send)
{
//if (Data_PINs_State == 1) {ili9481_PINs_Data_Out();}
ili9481_LCD_CS_DISABLE;
//ili9481_LCD_RD_DISABLE;
ili9481_LCD_WR_DISABLE;
ili9481_LCD_CD_COMMAND;
ili9481_LCD_CS_ENABLE;
ili9481_LCD_CD_DATA;
ili9481_SET_DATA = Data_for_send;
ili9481_WR_STROBE;
ili9481_LCD_CS_DISABLE;
}