⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 st7787.c

📁 MCU驱动ST7787IC操作TFT屏显示程序.编译器为Keil3
💻 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 + -