📄 2.0tft demomain 1.c
字号:
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 + -