/********************************************************; ;* IC : ST7735R *; ;* MCU type : W78E516B *; ;* Data : 2007.12.25 *; ;* Written by : *; ;********************************************************/ /*======================================= */ #include #include #include //#include "pic.h" //===================== /*sbit RES = P1^0; sbit WRB = P1^3; sbit A0 = P1^2; sbit CS = P1^1; sbit RD_E= P3^2; */ sbit RES = P2^1; sbit WRB = P2^3; sbit A0 = P2^2; sbit CS = P2^0; sbit RD_E= P2^4; void RGB(); //void GREEN(); //void BLUE(); void blk(); void white(); void grayscal(); void PIC1(); void inint0803(); void WriteCOM(unsigned char a); void WriteDAT(unsigned char b); void delayms(unsigned int tt); void address(); main() { RES=1; delayms(100); RES=0; delayms(100); RES=1; delayms(100); inint0803(); while(1) { RGB(); delayms(500); PIC1(); delayms(500); grayscal(); delayms(500); blk(); delayms(500); white(); delayms(500); } } void WriteCOM(unsigned char a) { CS=0; A0=0; //CHIP=1; RD_E=1; P1=a; WRB=0; //P2=datal; WRB=1; CS=1; //CHIP=0; } void WriteDAT(unsigned char b) { CS=0; A0=1; //CHIP=1; RD_E=1; P1=b; WRB=0; //P2=datal; WRB=1; CS=1; //CHIP=0; //delayms(5); } void delayms(unsigned int tt) { unsigned int i; while(tt>0) { for(i=0;i<200;i++); tt--; } } void inint0803() { WriteCOM(0x11); //sleep out delayms(130); //wait at least 120ms //WriteCOM(0x13); //normal display WriteCOM(0xFF); //vcom4 level control WriteDAT(0x40); WriteDAT(0x01); WriteDAT(0x1A); WriteCOM(0xb1); WriteDAT(0x05); WriteDAT(0x3c); WriteDAT(0x3c); WriteCOM(0xb2); WriteDAT(0x05); WriteDAT(0x3c); WriteDAT(0x3c); WriteCOM(0xb3); WriteDAT(0x05); WriteDAT(0x3c); WriteDAT(0x3c); WriteDAT(0x05); WriteDAT(0x3c); WriteDAT(0x3c); WriteCOM( 0xb4); WriteDAT(0x07); WriteCOM( 0xc0); WriteDAT(0xb4); WriteDAT(0x14); WriteDAT(0x04); WriteCOM( 0xc1); WriteDAT(0xc0); WriteCOM( 0xc2); WriteDAT(0x0a); WriteDAT(0x00); WriteCOM( 0xc3); WriteDAT(0x8a); WriteDAT(0x2a); WriteCOM( 0xc5); WriteDAT(0x00); WriteCOM( 0xc4); WriteDAT(0x8a); WriteDAT(0xaa); WriteCOM( 0x21); WriteCOM( 0x36); WriteDAT(0xc0); WriteCOM(0x3a); WriteDAT(0x05); WriteCOM( 0xe0); WriteDAT(0x03); WriteDAT(0x22); WriteDAT(0x0a); WriteDAT(0x12); WriteDAT(0x3a); WriteDAT(0x35); WriteDAT(0x2e); WriteDAT(0x31); WriteDAT(0x30); WriteDAT(0x2d); WriteDAT(0x34); WriteDAT(0x3d); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x01); WriteDAT(0x03); WriteCOM( 0xe1); WriteDAT(0x03); WriteDAT(0x20); WriteDAT(0x0a); WriteDAT(0x12); WriteDAT(0x2e); WriteDAT(0x2a); WriteDAT(0x26); WriteDAT(0x2b); WriteDAT(0x2b); WriteDAT(0x2a); WriteDAT(0x32); WriteDAT(0x3d); WriteDAT(0x00); WriteDAT(0x01); WriteDAT(0x02); WriteDAT(0x04); WriteCOM(0x29);// Display on delayms(100); WriteCOM(0x2C); } //³õʼ»¯Íê³É void RGB() { unsigned int i,j; // address(); WriteCOM(0x2A); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x7F); WriteCOM(0x2B); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x9f); WriteCOM(0x2C); //R; for(i=0;i<128;i++) { WriteDAT(0x07); WriteDAT(0xE0); } for(j=0;j<50;j++) { WriteDAT(0x07); WriteDAT(0xE0); for(i=0;i<126;i++) { WriteDAT(0xF8); WriteDAT(0x00); } WriteDAT(0x07); WriteDAT(0xE0); } for(i=0;i<128;i++) { WriteDAT(0x07); WriteDAT(0xE0); } //G; for(i=0;i<128;i++) { WriteDAT(0x00); WriteDAT(0x1F); } for(j=0;j<50;j++) { WriteDAT(0x00); WriteDAT(0x1F); for(i=0;i<126;i++) { WriteDAT(0x07); WriteDAT(0xE0); } WriteDAT(0x00); WriteDAT(0x1F); } for(i=0;i<128;i++) { WriteDAT(0x00); WriteDAT(0x1F); } //B; for(i=0;i<128;i++) { WriteDAT(0xF8); WriteDAT(0x00); } for(j=0;j<54;j++) { WriteDAT(0xF8); WriteDAT(0x00); for(i=0;i<126;i++) { WriteDAT(0x00); WriteDAT(0x1F); } WriteDAT(0xF8); WriteDAT(0x00); } for(i=0;i<128;i++) { WriteDAT(0xF8); WriteDAT(0x00); } } void blk() { unsigned int i,j; WriteCOM(0x2A); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x7F); WriteCOM(0x2B); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x9f); WriteCOM(0x2C); // address(); for(i=0;i<128;i++) { WriteDAT(0xFF); WriteDAT(0xFF); } for(j=0;j<158;j++) { WriteDAT(0xFF); WriteDAT(0xFF); for(i=0;i<126;i++) { WriteDAT(0x00); WriteDAT(0x00); } WriteDAT(0xFF); WriteDAT(0xFF); } for(i=0;i<128;i++) { WriteDAT(0xFF); WriteDAT(0xFF); } } void white() { unsigned int i,j; WriteCOM(0x2A); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x7F); WriteCOM(0x2B); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x9f); WriteCOM(0x2C); // address(); for(i=0;i<128;i++) { WriteDAT(0x00); WriteDAT(0x00); } for(j=0;j<158;j++) { WriteDAT(0x00); WriteDAT(0x00); for(i=0;i<126;i++) { WriteDAT(0xff); WriteDAT(0xff); } WriteDAT(0x00); WriteDAT(0x00); } for(i=0;i<128;i++) { WriteDAT(0x00); WriteDAT(0x00); } } void grayscal() { int i,j; WriteCOM(0x2A); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x7F); WriteCOM(0x2B); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x9f); WriteCOM(0x2C); for(j=0;j<80;j++) { for(i=0;i<8;i++) { WriteDAT(0x00); //1 WriteDAT(0x00); } for(i=8;i<16;i++) { WriteDAT(0x10); //2 WriteDAT(0x82); } for(i=16;i<24;i++) { WriteDAT(0x21); //3 WriteDAT(0x04); } for(i=24;i<32;i++) { WriteDAT(0x31); //4 WriteDAT(0x86); } for(i=32;i<40;i++) { WriteDAT(0x42); //5 WriteDAT(0x08); } for(i=40;i<48;i++) //6 { WriteDAT(0x52); WriteDAT(0x8a); } for(i=48;i<56;i++) { //7 WriteDAT(0x63); WriteDAT(0x0c); } for(i=56;i<64;i++) { WriteDAT(0x73); //8 WriteDAT(0x8e); } for(i=64;i<72;i++) { WriteDAT(0x84); //9 WriteDAT(0x10); } for(i=72;i<80;i++) { //10 WriteDAT(0x94); WriteDAT(0x92); } for(i=80;i<88;i++) //11 { WriteDAT(0xa5); WriteDAT(0x14); } for(i=88;i<96;i++) { //12 WriteDAT(0xb5); WriteDAT(0x96); } for(i=96;i<104;i++) { WriteDAT(0xc6); //13 WriteDAT(0x18); } for(i=104;i<112;i++) //14 { WriteDAT(0xd6); WriteDAT(0x9a); } for(i=112;i<120;i++) //15 { WriteDAT(0xe7); WriteDAT(0x1c); } for(i=120;i<128;i++) //16 { WriteDAT(0xf7); WriteDAT(0x9e); } } for(j=0;j<20;j++) { for(i=0;i<64;i++) { WriteDAT(0xff); WriteDAT(0xff); } for(i=0;i<64;i++) { WriteDAT(0x00); WriteDAT(0x00); } } for(j=0;j<40;j++) { for(i=0;i<16;i++) { WriteDAT(0xff); WriteDAT(0xff); } for(i=0;i<32;i++) { WriteDAT(0xe7); WriteDAT(0x1c); } for(i=0;i<16;i++) { WriteDAT(0xff); WriteDAT(0xff); } for(i=0;i<16;i++) { WriteDAT(0x00); WriteDAT(0x00); } for(i=0;i<32;i++) { WriteDAT(0x10); //2 WriteDAT(0x82); } for(i=0;i<16;i++) { WriteDAT(0x00); WriteDAT(0x00); } } for(j=0;j<20;j++) { for(i=0;i<64;i++) { WriteDAT(0xff); WriteDAT(0xff); } for(i=0;i<64;i++) { WriteDAT(0x00); WriteDAT(0x00); } } } void PIC1() { unsigned int i,j; // unsigned char *PicData; // PicData=&pic; WriteCOM(0x2A); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x7F); WriteCOM(0x2B); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x00); WriteDAT(0x9f); WriteCOM(0x2C); for (j=0;j<160;j++) { for (i=0;i<128;i++) { // WriteDAT(*PicData++); // WriteDAT(*PicData++); } } }