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

📄 2.0tft demomain 1.c

📁 LCD模块驱动 SHARP2.0“TFT模块驱动程序
💻 C
📖 第 1 页 / 共 5 页
字号:
	Chip_select_LCD();
	SPI_Command();
	SPI_Send_Data(0x15);   SPI_Send_Data(0x83);  //x end
	SPI_Command();
	SPI_Send_Data(0x12);   SPI_Send_Data(0x00);   //x start 
	SPI_Command();
	SPI_Send_Data(0x16);   SPI_Send_Data(0xb1);   //y end
	SPI_Command();
	SPI_Send_Data(0x13);   SPI_Send_Data(0x00);   //y start
	SPI_Command();
	SPI_Send_Data(0x18);   SPI_Send_Data(0x00);   //address auto increment

    for(i=0;((i+1)*3*width)<=total_addr;i++)
 	{  	image_data_addr=image_data_addr-(width*3);
 		SPI_Command();
	    SPI_Send_Data(0x9B); SPI_Send_Data(highth-i-2);
		for(j=0;j<width;j++)
 		{   image_data_addr=image_data_addr+3;
			Chip_select_flash();
			r = (*(image_data_addr-1));
			g = (*(image_data_addr-2));
			b = (*(image_data_addr-3));
			Chip_select_LCD();
		SPI_Disp();
			SPI_Send_Data(((r)&(0xf8))+((g>>5)&(0x07)));   		
 	        SPI_Send_Data(((g<<3)&(0xe0))+((b>>3)&(0x1f)));
		}
        image_data_addr=image_data_addr-(width*3);
     }


      image_data_addr=image_data_addr-(width*3);
      Auxdata_write(BLOCK_ADDR_MASK,block_addr&block_mask);
	  Chip_select_flash();
      for (i++;i<highth;i++)
       {  image_data_addr=image_data_addr-(width*3);	
	      SPI_Command();
	      SPI_Send_Data(0x9B); SPI_Send_Data(highth-i-2);
	      for(j=0;j<width;j++)
          {  image_data_addr=image_data_addr+3;
	         Chip_select_flash();
	         r = (*(image_data_addr-1));
	         g = (*(image_data_addr-2));
	         b = (*(image_data_addr-3));
	         Chip_select_LCD();
	         SPI_Disp();
			 SPI_Send_Data(((r)&(0xf8))+((g>>5)&(0x07)));   		
 	         SPI_Send_Data(((g<<3)&(0xe0))+((b>>3)&(0x1f)));
          }
          image_data_addr=image_data_addr-(width*3);
	    }
          SPI_Command();
	      SPI_Send_Data(0x9B);SPI_Send_Data(0x00);
end:    ;
}
//========================================================

void Display_scrolldown(unsigned char block_addr)
{  	unsigned char xdata *image_data_addr;
	unsigned char xdata *data_addr;
	unsigned int data_offset;
	unsigned int width;
	unsigned int highth;
	unsigned int total_addr;
	unsigned char r;
	unsigned char g;
	unsigned char b;
	unsigned char block_addr_1;
    unsigned int i;
	unsigned int j;
	unsigned int m;
	unsigned int n;
	unsigned int k;
	

    block_addr=block_addr<<1; 
	block_addr_1=block_addr+1;  
	image_data_addr=FLASH_START;
	Auxdata_write(BLOCK_ADDR_MASK,block_addr&block_mask);
	Chip_select_flash();
	r=*image_data_addr;
	if(r==0x0FF) 	
	{ Empty=true;
	  goto end;
	}
	else Empty=false;
	data_offset=*(image_data_addr+10);               //data offset
	width=*(image_data_addr+18);                    //image width
	highth=*(image_data_addr+22);                    //image highth
	image_data_addr=image_data_addr+data_offset;
	
	Chip_select_LCD();
	SPI_Command();
	SPI_Send_Data(0x15);   SPI_Send_Data(0x83);  //x end
	SPI_Command();
	SPI_Send_Data(0x12);   SPI_Send_Data(0x00);   //x start 
	SPI_Command();
	SPI_Send_Data(0x16);   SPI_Send_Data(0xb1);   //y end
	SPI_Command();
	SPI_Send_Data(0x13);   SPI_Send_Data(0x00);   //y start
	SPI_Command();
	SPI_Send_Data(0x18);   SPI_Send_Data(0x00);   //address auto increment

    SPI_Command();
	SPI_Send_Data(0x14);SPI_Send_Data(0XAF);
	SPI_Command();
	SPI_Send_Data(0x17);SPI_Send_Data(0x00);
    for(i=0;((i+10)*width*3)<=(0x10000-data_offset);i++)
//	for(i=0;(i+1)<=((0x10000-data_offset)/(3*width));i++)
 	    {   SPI_Command();
	        SPI_Send_Data(0x9B);SPI_Send_Data(i+1); 	 //Picture scroll line
		    for(j=0;j<width;j++)
 		 	{	image_data_addr=image_data_addr+3;
			Chip_select_flash();
			r = (*(image_data_addr-1));
			g = (*(image_data_addr-2));
			b = (*(image_data_addr-3));
			Chip_select_LCD();
			SPI_Disp();
			 SPI_Send_Data(((r)&(0xf8))+((g>>5)&(0x07)));   		
 	         SPI_Send_Data(((g<<3)&(0xe0))+((b>>3)&(0x1f)));
 			}
        	SPI_Command();
          	SPI_Send_Data(0x17);SPI_Send_Data(i+1);
        }
        
     
     
    
   
       SPI_Command();
       SPI_Send_Data(0x17);SPI_Send_Data(i+1);
     //image_data_addr=(i+1)*(3*width)+data_offset;
       Auxdata_write(BLOCK_ADDR_MASK,block_addr_1&block_mask);
       Chip_select_flash();
       for (i++;i<highth;i++)
       {  SPI_Command();
          SPI_Send_Data(0x9B);SPI_Send_Data(i+1);		 //Picture scroll line
	      for(j=0;j<width;j++)
 		{	image_data_addr=image_data_addr+3;
			Chip_select_flash();
			r = (*(image_data_addr-1));
			g = (*(image_data_addr-2));
			b = (*(image_data_addr-3));
			Chip_select_LCD();
			SPI_Disp();
			 SPI_Send_Data(((r)&(0xf8))+((g>>5)&(0x07)));   		
 	         SPI_Send_Data(((g<<3)&(0xe0))+((b>>3)&(0x1f)));

 		}
		
		SPI_Command();
        SPI_Send_Data(0x17);SPI_Send_Data(i+1);
        	
        }    

		
	    SPI_Command();
        SPI_Send_Data(0x9B);SPI_Send_Data(0x00);
end:    ;

}
//========================================================
void Display_x_shut(unsigned char block_addr)
{  	unsigned char xdata *image_data_addr;
	unsigned char xdata *data_addr;
	unsigned int data_offset;
	unsigned int total_addr;
	unsigned int width;
	unsigned int highth;
	unsigned int k;
	unsigned char block_addr_1;
	unsigned char r;
	unsigned char g;
	unsigned char b;
    unsigned char m;
	unsigned int i;
	unsigned int j;
	unsigned int n;
    block_addr=block_addr<<1; 
	block_addr_1=block_addr+1;  
	image_data_addr=FLASH_START;
	Auxdata_write(BLOCK_ADDR_MASK,block_addr&block_mask);
	Chip_select_flash();
	r=*image_data_addr;
	if(r==0x0FF) 
	{ Empty=true;
	  goto end;
	}
	else Empty=false;
	data_offset=*(image_data_addr+10);               //data offset
	width=*(image_data_addr+18);                    //image width
	highth=*(image_data_addr+22);                    //image highth
	image_data_addr=image_data_addr+data_offset;
	image_data_addr=image_data_addr+((highth-1)*width*3);
	total_addr=image_data_addr;
    Auxdata_write(BLOCK_ADDR_MASK,block_addr_1&block_mask);
	Chip_select_flash();
	Chip_select_LCD();
	SPI_Command();
	SPI_Send_Data(0x15);   SPI_Send_Data(0x83);  //x end
	SPI_Command();
	SPI_Send_Data(0x12);   SPI_Send_Data(0x00);   //x start 
	SPI_Command();
	SPI_Send_Data(0x16);   SPI_Send_Data(0xb1);   //y end
	SPI_Command();
	SPI_Send_Data(0x13);   SPI_Send_Data(0x00);   //y start
	SPI_Command();
	SPI_Send_Data(0x18);   SPI_Send_Data(0x00);   //address auto increment

	for(i=0;i<22;i++)
 	{  
		for(j=0;(22*j+i)<=(total_addr/(3*width));j++)
 		{  SPI_Command();
	       SPI_Send_Data(0x14);   SPI_Send_Data(0xAF);
		   SPI_Command();
	       SPI_Send_Data(0x17);   SPI_Send_Data(219-(22*j+i));
		   for(k=0;k<width;k++)
		      { image_data_addr=image_data_addr+3;
		    	Chip_select_flash();
			    r = (*(image_data_addr-1));
			    g = (*(image_data_addr-2));
		     	b = (*(image_data_addr-3));
		     	Chip_select_LCD();
		    	SPI_Disp();
			 SPI_Send_Data(((r)&(0xf8))+((g>>5)&(0x07)));   		
 	         SPI_Send_Data(((g<<3)&(0xe0))+((b>>3)&(0x1f)));
  		        }
		   image_data_addr=image_data_addr-23*(width*3);
         }
                 
		 image_data_addr=image_data_addr-23*(width*3);
		 data_addr=image_data_addr;
         Auxdata_write(BLOCK_ADDR_MASK,block_addr&block_mask);//add
         Chip_select_flash();
	     Chip_select_LCD();
		 SPI_Command();
	       SPI_Send_Data(0x14);   SPI_Send_Data(0xAF);
		   SPI_Command();
	       SPI_Send_Data(0x17);   SPI_Send_Data(219-(22*j+i));
   		 if(data_addr<=(0x10000-(3*width)))
		    { 
		      for(k=0;k<width;k++)
		      { image_data_addr=image_data_addr+3;
		    	Chip_select_flash();
			    r = (*(image_data_addr-1));
		     	g = (*(image_data_addr-2));
			    b = (*(image_data_addr-3));
		    	Chip_select_LCD();
		     		SPI_Disp();
			 SPI_Send_Data(((r)&(0xf8))+((g>>5)&(0x07)));   		
 	         SPI_Send_Data(((g<<3)&(0xe0))+((b>>3)&(0x1f)));
  		      }
		    }
	  	else
 		    {for(m=1;data_addr<=(0x10000-(3*m));m++)
	            {  //image_data_addr=image_data_addr+3;
	             image_data_addr=data_addr+3*m;
	             Chip_select_flash();
	             r = (*(image_data_addr-1));
	  			 g = (*(image_data_addr-2));
	             b = (*(image_data_addr-3));
	  			 Chip_select_LCD();
	  				SPI_Disp();
			 SPI_Send_Data(((r)&(0xf8))+((g>>5)&(0x07)));   		
 	         SPI_Send_Data(((g<<3)&(0xe0))+((b>>3)&(0x1f)));
    	    	}
		
            }
      image_data_addr=image_data_addr-23*(width*3);
	   Auxdata_write(BLOCK_ADDR_MASK,block_addr&block_mask);
	   Chip_select_flash();
	   for(j++;j<(highth/22);j++)
 	   {   SPI_Command();
	       SPI_Send_Data(0x14);   SPI_Send_Data(0xAF);
		   SPI_Command();
	       SPI_Send_Data(0x17);   SPI_Send_Data(219-(22*j+i));
	      for(k=0;k<width;k++)
		     { image_data_addr=image_data_addr+3;
			 	Chip_select_flash();
			 	r = (*(image_data_addr-1));
			 	g = (*(image_data_addr-2));
			 	b = (*(image_data_addr-3));
			 	Chip_select_LCD();
			 	SPI_Disp();
			 SPI_Send_Data(((r)&(0xf8))+((g>>5)&(0x07)));   		
 	         SPI_Send_Data(((g<<3)&(0xe0))+((b>>3)&(0x1f)));
		     }
		   	image_data_addr=image_data_addr-23*(width*3);
       	}
        }
end:    ;
}
//========================================================


