📄 display.c
字号:
{
for(t=0;t<times_x;t++)
{
if(Image_data[VRAM1+addr1]!=0)
{
Image_data[VRAM0+addr0]=color ;
}
addr0++;
}
addr1++;
}
}
}
Trans_window_data_to_LCD(window_start_x,window_start_y,string_size*6*times_x,8*times_y);
}
void Display_char(char charac,unsigned int window_start_x,unsigned int window_start_y,unsigned short int color,char times_x,char times_y)
{
unsigned char j,k,t;
unsigned long int addr1=0,addr0,tem_data;
Display_ascii(charac,0);
addr1=0;
for (j=0;j<8*times_y;j++)
{
addr0=(window_start_y+j)*LCD_x_size+window_start_x;
addr1=6*(j/times_y);
for(k=0;k<6;k++)
{
for(t=0;t<times_x;t++)
{
if(Image_data[VRAM1+addr1]!=0)
{
Image_data[VRAM0+addr0]=color ;
}
addr0++;
}
addr1++;
}
}
Trans_window_data_to_LCD(window_start_x,window_start_y,6*times_x,8*times_y);
}
void Display_bin(unsigned char hex,unsigned int window_start_x,unsigned int window_start_y,unsigned short int color,char times_x,char times_y)
{
hex=hex&0x0F;
if(hex>9) hex=hex-10;
Display_char(hex+0x30, window_start_x,window_start_y,color, times_x, times_y);
}
void Display_hex(unsigned char hex,unsigned int window_start_x,unsigned int window_start_y,unsigned short int color,char times_x,char times_y)
{
hex=hex&0xFF;
if(((hex&0xF0)>>4)<10) Display_char(((hex&0xF0)>>4)+0x30, window_start_x,window_start_y,color, times_x, times_y);
else Display_char(((hex&0xF0)>>4)+0x37, window_start_x,window_start_y,color, times_x, times_y);
if((hex&0x0F)<10) Display_char((hex&0x0F)+0x30, window_start_x+(times_x*6),window_start_y,color, times_x, times_y);
else Display_char((hex&0x0F)+0x37, window_start_x+(times_x*6),window_start_y,color, times_x, times_y);
}
void Display_block(unsigned int window_start_x,unsigned int window_start_y,unsigned int block_size_x,unsigned int block_size_y,unsigned short int color)
{
unsigned short int i,j;
unsigned long int addr0;
for (j=0;j<block_size_y;j++)
{
addr0=((window_start_y+j)*LCD_x_size)+window_start_x;
for (i=0;i<block_size_x;i++)
{
Image_data[VRAM0+addr0]=color;
addr0++;
}
}
Trans_window_data_to_LCD(window_start_x,window_start_y,block_size_x,block_size_y);
}
void Display_logo1()
{
unsigned char Root_Directory[32];
unsigned char c[4];
unsigned long int page_addr;
unsigned int i;
unsigned int j;
unsigned int k;
unsigned char h;
unsigned long int data,addr_offset;
unsigned long int current_sector_addr,next_sector_addr,fat_page_addr;
unsigned int sector_num;
unsigned int FAT[256];
c[0]=0x4c;//'L';
c[1]=0x4f;//'O';
c[2]=0x47;//'G';
c[3]=0x4f;//'O';
Screen_clear();
for(h=1;h<25;h++)
{
page_addr=RootDirAddr;
for(k=0;k<RootDirNum/16;k++)
{
Flash_page_read(page_addr);
for(i=0;i<512/32;i++)
{
for(j=0;j<32;j++)
{
Root_Directory[j]=Data_buffer[i*32+j];
}
if(Root_Directory[0]==c[0])
if(Root_Directory[1]==c[1])
if(Root_Directory[2]==c[2])
if(Root_Directory[3]==c[3])
goto rr;
}
}
rr: page_addr=Data_start_Addr+Root_Directory[27]*256*SecPerClus+Root_Directory[26]*SecPerClus-4;
while(1)
{
Flash_page_read(page_addr);
for(i=0;i<512/32;i++)
{
for(j=0;j<32;j++)
{
Root_Directory[j]=Data_buffer[i*32+j];
}
if(Root_Directory[0]==0x30)
if(Root_Directory[1]==(0x30+h/10))
if(Root_Directory[2]==(0x30+h%10))
goto rr1;
}
for(k=0;k<SecPerClus-1;k++)
{
page_addr++;
Flash_page_read(page_addr);
for(i=0;i<512/32;i++)
{
for(j=0;j<32;j++)
{
Root_Directory[j]=Data_buffer[i*32+j];
}
if(Root_Directory[0]==0x30)
if(Root_Directory[1]==(0x30+h/10))
if(Root_Directory[2]==(0x30+h%10))
goto rr1;
}
}
current_sector_addr=(page_addr-Data_start_Addr+4)/SecPerClus;
fat_page_addr=RsvdSec+current_sector_addr/256;
sector_num=(current_sector_addr%256);
Flash_page_read(fat_page_addr);
/*for(i=0;i<256;i++)
{
FAT[i]=Data_buffer[2*i]+Data_buffer[2*i+1]*256;
}
next_sector_addr=(FAT[sector_num])&(0x0000ffff);*/
next_sector_addr=(Data_buffer[2*sector_num]+256*Data_buffer[2*sector_num+1])&(0x0000ffff);
if(next_sector_addr==0xffff) goto end;
page_addr=SecPerClus*next_sector_addr+Data_start_Addr-4;
}
rr1: page_addr=Data_start_Addr+Root_Directory[27]*256*SecPerClus+Root_Directory[26]*SecPerClus-4;
BMP_data_from_flash(VRAM0+((LCD_y_size-32)/2)*LCD_x_size+(LCD_x_size-96)/2,page_addr);
Trans_window_data_to_LCD((LCD_x_size-96)/2,(LCD_y_size-32)/2,96,32);
Delayms(80);
}
end: ;
}
void Display_logo2(char reason)
{
unsigned char Root_Directory[32];
unsigned char c[4];
unsigned long int page_addr;
unsigned int i;
unsigned int j;
unsigned int k;
unsigned char h;
unsigned long int data,addr_offset;
unsigned long int current_sector_addr,next_sector_addr,fat_page_addr;
unsigned int sector_num;
unsigned int FAT[256];
c[0]=0x4c;//'L';
c[1]=0x4f;//'O';
c[2]=0x47;//'G';
c[3]=0x4f;//'O';
Screen_clear();
switch (reason)
{
case 0:Display_string("PowerOff",(LCD_x_size-96)/2,((LCD_y_size-32)/2)+32,0xFF00,2,2);break;
case 1:Display_string("Battery!",(LCD_x_size-96)/2,((LCD_y_size-32)/2)+32,0x00FFFF00,2,2);break;
default:;
}
for(h=24;h>0;h--)
{
page_addr=RootDirAddr;
for(k=0;k<RootDirNum/16;k++)
{
Flash_page_read(page_addr);
for(i=0;i<512/32;i++)
{
for(j=0;j<32;j++)
{
Root_Directory[j]=Data_buffer[i*32+j];
}
if(Root_Directory[0]==c[0])
if(Root_Directory[1]==c[1])
if(Root_Directory[2]==c[2])
if(Root_Directory[3]==c[3])
goto rr;
}
}
rr: page_addr=Data_start_Addr+Root_Directory[27]*256*SecPerClus+Root_Directory[26]*SecPerClus-4;
while(1)
{
Flash_page_read(page_addr);
for(i=0;i<512/32;i++)
{
for(j=0;j<32;j++)
{
Root_Directory[j]=Data_buffer[i*32+j];
}
if(Root_Directory[0]==0x30)
if(Root_Directory[1]==(0x30+h/10))
if(Root_Directory[2]==(0x30+h%10))
goto rr1;
}
for(k=0;k<SecPerClus-1;k++)
{
page_addr++;
Flash_page_read(page_addr);
for(i=0;i<512/32;i++)
{
for(j=0;j<32;j++)
{
Root_Directory[j]=Data_buffer[i*32+j];
}
if(Root_Directory[0]==0x30)
if(Root_Directory[1]==(0x30+h/10))
if(Root_Directory[2]==(0x30+h%10))
goto rr1;
}
}
current_sector_addr=(page_addr-Data_start_Addr+4)/SecPerClus;
fat_page_addr=RsvdSec+current_sector_addr/256;
sector_num=(current_sector_addr%256);
Flash_page_read(fat_page_addr);
/*for(i=0;i<256;i++)
{
FAT[i]=Data_buffer[2*i]+Data_buffer[2*i+1]*256;
}
next_sector_addr=(FAT[sector_num])&(0x0000ffff);*/
next_sector_addr=(Data_buffer[2*sector_num]+256*Data_buffer[2*sector_num+1])&(0x0000ffff);
if(next_sector_addr==0xffff) goto end;
page_addr=SecPerClus*next_sector_addr+Data_start_Addr-4;
}
rr1: page_addr=Data_start_Addr+Root_Directory[27]*256*SecPerClus+Root_Directory[26]*SecPerClus-4;
BMP_data_from_flash(VRAM0+((LCD_y_size-32)/2)*LCD_x_size+(LCD_x_size-96)/2,page_addr);
Trans_window_data_to_LCD((LCD_x_size-96)/2,(LCD_y_size-32)/2,96,32);
Delayms(80);
}
end: ;
}
void (*Display_image_no[])(unsigned long int page_addr) =
{
Display_image,
Display_image,
Display_image,
Display_image,
Display_image,
Display_image,
Display_image,
Display_image
};
void Demo_image()
{
unsigned char i,j=0,image_status;
unsigned long int file_addr;
unsigned char c[4],m[4];
c[0]=0x42;
c[1]=0x4d;
c[2]=0x50;
c[3]=0x20;
switch(LCD_dots)
{
case 0: m[0]='8';m[1]='0';m[2]='4';m[3]='8'; break;
case 1: m[0]='8';m[1]='0';m[2]='6';m[3]='0'; break;
case 2: m[0]='6';m[1]='4';m[2]='4';m[3]='8'; break;
default:m[0]='3';m[1]='2';m[2]='0';m[3]='2'; break;
}
while (1)
{
while (Cycle_pause!=0) while ((Menu_status&0xF0)==0) return ;
file_addr=searchfile(c,m,j&0x07);
if(file_addr==0) goto add;
(*Display_image_no[j&0x07])(file_addr);
for(i=0;i<100;i++)
{
while ((Menu_status&0xF0)==0) return;
Delayms(20);
}
add: j++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -