//VCI=3.3V //***********************寄存器指令***************************************** void write_command (unsigned char y) // (uchar y,uchar x) { unsigned char i; csb=0; sclb=0; sdi=0; sclb=1; for(i=0;i<8;i++) { sclb=0; if (y&0x80) { sdi=1; } else { sdi=0; } sclb=1; y=y<<1; } csb=1; } //**************************寄存器数据************************************* void write_data(unsigned char w) // (uchar w, uchar v) { unsigned char i; csb=0; sclb=0; sdi=1; sclb=1; for(i=0;i<8;i++) { sclb=0; if (w&0x80) { sdi=1; } else { sdi=0; } sclb=1; w=w<<1; } csb=1; } //********************送显示数据********************************* void write_data2(unsigned char data_l,data_h) { unsigned char a,i,b; csb=0; sclb=0; sdi=1; sclb=1; a=data_l; for(i=0;i<8;i++) { sclb=0; if (a&0x80) { sdi=1; } else { sdi=0; } sclb=1; a=a<<1; } csb=0; sclb=0; sdi=1; sclb=1; b=data_h; for(i=0;i<8;i++) { sclb=0; if (b&0x80) { sdi=1; } else { sdi=0; } sclb=1; b=b<<1; } csb=1; } /*************************************************/ void initi(void) { res=1; delay(1); res=0; delay(10); res=1; delay(120); //--------------------------------ST7789 Frame rate setting----------------------------------// write_command(0xb2); write_data(0x0c); write_data(0x0c); write_data(0x00); write_data(0x33); write_data(0x33); write_command(0xb7); write_data(0x35); //---------------------------------ST7789S Power setting--------------------------------------// write_command(0x36); write_data(0x00); write_command(0xbb); write_data(0x2b);//vcom write_command(0xc2); write_data(0x01); write_command(0xc3);//gvdd write_data(0x0b); //调深浅12 write_command(0xc4); write_data(0x20); write_command(0xc6); write_data(0x0f); write_command(0xd0); write_data(0xa4); write_data(0xa2); //--------------------------------ST7789S gamma setting---------------------------------------// write_command(0xe0); write_data(0xd0); write_data(0x00); write_data(0x03); write_data(0x08); write_data(0x0a); write_data(0x17); write_data(0x2e); write_data(0x44); write_data(0x3f); write_data(0x29); write_data(0x10); write_data(0x0e); write_data(0x14); write_data(0x18); write_command(0xe1); write_data(0xd0); write_data(0x00); write_data(0x03); write_data(0x08); write_data(0x0a); write_data(0x17); write_data(0x2e); write_data(0x44); write_data(0x3f); write_data(0x29); write_data(0x10); write_data(0x0e); write_data(0x14); write_data(0x18); write_command(0x3a); write_data(0x55); write_command(0x2A); //Frame rate control write_data(0x00); write_data(0x00); write_data(0x00); write_data(0xEF); write_command(0x2B); //Display function control write_data(0x00); write_data(0x00); write_data(0x01); write_data(0x3F); write_command(0x11); delay(120); //Delay 120ms write_command(0x29); //display on delay(25); write_command(0x2c); } //********************************************************************************************* void EnterSleep (void) { write_command(0x28); delay(20); write_command(0x10); } //********************************************************* void ExitSleep (void) { write_command(0x11); delay(120); write_command(0x29); } //******************地址窗口********************************************** void LCD_BlockWrite (kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy) { write_command(0x2A); write_data(((startx&0xFF00)>>8)); write_data((startx&0xFF)); write_data(((endx&0xFF00)>>8)); write_data((endx&0xFF)); write_command(0x2B); write_data(((starty&0xFF00)>>8)); write_data((starty&0xFF)); write_data(((endy&0xFF00)>>8)); write_data((endy&0xFF)); write_command(0x2C); }