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

📄 176220t-022-y7q(ver.0).c

📁 ILI9220驅動程序,請大家參考,液晶顯示器應用
💻 C
字号:
//***************************************************************
//tpye:176*220
//IC:ILI9220
#include <reg51.h>
#include  <pic.h>
#include  <pic2.h>

sfr16 DPTR=0x82;
sbit rs=P3^2;
sbit wr=P3^3;
sbit rd=P3^4;
sbit csm=P3^1;
sbit res=P3^0;
sbit AUTOB = P3^6;   //H outo
sbit STEPB = P3^7;   //L active

//*****************************************************************

void wrcommand(unsigned int  com);

void wrdata(unsigned int  dat);

void WRCOM_DAT(unsigned int  com,dat);

void LCD_Initial_9220(void);

void DelayX1ms(int c);

void wr_Pic(unsigned char *P);

void setaddress(unsigned int xyaddress);

void wr_H(unsigned int dat1);

void wr_V(unsigned int dat1);

void wr_Snow(unsigned int dat1);


void wr_GRAY(void) ;

void wr_Seven(void) ;

void  Blue(void);

void  Red(void);

void  Green(void)  ;

void number(unsigned char *P);

void  Scan(void);

void  white(void);

void  black(void);

//***************************************************************

void main()

{
	
    res = 0;

	DelayX1ms(5);

	res = 1;

    DelayX1ms(5);


    LCD_Initial_9220();

	while(1)
	{

	  
   wr_Pic(& pic[0]);
	DelayX1ms(100);
	Scan();
  



     Blue();
    DelayX1ms(100);
     Scan();


       Red();
    DelayX1ms(100);
    Scan();

	  Green() ;
    DelayX1ms(100);
     Scan();

	  white() ;
    DelayX1ms(100);
     Scan();

	  black() ;
    DelayX1ms(100);
     Scan();

   wr_H(0xffff);
     DelayX1ms(100);
     Scan();

      wr_V(0xffff);
	  DelayX1ms(100);
      Scan();


	   wr_Snow(0xffff);
       DelayX1ms(100);
       Scan();


	  wr_Seven();
     DelayX1ms(100);
	 Scan();

      wr_GRAY() ;
    DelayX1ms(100);
      Scan();
	 
   number(& pic2[0]);
   DelayX1ms(100);
      Scan();
	  

	}

}



void LCD_Initial_9220(void)
{
WRCOM_DAT(0x0001,0x001B);
WRCOM_DAT(0x0002,0x0700);
WRCOM_DAT(0x0003,0x1030);
WRCOM_DAT(0x0004,0x0000);     
WRCOM_DAT(0x0005,0x0000);
WRCOM_DAT(0x0007,0x0004);      
WRCOM_DAT(0x0008,0x0202);
WRCOM_DAT(0x0009,0x0000);
WRCOM_DAT(0x000B,0x0004);  
WRCOM_DAT(0x000C,0x0003);
WRCOM_DAT(0x000B,0x0004);
WRCOM_DAT(0x0021,0x0000);
WRCOM_DAT(0x0040,0x0000);
WRCOM_DAT(0x0041,0x00EF);
WRCOM_DAT(0x0042,0xDB00);
WRCOM_DAT(0x0043,0xDB00);
WRCOM_DAT(0x0044,0xAF00);
WRCOM_DAT(0x0045,0xDB00);
DelayX1ms(10);

//################# void Gamma_Set(void) ####################//
WRCOM_DAT(0x0030,0x0000);  
WRCOM_DAT(0x0031,0x0704);  
WRCOM_DAT(0x0032,0x0004);  
WRCOM_DAT(0x0033,0x0604);  
WRCOM_DAT(0x0034,0x0307);  
WRCOM_DAT(0x0035,0x0103);  
WRCOM_DAT(0x0036,0x0707);  
WRCOM_DAT(0x0037,0x0603);  
WRCOM_DAT(0x0038,0x0000);  
WRCOM_DAT(0x0039,0x0000);
//############# void Power_Set(void) ################//
WRCOM_DAT(0x0010,0x0000);
WRCOM_DAT(0x0011,0x0000);
WRCOM_DAT(0x0013,0x1413);
WRCOM_DAT(0x0012,0x0008);
DelayX1ms(10);
WRCOM_DAT(0x0012,0x0018);
DelayX1ms(10);
WRCOM_DAT(0x0010,0x0140);
DelayX1ms(20);
WRCOM_DAT(0x0013,0x3414);
DelayX1ms(10);

WRCOM_DAT(0x0010,0x2140);

//################## void Display_ON(void) ####################//
WRCOM_DAT(0x0010,0x4040);
WRCOM_DAT(0x0007,0x0005);
DelayX1ms(4);
WRCOM_DAT(0x0007,0x0025);
WRCOM_DAT(0x0007,0x0027);
DelayX1ms(4);
WRCOM_DAT(0x0007,0x0037);
DelayX1ms(1);





}



void WRCOM_DAT(unsigned int  com,dat)

{


wrcommand(com);

wrdata(dat);

}



void wrcommand(unsigned int  com)
{
	csm=0;
	rs=0;
	DPTR = com;

  	P1=DPH;
	wr=0;
	wr=1;  


    P1=DPL;
    wr=0;
	wr=1;

	csm=1;
}

void wrdata(unsigned int  dat)
{


	csm=0;
	
	rs=1;
	DPTR=dat;
  
	P1=DPH;
	wr=0;
	wr=1;  


    P1=DPL;
    wr=0;
	wr=1;

	csm=1;
}


void DelayX1ms( int c)
{
   int x,y;
  for(x=0;x<c;x++)
  for(y=0;y<1000;y++);

}


void setaddress(unsigned int xyaddress)

{
	wrcommand(0x0021);
	wrdata(xyaddress);
	wrcommand(0x0022);
}


void wr_Snow(unsigned int dat1)

{
	unsigned char i,j;
    unsigned int dat11;
    dat11=dat1;
	setaddress(0x0000);
	for(i=0;i<220;i++)
	{
		for(j=0;j<88;j++)
		{
			wrdata(dat11);
            wrdata(~dat11);
		 }
      dat11=~dat11; 

	 }
}

void wr_H(unsigned int dat1)     ///捷兵

{
	unsigned char i,j;
    unsigned int dat11;
    dat11=dat1;
	setaddress(0x0000);
	for(i=0;i<220;i++)
	{
		for(j=0;j<88;j++)
		{
			wrdata(dat11);
            wrdata(~dat11);
		 }


	 }
}


void wr_V(unsigned int dat1)     //绢兵

{
	unsigned char i,j;
    unsigned int dat11;
    dat11=dat1;
	setaddress(0x0000);
	for(i=0;i<220;i++)
	{
		for(j=0;j<176;j++)
		{
			wrdata(dat11);

		 }
      dat11=~dat11; 
       
	 }
}


void wr_GRAY(void)     //  η顶

{
	unsigned char i,j,c;
    unsigned int dat11;
    unsigned char Rc,Gc,Bc;
   Rc=0;
   Gc=0;
   Bc=0;
   dat11=0x0000;
	setaddress(0x0000);
	for(i=0;i<110;i++)
	{
		for(j=0;j<88;j++)
		{
			wrdata(0x0000);

		 }

      for(j=88;j<176;j++)
		{
			wrdata(0xffff);

		 }


      	 }

      	for(i=110;i<220;i++)
	{
		for(c=0;c<16;c++)

		{     
		     
		   
            for(j=0;j<11;j++)
			{
             
              

			 wrdata(dat11);

            }

              Rc=Rc+2;
			  Gc=Gc+4;
			  Bc=Bc+2;
              dat11=(Rc<<11)+(Gc<<5)+Bc;
           
		 }

      Rc=0,Gc=0,Bc=0;


      	 }
}

void wr_Seven(void)     //  

{
	unsigned char i,j;
    


	setaddress(0x0000);
	for(i=0;i<220;i++)
	{
		for(j=0;j<22;j++)
		{
			wrdata(0xf800);

		 }
       for(j=22;j<44;j++)
		{
			wrdata(0x07e0);

		 }

      
		 for(j=44;j<66;j++)
		{
			wrdata(0x001f);

		 }

		 for(j=66;j<88;j++)
		{
			wrdata(0xffff);

		 }

		 for(j=88;j<110;j++)
		{
			wrdata(0x0000);

		 }

		 for(j=110;j<132;j++)
		{
			wrdata(0xf81f);

		 }

		 for(j=132;j<154;j++)
		{
			wrdata(0x07ff);

		 }

		 for(j=154;j<176;j++)
		{
			wrdata(0xffe0);

		 }

      }




}





void wr_Pic(unsigned char *P)

{
	unsigned char i,j,*D;
    unsigned short dat1;
	D=P;

	setaddress(0x0000);
	for(i=0;i<110;i++)
	{
		for(j=0;j<176;j++)
		{   
		    dat1=256*(*D)+*(D+1);

			wrdata(dat1);

		    D=D+2;
		 }
	  }
     D=P;
	  for(i=0;i<110;i++)
	{
		for(j=0;j<176;j++)
		{   
		    dat1=256*(*D)+*(D+1);

			wrdata(dat1);

		    D=D+2;
		 }
	  }

}

   void  Blue(void)      //   Blue G

   {
    unsigned char i,j;

	

	setaddress(0x0000);

	 for(j=0;j<176;j++)
     {
	  wrdata(0x07e0);
	 }
	
	for(i=1;i<219;i++)

  {
   wrdata(0x07e0);
	
    for(j=1;j<175;j++)
     {
	  wrdata(0x001f);
	 }

	wrdata(0x07e0);  
   }

    for(j=0;j<176;j++)
     {
	  wrdata(0x07e0);
	 }
}

   void  Black(void)      //   Blue G

   {
    unsigned char i,j;

	

	setaddress(0x0000);

	 for(j=0;j<176;j++)
     {
	  wrdata(0x0000);
	 }
	
	for(i=1;i<219;i++)

  {
   wrdata(0x0000);
	
    for(j=1;j<175;j++)
     {
	  wrdata(0xffff);
	 }

	wrdata(0x0000);  
   }

    for(j=0;j<176;j++)
     {
	  wrdata(0x0000);
	 }
}

   void  white(void)      //   Blue G

   {
    unsigned char i,j;

	

	setaddress(0x0000);

	 for(j=0;j<176;j++)
     {
	  wrdata(0xffff);
	 }
	
	for(i=1;i<219;i++)

  {
   wrdata(0xffff);
	
    for(j=1;j<175;j++)
     {
	  wrdata(0x0000);
	 }

	wrdata(0xffff);  
   }

    for(j=0;j<176;j++)
     {
	  wrdata(0xffff);
	 }
}


void  Green(void)      //    Green R

   {
    unsigned char i,j;

	

	setaddress(0x0000);

	 for(j=0;j<176;j++)
     {
	  wrdata(0xf800);
	 }
	
	for(i=1;i<219;i++)

  {
   wrdata(0xf800);
	
    for(j=1;j<175;j++)
     {
	  wrdata(0x07e0);
	 }

	wrdata(0xf800);  
   }

    for(j=0;j<176;j++)
     {
	  wrdata(0xf800);
	 }
}


void  Red(void)      //    Red B

   {
    unsigned char i,j;
  
	

	setaddress(0x0000);

	 for(j=0;j<176;j++)
     {
	  wrdata(0x001f);
	 }
	
	for(i=1;i<219;i++)

  {
   wrdata(0x001f);
	
    for(j=1;j<175;j++)
     {
	  wrdata(0xf800);
	 }

	wrdata(0x001f);  
   }

    for(j=0;j<176;j++)
     {
	  wrdata(0x001f);
	 }
}

    

  void number(unsigned char *P)

  {
   
   unsigned int j1,dat1; 
   unsigned char i,j,c;

    unsigned    char    iStart,jStart,iEnd,jEnd,*D;



	setaddress(0x0000);

     for(i=0;i<220;i++)

	 for(j=0;j<176;j++)
     {
	  wrdata(0xffff); 
     }


     jStart=0,jEnd=31;
     c=5;
	 for(j=0;j<6;j++)
	 {

     iStart=0;
     iEnd=31;
     
     for(i=0;i<c;i++)
    {
	 
     WRCOM_DAT(0x0044,(iEnd<<8)+iStart);
     WRCOM_DAT(0x0045,(jEnd<<8)+jStart);
	 setaddress((jStart<<8)+ iStart );
     D=P;
	 for(j1=0;j1<32*32;j1++)
     { 
	       dat1=256*(*D)+*(D+1);

			wrdata(dat1);

		    D=D+2;

	  }

     iStart=iStart+32;
     iEnd=iEnd+32;
	 }

    jStart=jStart+32;
	jEnd=jEnd+32;
	c--;
   }  
WRCOM_DAT(0x0044,0xAF00);
WRCOM_DAT(0x0045,0xDB00);
  }


  void  Scan(void)
{    

     

     while(AUTOB == 1)
	 {  
            
	      if(STEPB == 0)
		  {   goto  aas;
		  }
		  else
		  {   if(AUTOB == 0)
		          goto  aas;
		  }

     }
	  
aas: ;
}






⌨️ 快捷键说明

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