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

📄 9325.c

📁 LCD双屏 主屏:ILI9325 副屏:SSD1303
💻 C
字号:
/*********************************************************/
/* SPECFICATION       : TFT2.4 DEMO PROGRAM              */
/* MASTER DOT MATRIXS : 320RGB*240                       */
/* MASTER DRIVER IC   : 9320                          */
/* DESIGN             : tyt                           */
/* DATA TYPE          : 16 BITS (MATER&SLAVER)           */
/* DATA               : 2007-12-20                       */
/* REV                : 0.0                              */
/*********************************************************/

#include "reg52.h"
#include "intrins.h"
#include "absacc.h"

#define  DataL	   P0
#define  DataH     P2
#define  Contr     P3
#define  memic_id  P1

sbit key1=P1^5;
sbit key2=P1^6;
sbit key3=P1^7;

sbit Rs=P3^0;
sbit Wr=P3^1;
sbit Rd=P3^2;
sbit Reset=P3^4;
sbit Csm=P3^3;
sbit sc=P3^6;
//sbit RGB_DB0=P3^5;
sbit Css=P3^5;

sbit ce1=P1^3;
sbit ce2=P1^4;

char code DX516[3] _at_ 0x3b;


//int rd_data2,rd_data1;





void window_ST7637();



unsigned char key_flag2=0;
unsigned char key_flag3=0;



void Delay(int i)
{
 int j,k;
 for(k=0;k<i;k++)
 for(j=0;j<200;j++)
 {
 _nop_();
 _nop_();
 _nop_();
 }
}

void sublcd_send_command(char compr2,char compr1)
{

    Rs=0x00;
		  Csm=0;
      Rd=0x01; 
	//  Wr=0x00;
      Wr=0x01;


  DataL=compr1;
      _nop_();
  Wr=0x00;

  _nop_();
  Wr=0x01;
}



void sublcd_send_init_data(char Datapr2,char Datapr1)
{
  Rs=0x01;
  Css=0;
  //Reset=1;
  Rd=0x01;
  Wr=0x01;

  _nop_();
  DataL=Datapr1;
  _nop_();
  Wr=0x00;
 // Csm=1;
  _nop_();
  Wr=0x01;
}









void sub_1303_initial()
{

 Delay(25);
sublcd_send_command(0x00,0xD5); // Set Clock Divide 
sublcd_send_command(0x00,0xd0); 
sublcd_send_command(0x00,0xD3); // Set  
sublcd_send_command(0x00,0x00);
//mainlcd_send_command(0x00,0xD8); // Set  
//edmainlcd_send_command(0x00,0x05);
sublcd_send_command(0x00,0xAF);
sublcd_send_command(0x00,0x00); // Set Lower Column Address 
sublcd_send_command(0x00,0x10); // Set Higher Column Address 
sublcd_send_command(0x00,0x40); // Set Display Start Line 
sublcd_send_command(0x00,0x81); // Set Contrast Control 
sublcd_send_command(0x00,0x80); // 0 ~ 127 
sublcd_send_command(0x00,0xA0); // [A0]:column address 1 is 
sublcd_send_command(0x00,0xC8); // oben / unten 
sublcd_send_command(0x00,0xA4); // Display on 
sublcd_send_command(0x00,0xA6); // Normal Display
sublcd_send_command(0x00,0xA8); // Set Multiplex Ratio 
sublcd_send_command(0x00,0x3f); 
sublcd_send_command(0x00,0xAD); // Set DC-DC 
sublcd_send_command(0x00,0x8A); // 8B=ON, 8A=Off 
sublcd_send_command(0x00,0xAF); // AF=ON , AE=OFF
sublcd_send_command(0x00,0xD3); // Set Display Offset
sublcd_send_command(0x00,0x00); // No offset 

sublcd_send_command(0x00,0xD8); // Set Area Color On or Off 
sublcd_send_command(0x00,0x00); // Mono Mode 
sublcd_send_command(0x00,0xDA); // Set Pins Hardware 
sublcd_send_command(0x00,0x12); 
sublcd_send_command(0x00,0xDB); // Set VCOMH 
sublcd_send_command(0x00,0x00); 
sublcd_send_command(0x00,0xD9); // Set VP 
sublcd_send_command(0x00,0x22); 
// mainlcd_send_command(0x00,0xff);


}





void mainlcd_send_command(char compr2,char compr1)
{
	 Rs=0x00;
	 Rd=0x01;
//	 RGB_DB0=0x00;
	 DataL=compr1;
	 DataH=compr2;
//	 Csm=0x00;
	 Wr=0x00;
	 Wr=0x01;
//	 Csm=0x01;
}

void mainlcd_send_data(char Datapr2,char Datapr1)
{
	 Rs=0x01;
	 Rd=0x01;
	 DataL=Datapr1;
//	 RGB_DB0=0x00;	 
	 DataH=Datapr2;
	 Wr=0x00;
	 Wr=0x01;
//	 Csm=0x01;
}




void R61505U_address(char hsa,char hea,char vsah,char vsal,char veah,char veal,char ad8h,char ad9h,char ad9l)
{
	mainlcd_send_command(0x00,0x50);  mainlcd_send_data(0x00,hsa);//初始化已包含
	mainlcd_send_command(0x00,0x51);  mainlcd_send_data(0x00,hea);
	mainlcd_send_command(0x00,0x52);  mainlcd_send_data(vsah,vsal);
	mainlcd_send_command(0x00,0x53);  mainlcd_send_data(veah,veal);
	mainlcd_send_command(0x00,0x20);  mainlcd_send_data(0x00,ad8h);
	mainlcd_send_command(0x00,0x21);  mainlcd_send_data(ad9h,ad9l);
	mainlcd_send_command(0x00,0x22);
}

void ScrMainFullColor(unsigned char color1,unsigned char color2)
{
  int i,j;
//  Csm=0x00;
 // R61505U_address(0x00,0xef,0x00,0x00,0x01,0x3f,0x00,0x00,0x00);
  for(i=0;i<320;i++)
   {
   	 for(j=0;j<240;j++)
   	  {
   	  	 mainlcd_send_data(color1,color2);
   	  }
   }
}




void key_function1()
{
  unsigned char key_flag1=0;
//  if(!key1) key_flag1=1;

	do
	{
	  if(!key1)  key_flag1=1;
	  Delay(10);
	}
    while(key_flag1==0);
	Delay(30);
	key_flag1=0;
} 


void main_R61505U_initial()
{

  mainlcd_send_command(0x00,0xE3);mainlcd_send_data( 0x30,0x08); // Set internal timing
  mainlcd_send_command(0x00,0xE7);mainlcd_send_data( 0x00,0x12); // Set internal timing
  mainlcd_send_command(0x00,0xEF);mainlcd_send_data( 0x12,0x31); // Set internal timing
  mainlcd_send_command(0x00,0x01);mainlcd_send_data( 0x01,0x00); // set SS and SM bit
  mainlcd_send_command(0x00,0x02);mainlcd_send_data( 0x07,0x00); // set 1 line inversion
  mainlcd_send_command(0x00,0x03);mainlcd_send_data( 0x10,0x30); // set GRAM write direction and BGR=1.
  mainlcd_send_command(0x00,0x04);mainlcd_send_data( 0x00,0x00); // Resize register
  mainlcd_send_command(0x00,0x08);mainlcd_send_data( 0x02,0x07); // set the back porch and front porch
  mainlcd_send_command(0x00,0x09);mainlcd_send_data( 0x00,0x00); // set non-display area refresh cycle ISC[3:0]
  mainlcd_send_command(0x00,0x0A);mainlcd_send_data( 0x00,0x00); // FMARK function
  mainlcd_send_command(0x00,0x0C);mainlcd_send_data( 0x00,0x00); // RGB interface setting
  mainlcd_send_command(0x00,0x0D);mainlcd_send_data( 0x00,0x00); // Frame marker Position
  mainlcd_send_command(0x00,0x0F);mainlcd_send_data( 0x00,0x00); // RGB interface polarity
  //*************Power On sequence ****************//
  mainlcd_send_command(0x00,0x10);mainlcd_send_data( 0x00,0x00); // SAP, BT[3:0], AP, DSTB, SLP, STB
  mainlcd_send_command(0x00,0x11);mainlcd_send_data( 0x00,0x07); // DC1[2:0], DC0[2:0], VC[2:0]
  mainlcd_send_command(0x00,0x12);mainlcd_send_data( 0x00,0x00); // VREG1OUT voltage
  mainlcd_send_command(0x00,0x13);mainlcd_send_data( 0x00,0x00); // VDV[4:0] for VCOM amplitude
    Delay(200);                        // Dis-charge capacitor power voltage
  mainlcd_send_command(0x00,0x10);mainlcd_send_data( 0x12,0x90); // SAP, BT[3:0], AP, DSTB, SLP, STB
  mainlcd_send_command(0x00,0x11);mainlcd_send_data( 0x00,0x01); // R11h=0x0221 at VCI=3.3V, DC1[2:0], DC0[2:0], VC[2:0]
    Delay(50);                         // Delay 50ms
  mainlcd_send_command(0x00,0x12);mainlcd_send_data( 0x00,0x94); // External reference voltage= Vci;
    Delay(50);                         // Delay 50ms
  mainlcd_send_command(0x00,0x13);mainlcd_send_data( 0x1a,0x00); // VDV[4:0] for VCOM amplitude
  mainlcd_send_command(0x00,0x29);mainlcd_send_data( 0x00,0x25); // VCM[5:0] for VCOMH
  mainlcd_send_command(0x00,0x2B);mainlcd_send_data( 0x00,0x0d); // Frame Rate = 51Hz
    Delay(50);                         // Delay 50ms
  mainlcd_send_command(0x00,0x20);mainlcd_send_data( 0x00,0x00); // GRAM horizontal Address
  mainlcd_send_command(0x00,0x21);mainlcd_send_data( 0x00,0x00); // GRAM Vertical Address
  // ----------- Adjust the Gamma Curve ----------//
  mainlcd_send_command(0x00,0x30);mainlcd_send_data( 0x00,0x00);
  mainlcd_send_command(0x00,0x31);mainlcd_send_data( 0x05,0x06);
  mainlcd_send_command(0x00,0x32);mainlcd_send_data( 0x01,0x04);
  mainlcd_send_command(0x00,0x35);mainlcd_send_data( 0x02,0x07);
  mainlcd_send_command(0x00,0x36);mainlcd_send_data( 0x00,0x0f);
  mainlcd_send_command(0x00,0x37);mainlcd_send_data( 0x03,0x06);
  mainlcd_send_command(0x00,0x38);mainlcd_send_data( 0x01,0x02);
  mainlcd_send_command(0x00,0x39);mainlcd_send_data( 0x07,0x07);
  mainlcd_send_command(0x00,0x3C);mainlcd_send_data( 0x07,0x02);
  mainlcd_send_command(0x00,0x3D);mainlcd_send_data( 0x16,0x04);
  //------------------ Set GRAM area ---------------//
  mainlcd_send_command(0x00,0x50);mainlcd_send_data( 0x00,0x00); // Horizontal GRAM Start Address
  mainlcd_send_command(0x00,0x51);mainlcd_send_data( 0x00,0xEF); // Horizontal GRAM End Address
  mainlcd_send_command(0x00,0x52);mainlcd_send_data( 0x00,0x00); // Vertical GRAM Start Address
  mainlcd_send_command(0x00,0x53);mainlcd_send_data( 0x01,0x3F); // Vertical GRAM Start Address
  mainlcd_send_command(0x00,0x60);mainlcd_send_data( 0x27,0x00); // Gate Scan Line
  mainlcd_send_command(0x00,0x61);mainlcd_send_data( 0x00,0x01); // NDL,VLE, REV
  mainlcd_send_command(0x00,0x6A);mainlcd_send_data( 0x00,0x00); // set scrolling line
  //-------------- Partial Display Control ---------//
  mainlcd_send_command(0x00,0x80);mainlcd_send_data( 0x00,0x00);
  mainlcd_send_command(0x00,0x81);mainlcd_send_data( 0x00,0x00);
  mainlcd_send_command(0x00,0x82);mainlcd_send_data( 0x00,0x00);
  mainlcd_send_command(0x00,0x83);mainlcd_send_data( 0x00,0x00);
  mainlcd_send_command(0x00,0x84);mainlcd_send_data( 0x00,0x00);
  mainlcd_send_command(0x00,0x85);mainlcd_send_data( 0x00,0x00);
  //-------------- Panel Control -------------------//
  mainlcd_send_command(0x00,0x90);mainlcd_send_data( 0x00,0x10);
  mainlcd_send_command(0x00,0x92);mainlcd_send_data( 0x06,0x00);
  mainlcd_send_command(0x00,0x93);mainlcd_send_data( 0x00,0x03);
  mainlcd_send_command(0x00,0x95);mainlcd_send_data( 0x01,0x10);
  mainlcd_send_command(0x00,0x97);mainlcd_send_data( 0x00,0x00);
  mainlcd_send_command(0x00,0x98);mainlcd_send_data( 0x00,0x00);
  mainlcd_send_command(0x00,0x07);mainlcd_send_data( 0x01,0x33); // 262K color and display ON

	mainlcd_send_command(0x00,0x22);	


}

void DisplayMainFrame()
{
   int i,j;
//   Csm=0x00;
//   R61505U_address(0x00,0xef,0x00,0x00,0x01,0x3f,0x00,0x00,0x3f);
   mainlcd_send_command(0x00,0x22);
   for(i=0;i<240;i++)
    {
    	 mainlcd_send_data(0xFF,0xFF);
    }
   for(i=0;i<318;i++)
    {
    	 mainlcd_send_data(0xFF,0xFF);
    	 for(j=0;j<238;j++)
    	   {
    	   	 mainlcd_send_data(0x00,0x00);
    	   }
    	 mainlcd_send_data(0xFF,0xFF);
    }
   for(i=0;i<240;i++)
    {
    	 mainlcd_send_data(0xFF,0xFF);
    }
}



main()
{

	DataH=0xff;
	DataL=0xff;
//	Contr=0xff;
	memic_id=0xff;
	sc=0x01;
        Csm=0x00;

 Reset=0x00;
 Delay(25);
 Reset=0x01;
 Delay(25);

 main_R61505U_initial();
 
// read_id();
 //key_function1();

 while(1)
 {
 unsigned int j, i; 
 //men_photo1(); 
//key_function1();
 //men_photo2(); 
//key_function1();
// men_photo3(); 
//key_function1();
 ScrMainFullColor(0xF8,0x00);//红
 key_function1();

 ScrMainFullColor(0x07,0xE0);//绿
 key_function1();

 ScrMainFullColor(0x00,0x1F);//蓝
 key_function1();

ScrMainFullColor(0x00,0x00);//黑
key_function1();

 ScrMainFullColor(0xFF,0xFF);//白
 key_function1();

  DisplayMainFrame();//框
 key_function1();

//men_photo1(); 
//key_function1();

Csm=1;
Delay(10);
Css=0;
Delay(10);
sub_1303_initial();
Delay(50);
for(i=0;i<8;i++) 
{
 sublcd_send_command(0x00,0xB0+i);//设置显示位置—行
 sublcd_send_command(0x00,0x00); //设置显示位置—列低地址 
 sublcd_send_command(0x00,0x10); //设置显示位置—列高地址

for(j=0;j<128;j++) 
 sublcd_send_init_data(0x00,0xFF);//屏幕显示,全亮 
} 
key_function1();
for(i=0;i<8;i++) 
{
 sublcd_send_command(0x00,0xB0+i);//设置显示位置—行 
 sublcd_send_command(0x00,0x00); //设置显示位置—列低地址 
 sublcd_send_command(0x00,0x10); //设置显示位置—列高地?

for(j=0;j<128;j++) 
 sublcd_send_init_data(0x00,0x00);//屏幕显示,全灭 
 }
key_function1();		 			 
 }

}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -