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

📄 display.c

📁 EPSON LCD控制器S1D13506显示部分源码!
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -