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

📄 display.c

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