#include #define DataH P2 #define DataL P0 sbit TFT_CS = P1^0; sbit RES = P1^4; sbit RS = P1^1; sbit WRB = P1^2; sbit RDB = P1^3; void delay(int value) { int i,j; for(i=0;i<=value;i++) {for(j=0;j<=500;j++);} } void LCD_WRITE_CMD(char cmd) { RS = 0; RDB = 1; WRB = 1; TFT_CS = 0; DataH = cmd; WRB = 0; WRB = 1; TFT_CS = 1; } void LCD_WRITE_DATA(char dat) { RS = 1; RDB = 1; WRB = 1; TFT_CS = 0; DataH = dat; WRB = 0; WRB = 1; TFT_CS = 1; } void reset(void) { RES = 1; delay(50); RES = 0; delay(200); RES = 1; delay(500); } void lcd_init(void) { reset(); LCD_WRITE_CMD(0x01);// Software Reset delay(20); LCD_WRITE_CMD(0x11);//Sleep Out delay(120); LCD_WRITE_CMD(0XC2); LCD_WRITE_DATA(0x04); LCD_WRITE_DATA(0x00); LCD_WRITE_CMD(0Xd7); LCD_WRITE_DATA(0x40); LCD_WRITE_DATA(0xe0); LCD_WRITE_CMD(0Xfd); LCD_WRITE_DATA(0x06); LCD_WRITE_DATA(0x11); LCD_WRITE_CMD(0Xc5); LCD_WRITE_DATA(0x16); LCD_WRITE_DATA(0x3d); LCD_WRITE_CMD(0Xc0); LCD_WRITE_DATA(0x05); LCD_WRITE_CMD(0Xc7); LCD_WRITE_DATA(0xc4); LCD_WRITE_CMD(0X36); LCD_WRITE_DATA(0x0C); LCD_WRITE_CMD(0X26); LCD_WRITE_DATA(0x10); LCD_WRITE_CMD(0xe0); LCD_WRITE_DATA(0x01); LCD_WRITE_DATA(0x01); LCD_WRITE_DATA(0x02); LCD_WRITE_DATA(0x06); LCD_WRITE_DATA(0x0c); LCD_WRITE_DATA(0x13); LCD_WRITE_DATA(0x25); LCD_WRITE_DATA(0x9b); LCD_WRITE_DATA(0x38); LCD_WRITE_DATA(0x0c); LCD_WRITE_DATA(0x1d); LCD_WRITE_DATA(0x24); LCD_WRITE_DATA(0x09); LCD_WRITE_DATA(0x0c); LCD_WRITE_DATA(0x3f); LCD_WRITE_CMD(0xe1); LCD_WRITE_DATA(0x00); LCD_WRITE_DATA(0x33); LCD_WRITE_DATA(0x36); LCD_WRITE_DATA(0x0c); LCD_WRITE_DATA(0x13); LCD_WRITE_DATA(0x15); LCD_WRITE_DATA(0x49); LCD_WRITE_DATA(0x58); LCD_WRITE_DATA(0x5d); LCD_WRITE_DATA(0x0c); LCD_WRITE_DATA(0x23); LCD_WRITE_DATA(0x29); LCD_WRITE_DATA(0x3d); LCD_WRITE_DATA(0x3e); LCD_WRITE_DATA(0x3e); LCD_WRITE_CMD(0X3A); LCD_WRITE_DATA(0x55); delay(15); LCD_WRITE_CMD(0X29); LCD_WRITE_CMD(0X2c); } void LCD_SET_WIN(void) { LCD_WRITE_CMD(0x2A); LCD_WRITE_DATA(0x00); LCD_WRITE_DATA(0x00); LCD_WRITE_DATA(0x00); LCD_WRITE_DATA(0xef); LCD_WRITE_CMD(0x2B); LCD_WRITE_DATA(0x00); LCD_WRITE_DATA(0x00); LCD_WRITE_DATA(0x01); LCD_WRITE_DATA(0x3f); LCD_WRITE_CMD(0x002C); } void LCD_BRUSH(int color) { int i,j; LCD_WRITE_CMD(0x002C); for(i=0;i<240;i++) { for(j=0;j<320;j++) { LCD_WRITE_DATA(color>>8); LCD_WRITE_DATA(color); } } } unsigned char LCD_ID_5702(unsigned int dat) { unsigned char temp,DL,DH; LCD_WRITE_CMD(dat); temp=0; P2=0xff; ///////////////////////////////////////// RS=1; TFT_CS=0; RDB=0; delay(5); DH=P2; //1byte RDB=1; /////////////////// RDB=0; DL=P2; //2byte 0X38; RDB=1; /////////////////// RDB=0; DH=P2; //3byte RDB=1; /////////////////// RDB=0; DH=P2; //4byte RDB=1; TFT_CS=1; temp=DL; return temp; } void UART_init(void) { SCON=0x40; TMOD=0x20; TH1=0xF3; //²¨ÌØÂʼÆËã256-11059200/(12*32*9600) TL1=0xF3; TR1=1; } void UART_send_data(unsigned char str) { SBUF=str; while(!TI); TI=0; } void main(void) { unsigned char id; UART_init(); reset(); id = LCD_ID_5702(0x04); UART_send_data(id); UART_send_data(0x55); lcd_init(); LCD_SET_WIN(); while(1) { LCD_BRUSH(0xf800); delay(1000); LCD_BRUSH(0xffff); delay(1000); LCD_BRUSH(0x0000); delay(1000); // LCD_BRUSH(0xf7de); // delay(1000); ////// LCD_BRUSH(0x001f); // delay(1000); //// LCD_BRUSH(0xf81f); //// delay(1000); // LCD_BRUSH(0x07e0); // delay(1000); // LCD_BRUSH(0x001f); // delay(1000); // LCD_BRUSH(0xffe0); // delay(1000); } }