📄 st7787.c
字号:
/*ST7787 16bit 80serial
initial code for CPT tft panel
updata 2007 01 10 */
/*******************************/
#include <reg52.h>
//#include <main bird.h>
/********************************/
sbit CS = P2^4;
sbit RS = P2^2;
sbit RW = P2^1;
sbit rd = P2^0;
sbit RESET =P2^3;
/*********************************/
void delay(int count);
void main_init(void);
void wrie16_com( unsigned int c);
void wrie16_date(char DH,char DL);
//void adress1(void);
void black(void);
void white(void);
//void clour(void);
void red(void);
void green(void);
void blue(void);
void adress(void);
//void grayscale(void);
//void picture(void);
//void pause();
/******************************************************/
void wrie16_com(unsigned int c)
{
CS = 0;
RS=0;
rd=1;
//P2=c>>8;
P0=c>>8;
P1=c;
RW=0;
delay(1);
RW=1;
CS=1;
}
/**************************************************/
void wrie16_date(char DH,char DL)
{
CS= 0;
RS=1;
rd=1;
//P2=c1>>8;
P0=DH;
P1=DL;
RW=0;
delay(1);
RW=1;
CS= 1;
}
/******************************************/
void delay(int count) /* X10ms */
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<10;j++);
}
/***************************************************/
void black () //全黑
{
unsigned int a,b;
adress();
wrie16_com(0x002c);
for(a=0;a<320;a++)
{
for(b=0;b<240;b++)
{
wrie16_date(0xff,0xff);
}
}
}
/*********************************************/
void white() //全白
{
unsigned int a,b;
adress();
wrie16_com(0x002c);
for(a=0;a<320;a++)
{
for(b=0;b<240;b++)
{
wrie16_date(0x00,0x00);
}
}
}
/*****************************************************/
/*void clour () //横线
{
unsigned char a,b;
adress();
wrie16_com(0x002c);
for(a=0;a<160;a++)
{
for(b=0;b<240;b++)
{
wrie16_date(0xff,0xff);
wrie16_date(0x00,0x00);
}
}
}*/
/************************************************/
/*void grayscale()
{
unsigned int i,j;
adress();
wrie16_com(0x002c);
for(j=0;j<160;j++)
{
for(i=0;i<15;i++)
{
wrie16_date(0x00,0x00);//1
}
for(i=15;i<30;i++)
{
wrie16_date(0x10,0x82);//2
}
for(i=30;i<45;i++)
{
wrie16_date(0x21,0x04); //3
}
for(i=45;i<60;i++)
{
wrie16_date(0x31,0x86); //4
}
for(i=60;i<75;i++)
{
wrie16_date(0x42,0x08); //5
}
for(i=75;i<90;i++)
{
wrie16_date(0x52,0x8a); //6
}
for(i=90;i<105;i++)
{
wrie16_date(0x63,0x0c); //7
}
for(i=105;i<120;i++)
{
wrie16_date(0x73,0x8e); //8
}
for(i=120;i<135;i++)
{
wrie16_date(0x7b,0xcf); //9
}
for(i=135;i<150;i++)
{
wrie16_date(0x94,0x92); //10
}
for(i=150;i<165;i++)
{
wrie16_date(0xa5,0x14); //11
}
for(i=165;i<180;i++)
{
wrie16_date(0xb5,0x96); //12
}
for(i=180;i<195;i++)
{
wrie16_date(0xc6,0x18); //13
}
for(i=195;i<210;i++)
{
wrie16_date(0xd6,0x9a); //14
}
for(i=210;i<225;i++)
{
wrie16_date(0xe7,0x1c); //15
}
for(i=225;i<240;i++)
{
wrie16_date(0xff,0xff); //16
}
}
for(j=160;j<320;j++)
{
for(i=0;i<120;i++)
{
wrie16_date(0x00,0x00);
}
for(i=120;i<240;i++)
{
wrie16_date(0xff,0xff);
}
}
}*/
/*********************************************************************/
/*void picture()
{
unsigned int i,j;
unsigned int x,y;
/*wrie16_com(0x0036); /* memory data access control (MADCTR) */
//wrie16_date(0x02,0x80);
// adress();
// wrie16_com(0x002c);
//
// for(i=0;i<1;i++)
// {
// for(j=0;j<240;j++)
// {
// wrie16_date(0xff,0xff);
}
// }
// x=50879;
// y=50880;
//for(j=0;j<212;j++)
// {
// x=59872;
// y=59871;
// for(i=0;i<240;i++)
// {
// wrie16_date(pic2[x],pic2[y]);
// x=x-2;
// y=y-2;
// }
// }
// for(j=0;j<1;j++)
// {
// x=50878;
// y=50879;
// for(i=0;i<25440;i++)
// {
// wrie16_date(pic2[x],pic2[y]);
// x=x-2;
// y=y-2;
// }
// }
// for(j=0;j<1;////j++)
// {
// x=50878;
// y=50879;
// for(i=0;i<25440;i++)
// {
// wrie16_date(pic2[x],pic2[y]);
// x=x-2;
// y=y-2;
// }
// }
// for(i=0;i<1;i++)
//{
// for (j=0;j<240;j++)
// {
// wrie16_date(0xff,0xff);
// }
// }
//}
/*************************************************************/
void red()
{
unsigned int i,j;
adress();
wrie16_com(0x002c);
for(i=0;i<320;i++)
{
for(j=0;j<240;j++)
{
wrie16_date(0xf8,0x00);
}
}
}
/*********************************************************/
void blue()
{
unsigned int i,j;
adress();
wrie16_com(0x002c);
for(i=0;i<320;i++)
{
for(j=0;j<240;j++)
{
wrie16_date(0x00,0x1f);
}
}
}
/*******************************************************/
void green()
{
unsigned int i,j;
adress();
wrie16_com(0x002c);
for(i=0;i<320;i++)
{
for(j=0;j<240;j++)
{
wrie16_date(0x07,0xe0);
}
}
}
/*****************************************************/
void adress()
{
wrie16_com(0x002a); /* column address set */
wrie16_date(0x00,0x00); /*XS15-XS8*/
wrie16_date(0x00,0x00); /*XS7-XS0 (X start address)*/
wrie16_date(0x00,0x00); /* XE15-XE8*/
wrie16_date(0x00,0xef); /*XE7-XE0 (X end address)*/
wrie16_com(0x002b); /*row address set (RASET)*/
wrie16_date(0x00,0x00); /*YS15-YS8*/
wrie16_date(0x00,0x00); /*YS7-YS0 (Y start address)*/
wrie16_date(0x00,0x01); /*YE15-YE8*/
wrie16_date(0x00,0x3f);
}
/******************************************************************/
/*void adress1()
{
wrie16_com(0x002b);
wrie16_date(0x00,0x00);
wrie16_date(0x00,0x00);
wrie16_date(0x00,0x00);
wrie16_date(0x00,0xef);
wrie16_com(0x002a);
wrie16_date(0x00,0x00);
wrie16_date(0x00,0x00);
wrie16_date(0x00,0x00);
wrie16_date(0x00,0x6d);
}
/**************************************************/
void main_init ()
{
wrie16_com(0x00c0); /*power control*/
wrie16_date(0x00,0x00);
wrie16_com(0x00c1);
wrie16_date(0x00,0xd0); //d9
wrie16_date(0x00,0x01);
wrie16_com(0x00c2);
wrie16_date(0x00,0x01);
wrie16_date(0x00,0xd4);
wrie16_date(0x00,0x85);
wrie16_date(0x00,0x00);
wrie16_date(0x00,0x00);
wrie16_com(0x00c3);
wrie16_date(0x00,0x01);
wrie16_date(0x00,0x22);
wrie16_date(0x00,0x00);
wrie16_date(0x00,0x00);
wrie16_date(0x00,0x01);
wrie16_com(0x00f4);
wrie16_date(0x00,0xff);
wrie16_date(0x00,0x3f);
wrie16_com(0x00f5);
wrie16_date(0x00,0x10);
wrie16_com(0x00fb);
wrie16_date(0x00,0x7f);
wrie16_com(0x00c5);
wrie16_date(0x00,0xb6); //be
wrie16_date(0x00,0x1a);
wrie16_com(0x00c6);
wrie16_date(0x00,0x28);
wrie16_date(0x00,0x00);
wrie16_com(0x0038); /*ID mode off (IDMOFF)*/
wrie16_com(0x0013); /*Normal display mode on*/
wrie16_com(0x0020); /*display inversion off*/
wrie16_com(0x00b1); /*gamma set 可调*/
wrie16_date(0x00,0x30); //36
wrie16_date(0x00,0x02);
wrie16_date(0x00,0x02);
wrie16_com(0x00bc);
/* wrie16_com(0x00b4);
wrie16_date(0x0002);
/* wrie16_date(0x0002);
wrie16_date(0x0019);
wrie16_date(0x001d);
wrie16_date(0x001b);
wrie16_date(0x0019);
wrie16_date(0x0017);
wrie16_date(0x000b);
wrie16_date(0x0007);
wrie16_date(0x000f);
wrie16_date(0x0008);*/
wrie16_com(0x002a); /* column address set */
wrie16_date(0x00,0x00); /*XS15-XS8*/
wrie16_date(0x00,0x00); /*XS7-XS0 (X start address)*/
wrie16_date(0x00,0x00); /* XE15-XE8*/
wrie16_date(0x00,0xef); /*XE7-XE0 (X end address)*/
wrie16_com(0x002b); /*row address set (RASET)*/
wrie16_date(0x00,0x00); /*YS15-YS8*/
wrie16_date(0x00,0x00); /*YS7-YS0 (Y start address)*/
wrie16_date(0x00,0x01); /*YE15-YE8*/
wrie16_date(0x00,0x3f); /* YE7-YE0 (Y end address)*/
wrie16_com(0x0035);
wrie16_date(0x00,0x00);
wrie16_com(0x003a); /* color mode Interface pixel format (COLMOD */
wrie16_date(0x00,0x55);
wrie16_com(0x0036); /* memory data access control (MADCTR) */
wrie16_date(0x00,0x80); /* MY=0; MX=0; MV=0; ML=0; RGB=0 mh=0*/
wrie16_com(0x0029);
}
/************************************************************/
main()
{
CS=0;
RESET=1;
delay(100);
RESET=0;
delay(500);
RESET=1;
delay(500);
wrie16_com(0x0001);
// wrie16_date(0x0000); //software RESET
delay(500);
/*wrie16_com(0x0010); //sleep in
wrie16_date(0x0000);
delay(100);*/
wrie16_com(0x0011);
// wrie16_date(0x0000); //sleepout
delay(500);
while(1)
{
main_init();
delay(5);
red();
delay(1);
blue();
delay(11);
green();
delay(1);
black();
delay(1);
white ();
delay(1);
// clour();
// delay(1);
// grayscale();
// delay(1);
// picture();
// delay(10);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -