Инициализация TFT дисплея OTM8009A.
Ровно пять лет прошло с того момента, как на сайте появилась первая статья, описывавшая инициализацию дисплея. В своих проектах я использовал его не один год и за это время, в продаже появились дисплеи, обладающие лучшими характеристиками. Например, IPS дисплей размером 3.97 дюйма, с разрешением 800x480 пикселей.
Подключается он по интерфейсу i8080, который не однократно описывал в других статьях и думаю, очередной раз описывать этот интерфейс не имеет смысла. А вот описать инициализацию дисплея смысл имеет.
Дисплей покупал тут.
Подключается он по интерфейсу i8080, который не однократно описывал в других статьях и думаю, очередной раз описывать этот интерфейс не имеет смысла. А вот описать инициализацию дисплея смысл имеет.
#define LCD_H 480
#define LCD_W 800
static void TFT_Send_Cmd(uint16_t cmd)
{
TFT_RS_LOW
//TFT_RD_HIGH
GPIOD->ODR = cmd;
TFT_WR_LOW
TFT_WR_HIGH
TFT_RS_HIGH
}
static void TFT_Write_Data(uint16_t data)
{
//TFT_RS_HIGH
//TFT_RD_HIGH
GPIOD->ODR = data;
TFT_WR_LOW
TFT_WR_HIGH
}
////////////////////////////////////////
void Init_OTM8009A(void)
{
//D0 - PD0
//..
//..
//..
//D14 - PD15
//RS - PB5
//CS - PB6
//RD - PB7
//WR - PB8
//RST - PB3
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN | RCC_AHB1ENR_GPIODEN;
//настраиваем все выходы как PP
GPIOB->MODER |= (GPIO_MODER_MODER3_0 | GPIO_MODER_MODER5_0 | GPIO_MODER_MODER6_0 |
GPIO_MODER_MODER7_0 | GPIO_MODER_MODER8_0);
GPIOD->MODER = (GPIO_MODER_MODER0_0 | GPIO_MODER_MODER1_0 | GPIO_MODER_MODER2_0 | GPIO_MODER_MODER3_0 |
GPIO_MODER_MODER4_0 |GPIO_MODER_MODER5_0 | GPIO_MODER_MODER6_0 | GPIO_MODER_MODER7_0 |
GPIO_MODER_MODER8_0 | GPIO_MODER_MODER9_0 | GPIO_MODER_MODER10_0 | GPIO_MODER_MODER11_0 |
GPIO_MODER_MODER12_0 | GPIO_MODER_MODER13_0 | GPIO_MODER_MODER14_0 | GPIO_MODER_MODER15_0);
GPIOB->OSPEEDR = (GPIO_OSPEEDER_OSPEEDR3 | GPIO_OSPEEDER_OSPEEDR5 | GPIO_OSPEEDER_OSPEEDR6 | GPIO_OSPEEDER_OSPEEDR7 |
GPIO_OSPEEDER_OSPEEDR8);
GPIOD->OSPEEDR = (GPIO_OSPEEDER_OSPEEDR0 | GPIO_OSPEEDER_OSPEEDR1 | GPIO_OSPEEDER_OSPEEDR2 | GPIO_OSPEEDER_OSPEEDR3 |
GPIO_OSPEEDER_OSPEEDR4 | GPIO_OSPEEDER_OSPEEDR5 | GPIO_OSPEEDER_OSPEEDR6 | GPIO_OSPEEDER_OSPEEDR7 |
GPIO_OSPEEDER_OSPEEDR8 | GPIO_OSPEEDER_OSPEEDR9 | GPIO_OSPEEDER_OSPEEDR10 | GPIO_OSPEEDER_OSPEEDR11 |
GPIO_OSPEEDER_OSPEEDR12 | GPIO_OSPEEDER_OSPEEDR13 | GPIO_OSPEEDER_OSPEEDR14 | GPIO_OSPEEDER_OSPEEDR15);
//управляющие сигналы устанавливаем в высокой уровень и учитываем это, чтобы лишний раз их не дергать
TFT_RS_HIGH
TFT_RD_HIGH
TFT_WR_HIGH
TFT_CS_LOW
// Reset дисплея
TFT_RST_LOW
delay_ms(2);
TFT_RST_HIGH
delay_ms(100);
//3.97inch OTM8009 Init
TFT_Send_Cmd(0xff00);
TFT_Write_Data(0x80);
TFT_Send_Cmd(0xff01);
TFT_Write_Data(0x09);
TFT_Send_Cmd(0xff02);
TFT_Write_Data(0x01);
TFT_Send_Cmd(0xff80);
TFT_Write_Data(0x80);
TFT_Send_Cmd(0xff81);
TFT_Write_Data(0x09);
TFT_Send_Cmd(0xff03);
TFT_Write_Data(0x01);
TFT_Send_Cmd(0xf5b6);
TFT_Write_Data(0x06);
TFT_Send_Cmd(0xc480);
TFT_Write_Data(0x30);
TFT_Send_Cmd(0xc48a);
TFT_Write_Data(0x40);
//===================================================//
TFT_Send_Cmd(0xc0a3);
TFT_Write_Data(0x1B);
//TFT_Send_Cmd(0xc0ba);
//TFT_Write_Data(0x50);
TFT_Send_Cmd(0xc0ba);
TFT_Write_Data(0x50);
TFT_Send_Cmd(0xc181);
TFT_Write_Data(0x66);
TFT_Send_Cmd(0xc1a1);
TFT_Write_Data(0x0E);
TFT_Send_Cmd(0xc481);
TFT_Write_Data(0x83);
TFT_Send_Cmd(0xc582);
TFT_Write_Data(0x83);
TFT_Send_Cmd(0xc590);
TFT_Write_Data(0x96);
TFT_Send_Cmd(0xc591);
TFT_Write_Data(0x2B);
TFT_Send_Cmd(0xc592);
TFT_Write_Data(0x01);
TFT_Send_Cmd(0xc594);
TFT_Write_Data(0x33);
TFT_Send_Cmd(0xc595);
TFT_Write_Data(0x34);
TFT_Send_Cmd(0xc5b1);
TFT_Write_Data(0xa9);
TFT_Send_Cmd(0xce80);
TFT_Write_Data(0x86);
TFT_Send_Cmd(0xce81);
TFT_Write_Data(0x01);
TFT_Send_Cmd(0xce82);
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xce83);
TFT_Write_Data(0x85);
TFT_Send_Cmd(0xce84);
TFT_Write_Data(0x01);
TFT_Send_Cmd(0xce85);
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xce86);
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xce87);
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xce88);
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xce89);
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xce8A);
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xce8B);
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcea0);// cea1[7:0] : clka1_width[3:0], clka1_shift[11:8]
TFT_Write_Data(0x18);
TFT_Send_Cmd(0xcea1);// cea2[7:0] : clka1_shift[7:0]
TFT_Write_Data(0x04);
TFT_Send_Cmd(0xcea2);// cea3[7:0] : clka1_sw_tg, odd_high, flat_head, flat_tail, switch[11:8]
TFT_Write_Data(0x03);
TFT_Send_Cmd(0xcea3);// cea4[7:0] : clka1_switch[7:0]
TFT_Write_Data(0x21);
TFT_Send_Cmd(0xcea4);// cea5[7:0] : clka1_extend[7:0]
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcea5);// cea6[7:0] : clka1_tchop[7:0]
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcea6);// cea7[7:0] : clka1_tglue[7:0]
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcea7);// cea8[7:0] : clka2_width[3:0], clka2_shift[11:8]
TFT_Write_Data(0x18);
TFT_Send_Cmd(0xcea8);// cea9[7:0] : clka2_shift[7:0]
TFT_Write_Data(0x03);
TFT_Send_Cmd(0xcea9);// ceaa[7:0] : clka2_sw_tg, odd_high, flat_head, flat_tail, switch[11:8]
TFT_Write_Data(0x03);
TFT_Send_Cmd(0xceaa);// ceab[7:0] : clka2_switch[7:0]
TFT_Write_Data(0x22);
TFT_Send_Cmd(0xceab);// ceac[7:0] : clka2_extend
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xceac);// cead[7:0] : clka2_tchop
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcead);// ceae[7:0] : clka2_tglue
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xceb0);// ceb1[7:0] : clka3_width[3:0], clka3_shift[11:8]
TFT_Write_Data(0x18);
TFT_Send_Cmd(0xceb1);// ceb2[7:0] : clka3_shift[7:0]
TFT_Write_Data(0x02);
TFT_Send_Cmd(0xceb2);// ceb3[7:0] : clka3_sw_tg, odd_high, flat_head, flat_tail, switch[11:8]
TFT_Write_Data(0x03);
TFT_Send_Cmd(0xceb3);// ceb4[7:0] : clka3_switch[7:0]
TFT_Write_Data(0x23);
TFT_Send_Cmd(0xceb4);// ceb5[7:0] : clka3_extend[7:0]
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xceb5);// ceb6[7:0] : clka3_tchop[7:0]
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xceb6);// ceb7[7:0] : clka3_tglue[7:0]
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xceb7);// ceb8[7:0] : clka4_width[3:0], clka2_shift[11:8]
TFT_Write_Data(0x18);
TFT_Send_Cmd(0xceb8);// ceb9[7:0] : clka4_shift[7:0]
TFT_Write_Data(0x01);
TFT_Send_Cmd(0xceb9);// ceba[7:0] : clka4_sw_tg, odd_high, flat_head, flat_tail, switch[11:8]
TFT_Write_Data(0x03);
TFT_Send_Cmd(0xceba);// cebb[7:0] : clka4_switch[7:0]
TFT_Write_Data(0x24);
TFT_Send_Cmd(0xcebb);// cebc[7:0] : clka4_extend
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcebc);// cebd[7:0] : clka4_tchop
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcebd);// cebe[7:0] : clka4_tglue
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcfc0);// cfc1[7:0] : eclk_normal_width[7:0]
TFT_Write_Data(0x01);
TFT_Send_Cmd(0xcfc1);// cfc2[7:0] : eclk_partial_width[7:0]
TFT_Write_Data(0x01);
TFT_Send_Cmd(0xcfc2);// cfc3[7:0] : all_normal_tchop[7:0]
TFT_Write_Data(0x20);
TFT_Send_Cmd(0xcfc3);// cfc4[7:0] : all_partial_tchop[7:0]
TFT_Write_Data(0x20);
TFT_Send_Cmd(0xcfc4);// cfc5[7:0] : eclk1_follow[3:0], eclk2_follow[3:0]
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcfc5);// cfc6[7:0] : eclk3_follow[3:0], eclk4_follow[3:0]
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcfc6);// cfc7[7:0] : 00, vstmask, vendmask, 00, dir1, dir2 (0=VGL, 1=VGH)
TFT_Write_Data(0x01);
TFT_Send_Cmd(0xcfc7);// cfc8[7:0] : reg_goa_gnd_opt, reg_goa_dpgm_tail_set, reg_goa_f_gating_en, reg_goa_f_odd_gating, toggle_mod1, 2, 3, 4
TFT_Write_Data(0x00); // GND OPT1 (00-->80 2011/10/28)
TFT_Send_Cmd(0xcfc8);// cfc9[7:0] : duty_block[3:0], DGPM[3:0]
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcfc9);// cfca[7:0] : reg_goa_gnd_period[7:0]
TFT_Write_Data(0x00); // Gate PCH (CLK base) (00-->0a 2011/10/28)
TFT_Send_Cmd(0xcfd0);// cfd1[7:0] : 0000000, reg_goa_frame_odd_high
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbc0);//cbc1[7:0] : enmode H-byte of sig1 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbc1);//cbc2[7:0] : enmode H-byte of sig2 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x04);
TFT_Send_Cmd(0xcbc2);//cbc3[7:0] : enmode H-byte of sig3 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x04);
TFT_Send_Cmd(0xcbc3);//cbc4[7:0] : enmode H-byte of sig4 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x04);
TFT_Send_Cmd(0xcbc4);//cbc5[7:0] : enmode H-byte of sig5 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x04);
TFT_Send_Cmd(0xcbc5);//cbc6[7:0] : enmode H-byte of sig6 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x04);
TFT_Send_Cmd(0xcbc6);//cbc7[7:0] : enmode H-byte of sig7 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbc7);//cbc8[7:0] : enmode H-byte of sig8 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbc8);//cbc9[7:0] : enmode H-byte of sig9 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbc9);//cbca[7:0] : enmode H-byte of sig10 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbca);//cbcb[7:0] : enmode H-byte of sig11 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbcb);//cbcc[7:0] : enmode H-byte of sig12 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbcc);//cbcd[7:0] : enmode H-byte of sig13 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbcd);//cbce[7:0] : enmode H-byte of sig14 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbce);//cbcf[7:0] : enmode H-byte of sig15 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbd0);//cbd1[7:0] : enmode H-byte of sig16 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbd1);//cbd2[7:0] : enmode H-byte of sig17 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbd2);//cbd3[7:0] : enmode H-byte of sig18 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbd3);//cbd4[7:0] : enmode H-byte of sig19 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbd4);//cbd5[7:0] : enmode H-byte of sig20 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbd5);//cbd6[7:0] : enmode H-byte of sig21 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbd6);//cbd7[7:0] : enmode H-byte of sig22 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x04);
TFT_Send_Cmd(0xcbd7);//cbd8[7:0] : enmode H-byte of sig23 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x04);
TFT_Send_Cmd(0xcbd8);//cbd9[7:0] : enmode H-byte of sig24 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x04);
TFT_Send_Cmd(0xcbd9);//cbda[7:0] : enmode H-byte of sig25 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x04);
TFT_Send_Cmd(0xcbda);//cbdb[7:0] : enmode H-byte of sig26 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x04);
TFT_Send_Cmd(0xcbdb);//cbdc[7:0] : enmode H-byte of sig27 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbdc);//cbdd[7:0] : enmode H-byte of sig28 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbdd);//cbde[7:0] : enmode H-byte of sig29 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbde);//cbdf[7:0] : enmode H-byte of sig30 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbe0);//cbe1[7:0] : enmode H-byte of sig31 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbe1);//cbe2[7:0] : enmode H-byte of sig32 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbe2);//cbe3[7:0] : enmode H-byte of sig33 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbe3);//cbe4[7:0] : enmode H-byte of sig34 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbe4);//cbe5[7:0] : enmode H-byte of sig35 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbe5);//cbe6[7:0] : enmode H-byte of sig36 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbe6);//cbe7[7:0] : enmode H-byte of sig37 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbe7);//cbe8[7:0] : enmode H-byte of sig38 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbe8);//cbe9[7:0] : enmode H-byte of sig39 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcbe9);//cbea[7:0] : enmode H-byte of sig40 (pwrof_0, pwrof_1, norm, pwron_4 )
TFT_Write_Data(0x00);
// cc8x
TFT_Send_Cmd(0xcc80);//cc81[7:0] : reg setting for signal01 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc81);//cc82[7:0] : reg setting for signal02 selection with u2d mode
TFT_Write_Data(0x26);
TFT_Send_Cmd(0xcc82);//cc83[7:0] : reg setting for signal03 selection with u2d mode
TFT_Write_Data(0x09);
TFT_Send_Cmd(0xcc83);//cc84[7:0] : reg setting for signal04 selection with u2d mode
TFT_Write_Data(0x0B);
TFT_Send_Cmd(0xcc84);//cc85[7:0] : reg setting for signal05 selection with u2d mode
TFT_Write_Data(0x01);
TFT_Send_Cmd(0xcc85);//cc86[7:0] : reg setting for signal06 selection with u2d mode
TFT_Write_Data(0x25);
TFT_Send_Cmd(0xcc86);//cc87[7:0] : reg setting for signal07 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc87);//cc88[7:0] : reg setting for signal08 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc88);//cc89[7:0] : reg setting for signal09 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc89);//cc8a[7:0] : reg setting for signal10 selection with u2d mode
TFT_Write_Data(0x00);
// cc9x
TFT_Send_Cmd(0xcc90);//cc91[7:0] : reg setting for signal11 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc91);//cc92[7:0] : reg setting for signal12 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc92);//cc93[7:0] : reg setting for signal13 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc93);//cc94[7:0] : reg setting for signal14 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc94);//cc95[7:0] : reg setting for signal15 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc95);//cc96[7:0] : reg setting for signal16 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc96);//cc97[7:0] : reg setting for signal17 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc97);//cc98[7:0] : reg setting for signal18 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc98);//cc99[7:0] : reg setting for signal19 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc99);//cc9a[7:0] : reg setting for signal20 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc9a);//cc9b[7:0] : reg setting for signal21 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcc9b);//cc9c[7:0] : reg setting for signal22 selection with u2d mode
TFT_Write_Data(0x26);
TFT_Send_Cmd(0xcc9c);//cc9d[7:0] : reg setting for signal23 selection with u2d mode
TFT_Write_Data(0x0A);
TFT_Send_Cmd(0xcc9d);//cc9e[7:0] : reg setting for signal24 selection with u2d mode
TFT_Write_Data(0x0C);
TFT_Send_Cmd(0xcc9e);//cc9f[7:0] : reg setting for signal25 selection with u2d mode
TFT_Write_Data(0x02);
// ccax
TFT_Send_Cmd(0xcca0);//cca1[7:0] : reg setting for signal26 selection with u2d mode
TFT_Write_Data(0x25);
TFT_Send_Cmd(0xcca1);//cca2[7:0] : reg setting for signal27 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcca2);//cca3[7:0] : reg setting for signal28 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcca3);//cca4[7:0] : reg setting for signal29 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcca4);//cca5[7:0] : reg setting for signal20 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcca5);//cca6[7:0] : reg setting for signal31 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcca6);//cca7[7:0] : reg setting for signal32 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcca7);//cca8[7:0] : reg setting for signal33 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcca8);//cca9[7:0] : reg setting for signal34 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0xcca9);//ccaa[7:0] : reg setting for signal35 selection with u2d mode
TFT_Write_Data(0x00);
TFT_Send_Cmd(0x3A00);//ccaa[7:0] : reg setting for signal35 selection with u2d mode
TFT_Write_Data(0x55);//0x55
TFT_Send_Cmd(0x1100);
delay_ms(100);
TFT_Send_Cmd(0x2900);
delay_ms(50);
TFT_Send_Cmd(0x2C00);
TFT_Send_Cmd(0x3600);//выбираем ориентацию дисплея и порядок цветов BGR
TFT_Write_Data((1<<3)|(1<<5)|(1<<6));
delay_ms(100);
TFT_Clear(GREEN);
}
////////////////////////
void TFT_Set_Column(uint16_t start_column,uint16_t end_colunm)
{
TFT_Send_Cmd(0x2A00);
TFT_Write_Data(start_column>>8);
TFT_Send_Cmd(0x2A01);
TFT_Write_Data(start_column&0x00FF);
TFT_Send_Cmd(0x2A02);
TFT_Write_Data(end_colunm>>8);
TFT_Send_Cmd(0x2A03);
TFT_Write_Data(end_colunm&0x00FF);
}
/////////////////////////
void TFT_Set_Page(uint16_t start_page,uint16_t end_page)
{
TFT_Send_Cmd(0x2B00);
TFT_Write_Data(start_page>>8);
TFT_Send_Cmd(0x2B01);
TFT_Write_Data(start_page&0x00FF);
TFT_Send_Cmd(0x2B02);
TFT_Write_Data(end_page>>8);
TFT_Send_Cmd(0x2B03);
TFT_Write_Data(end_page&0x00FF);
}
////////////////////////
void TFT_Clear(uint16_t color)
{
uint32_t index = 0;
TFT_Set_Page(0,LCD_H-1);
TFT_Set_Column(0,LCD_W-1);
TFT_Send_Cmd(0x2C00);
for(index=0;index<(LCD_H*LCD_W);index++)
{
TFT_Write_Data(color);
}
}
//////////////////
Дисплей покупал тут.
Похожие статьи