void Display_logo()
{

	int i;
	unsigned char l;
	unsigned char x;
	unsigned char y;
	Chip_select_LCD();
	for(i=8;i<512;i=2*i)
	{       
	SPI_Command();
	SPI_Send_Data(0xee);   SPI_Send_Data(0x00);
	SPI_Command();
	SPI_Send_Data(0x12);   SPI_Send_Data(0x12);
	SPI_Command();
	SPI_Send_Data(0x13);   SPI_Send_Data(0x50);
	SPI_Command();
	SPI_Send_Data(0x15);   SPI_Send_Data(0x71);
	SPI_Command();
	SPI_Send_Data(0x16);   SPI_Send_Data(0x5f);
	SPI_Command();
	SPI_Send_Data(0x18);   SPI_Send_Data(0x00);

	 for(y=0;y<16;y++)
	 	{
			for(x=0;x<12;x++)
			{
				for(l=0x80;l>=1;l=l>>1)
				{				
					if((Logo9616[(15-y)*12+x]&l)!=0)
					{
					SPI_Disp();
					SPI_Send_Data(0x00); 
                    SPI_Send_Data(0x1f); //SPI_Send_Data(0xf8);
					}
					else
					{
						SPI_Disp();
				SPI_Send_Data(i-1);  //SPI_Send_Data(0x00);
  				    SPI_Send_Data(i-1);
                  
                   				
                 }
				}
			}
		}
	   	Delayms(100);
	}
	Delayms(200);

}

void Display_R()
{
	unsigned char i;
	unsigned char j;
	
    Chip_select_LCD();
    SPI_Command();
	SPI_Send_Data(0xee);   SPI_Send_Data(0x00);
	SPI_Command();
	SPI_Send_Data(0x15);   SPI_Send_Data(0x83);
	SPI_Command();
	SPI_Send_Data(0x12);   SPI_Send_Data(0x00);
	SPI_Command();
	SPI_Send_Data(0x16);   SPI_Send_Data(0xaf);
	SPI_Command();
	SPI_Send_Data(0x13);   SPI_Send_Data(0x00);
	SPI_Command();
	SPI_Send_Data(0x18);   SPI_Send_Data(0x00);
	SPI_Command();
	SPI_Send_Data(0x14);   SPI_Send_Data(0x00);
	SPI_Command();
	SPI_Send_Data(0x17);   SPI_Send_Data(0x00);

	for(i=0;i<178;i++)
	{
 	for(j=0;j<131;j++)
	   		{
			SPI_Disp();
			SPI_Send_Data(0xf8);   
	        SPI_Send_Data(0x00);
			
			}
	}
}

void Display_G()
{
	unsigned char i;
	unsigned char j;
	
    Chip_select_LCD();
    SPI_Command();
	SPI_Send_Data(0xee);   SPI_Send_Data(0x00);
	SPI_Command();
	SPI_Send_Data(0x15);   SPI_Send_Data(0x83);  //x end
	SPI_Command();
	SPI_Send_Data(0x12);   SPI_Send_Data(0x00);   //x start 
	SPI_Command();
	SPI_Send_Data(0x16);   SPI_Send_Data(0xaf);   //y end
	SPI_Command();
	SPI_Send_Data(0x13);   SPI_Send_Data(0x00);   //y start
	SPI_Command();
	SPI_Send_Data(0x18);   SPI_Send_Data(0x00);   //address auto increment
	SPI_Command();
	SPI_Send_Data(0x14);   SPI_Send_Data(0x00);  //x direction 
	SPI_Command();
	SPI_Send_Data(0x17);   SPI_Send_Data(0x00);   //  y direction
  


	for(i=0;i<178;i++)
	{
 	for(j=0;j<131;j++)
	   		{
			SPI_Disp();
			SPI_Send_Data(0x07);   
		    SPI_Send_Data(0xe0);
			}
	}
}


void Display_B()
{
	unsigned char i;
	unsigned char j;
	Chip_select_LCD();
    SPI_Command();
	SPI_Send_Data(0xee);   SPI_Send_Data(0x00);
	SPI_Command();

⌨️ 快捷键说明

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