📄 display.c
字号:
#include "config.h"
#include "soucehead.h"
extern long int LCDRSH1;
extern long int LCDRSH2;
extern long int LCDRSL1;
extern long int LCDRSL2;
extern unsigned char Data_buffer[0x200];
extern unsigned int LCD_x_size,LCD_y_size;
extern unsigned char LCD_code,LCD_data_mode,LCD_dots,BMP_start_block,BMP_block_number;
extern volatile unsigned char Menu_status,Menu_status_1,Menu_status_2;
extern volatile char Cycle_pause ;
extern unsigned char Bl_brightness ;
extern unsigned char Shift ;
unsigned long int Image_addr;
extern unsigned short int Image_data[0x80000];
extern unsigned long int searchfile(unsigned char c[4],unsigned char m[4],unsigned char n);
extern unsigned long int RootDirAddr;
extern unsigned long int Data_start_Addr;
extern unsigned RootDirNum;
extern unsigned int RsvdSec;
extern unsigned char SecPerClus;
unsigned long int Ascii[200]=
{
0x00000000, 0x00000000,
0x04040404 , 0x00000400,
0x0A0A0A0A, 0x00000000,
0x0A0A1F0A, 0x1F0A0A00,
0x040F140E, 0x051E0400,
0x18190204, 0x08130300,
0x0C121408, 0x15120D00,
0x0C040800, 0x00000000,
0x02040808, 0x08040200,
0x08040202, 0x02040800,
0x0004150E, 0x15040000,
0x0004041F, 0x04040000,
0x00000000, 0x0C040800,
0x0000001F, 0x00000000,
0x00000000, 0x000C0C00,
0x00010204, 0x08100000,
0x0E111315, 0x19110E00,
0x040C0404, 0x04040E00,
0x0E110102, 0x04081F00,
0x1F020402, 0x01110E00,
0x02060A12, 0x1F020200,
0x1F101E01, 0x01110E00,
0x0608101E, 0x11110E00,
0x1F010204, 0x04040400,
0x0E11110E, 0x11110E00,
0x0E11110E, 0x01020C00,
0x000C0C00, 0x0C0C0000,
0x000C0C00, 0x0C040800,
0x02040810, 0x08040200,
0x00001F00, 0x1F000000,
0x08040201, 0x02040800,
0x0E110102, 0x04000400,
0x0E11010D, 0x15150E00,
0x0E111111, 0x1F111100,
0x1E09090E, 0x09091E00,
0x0E111010, 0x10000E00,
0x1E090909, 0x09091E00,
0x1F10101F, 0x10101F00,
0x1F10101E, 0x10101000,
0x0E111013, 0x11110F00,
0x1111111F, 0x11111100,
0x0E040404, 0x04040E00,
0x07020202, 0x02120C00,
0x11121418, 0x14121100,
0x10101010, 0x10101F00,
0x111B1511, 0x11111100,
0x11191915, 0x13131100,
0x0E111111, 0x11110E00,
0x1E11111E, 0x10101000,
0x0E111111, 0x15120B00,
0x1E11111E, 0x14121100,
0x0E11100E, 0x01110E00,
0x1F040404, 0x04040400,
0x11111111, 0x11110E00,
0x11111111, 0x110A0400,
0x11111115, 0x151B1100,
0x11110A04, 0x0A111100,
0x1111110A, 0x04040400,
0x1F010204, 0x08101F00,
0x0E080808, 0x08080E00,
0x00100804, 0x02010000,
0x0E020202, 0x02020E00,
0x040A1100, 0x00000000,
0x00000000, 0x00001F00,
0x10080400, 0x00000000,
0x00000E01, 0x0F110F00,
0x10101619, 0x11111E00,
0x00000E11, 0x10110E00,
0x01010D13, 0x11110F00,
0x00000E11, 0x1F100E00,
0x0205040E, 0x04040400,
0x000D1313, 0x0D010E00,
0x10101619, 0x11111100,
0x04000C04, 0x04040E00,
0x02000602, 0x02120C00,
0x0808090A, 0x0C0A0900,
0x0C040404, 0x04040E00,
0x00001A15, 0x15151500,
0x00001619, 0x11111100,
0x00000E11, 0x11110E00,
0x00161919, 0x16101000,
0x000D1313, 0x0D010100,
0x00001619, 0x10101000,
0x00000F10, 0x1E011F00,
0x08081C08, 0x08090600,
0x00001212, 0x12120D00,
0x00001111, 0x110A0400,
0x00001111, 0x15150A00,
0x0000110A, 0x040A1100,
0x00001111, 0x130D010E,
0x00001F02, 0x04081F00,
0x02040408, 0x04040200,
0x02020200, 0x02020200,
0x08040402, 0x04040800,
0x08150200, 0x00000000,
0x1F1F1F1F, 0x1F1F1F1F
};
extern unsigned char Data_buffer[0x200];
extern void Delay100ns(long int dly);
extern void Delayms(long int dly);
extern void Flash_page_read(unsigned long int flash_page_addr);
extern void Trans_window_data_to_LCD(unsigned int window_start_x,unsigned int window_start_y,unsigned int image_width,unsigned int image_highth);
extern void BMP_data_from_flash(unsigned long int data_addr,unsigned long int flash_block_addr);
extern void Logo_data_from_flash(unsigned long int data_addr,unsigned long int flash_block_addr);
void Screen_clear()
{
int i,j;
long int addr=0;
A20_LOW;
for(i=0;i<LCD_y_size;i++)
{
for(j=0;j<LCD_x_size;j++)
{
Image_data[VRAM0+addr]=0x0000;
addr++;
}
}
Trans_window_data_to_LCD(0,0,LCD_x_size,LCD_y_size);
}
/*void Display_movie(char no)
{
unsigned char i,j;
Flash_page_read(ROOT_PAGE);
j=Data_buffer[0x0F-no];
if(j==0) while(1) if ((Menu_status&0xF0)!=0x20) return;
while(1)
{
for(i=0;i<j ;i++)
{
if ((Menu_status&0xF0)!=0x20) return;
while(Cycle_pause==1) if ((Menu_status&0xF0)!=0x20) return;
BMP_data_from_flash(VRAM1,1024+(768*no)+3*i);
Trans_window_data_to_LCD((LCD_x_size-128)/2,(LCD_y_size-96)/2-2,128,96);
Delayms(25);
}
}
}
*/
void Display_image_center_align(int centre_x,int centre_y,int souce_x_size,int souce_y_size,int target_x_size,int target_y_size,long int souce_addr)
{
long int addr0,addr1;
int mini_x,mini_y,x,y;
BMP_data_from_flash(VRAM1,souce_addr);
addr0=0;addr1=0;
if (souce_x_size>=target_x_size) {addr1=addr1+(souce_x_size-target_x_size)/2; mini_x=target_x_size;}
else {addr0=addr0+centre_x-(souce_x_size/2);mini_x=souce_x_size;}
if (souce_y_size>=target_y_size) {addr1=addr1+(((souce_y_size-target_y_size)/2)*souce_x_size);mini_y=target_y_size;}
else {addr0=addr0+(centre_y-(souce_y_size/2))*LCD_x_size;mini_y=souce_y_size;}
for (y=0;y<mini_y;y++)
{
for (x=0;x<mini_x;x++)
{
Image_data[VRAM0+addr0]=Image_data[VRAM1+addr1];
addr0++;addr1++;
}
addr0=addr0+LCD_x_size-mini_x;
addr1=addr1+souce_x_size-mini_x;
}
Trans_window_data_to_LCD(centre_x-(mini_x/2),centre_y-(mini_y/2),mini_x,mini_y);
}
void Display_image(unsigned long int page_addr)
{
BMP_data_from_flash(VRAM0,page_addr);
Trans_window_data_to_LCD(0,0,LCD_x_size,LCD_y_size);
}
void Display_ascii(char code,unsigned long int ram_addr)
{
unsigned char i;
for(i=0;i<6;i++)
{
if ((Ascii[(code-0x20)*2]&(1<<(29-i)))==0)
{
Image_data[VRAM1+ram_addr+i]=0;
}
else
{
Image_data[VRAM1+ram_addr+i]=1;
}
}
ram_addr=ram_addr+6;
for(i=0;i<6;i++)
{
if ((Ascii[(code-0x20)*2]&(1<<(21-i)))==0)
{
Image_data[VRAM1+ram_addr+i]=0;
}
else
{
Image_data[VRAM1+ram_addr+i]=1;
}
}
ram_addr=ram_addr+6;
for(i=0;i<6;i++)
{
if ((Ascii[(code-0x20)*2]&(1<<(13-i)))==0)
{
Image_data[VRAM1+ram_addr+i]=0;
}
else
{
Image_data[VRAM1+ram_addr+i]=1;
}
}
ram_addr=ram_addr+6;
for(i=0;i<6;i++)
{
if ((Ascii[(code-0x20)*2]&(1<<(5-i)))==0)
{
Image_data[VRAM1+ram_addr+i]=0;
}
else
{
Image_data[VRAM1+ram_addr+i]=1;
}
}
ram_addr=ram_addr+6;
for(i=0;i<6;i++)
{
if ((Ascii[(code-0x20)*2+1]&(1<<(29-i)))==0)
{
Image_data[VRAM1+ram_addr+i]=0;
}
else
{
Image_data[VRAM1+ram_addr+i]=1;
}
}
ram_addr=ram_addr+6;
for(i=0;i<6;i++)
{
if ((Ascii[(code-0x20)*2+1]&(1<<(21-i)))==0)
{
Image_data[VRAM1+ram_addr+i]=0;
}
else
{
Image_data[VRAM1+ram_addr+i]=1;
}
}
ram_addr=ram_addr+6;
for(i=0;i<6;i++)
{
if ((Ascii[(code-0x20)*2+1]&(1<<(13-i)))==0)
{
Image_data[VRAM1+ram_addr+i]=0;
}
else
{
Image_data[VRAM1+ram_addr+i]=1;
}
}
ram_addr=ram_addr+6;
for(i=0;i<6;i++)
{
if ((Ascii[(code-0x20)*2+1]&(1<<(5-i)))==0)
{
Image_data[VRAM1+ram_addr+i]=0;
}
else
{
Image_data[VRAM1+ram_addr+i]=1;
}
}
}
void Display_string(char *string,unsigned int window_start_x,unsigned int window_start_y,unsigned short int color,char times_x,char times_y)
{
unsigned char i,j,k,t,string_size;
unsigned long int addr1=0,addr0;
string_size=0;
while( *(string+string_size) != '\0' )
{
Display_ascii(*(string+string_size),string_size*48);
string_size++;
}
addr1=0;
for (j=0;j<8*times_y;j++)
{
addr0=(window_start_y+j)*LCD_x_size+window_start_x;
for (i=0;i<string_size;i++)
{
addr1=6*(8*i+(j/times_y));
for(k=0;k<6;k++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -