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

📄 subpro.h

📁 用SL811做USB主机的源码
💻 H
字号:
/****************Description of the subprograms.************
clear_screen前240*64 SRAM清零
disp16x16	16x16字符显示
disp16x8	16x8字符显示
disp24x24	24x24字符显示
picture	 	图画显示
Line   	 	1=竖线,0=横线
***********************************************************/
void dispASC(unsigned char x,unsigned char y,unsigned int z)
{unsigned  char i,j,*p,*q;
 
  p=&ADDR_0+y*bytes_1line+x;			//起始定位
  z=(z-0x20)*16;								//数据定位
  A17_high	 //选择外部显示Ram

  for (i=16;i>0;i--)
  	  {if (y<lines_4kSram)
	  	  		{SRAM_32k
				q=p+32*1024;
				*q=~ASCII[z++];
				SRAM_64k
				}
		else 	*p=~ASCII[z++];
	   y++;
	   p=&ADDR_0+y*bytes_1line+x;
	  }
  A17_A16_low
}

void clear_screen(void)
{unsigned int j;
 unsigned char data,*p;

  data =0xff;  
  A17_high	 //选择外部显示Ram
  
  SRAM_32k  
  p = &ADDR_0+32*1024;
  for (j=lines_4kSram*bytes_1line;j>0;j--)
		{*p++=data;}
  SRAM_64k
  p=&EXTERN_0;
  for (j=(240-lines_4kSram)*bytes_1line;j>0;j--)
		{*p++=data;}
  		
  A17_A16_low
}

void disp16x16(unsigned char x,unsigned char y,unsigned int z)
{unsigned  char i,j,*p,*q;
 
  p=&ADDR_0+y*bytes_1line+x;			//起始定位
  z=z*32;								//数据定位
  A17_high	 //选择外部显示Ram

  for (i=16;i>0;i--)
  	  {if (y<lines_4kSram)
	  	  		{SRAM_32k
				q=p+32*1024;
				for (j=2;j>0;j--)
					 {*q++=~char16x16[z++];}
				SRAM_64k
				}
		else 	{for (j=2;j>0;j--)
					 {*p++=~char16x16[z++];}
				}
	   y++;
	   p=&ADDR_0+y*bytes_1line+x;
	  }
  A17_A16_low
}
  
void disp16x8(unsigned char x,unsigned char y,unsigned int z)
{unsigned  char i,j,*p,*q;
 
  p=&ADDR_0+y*bytes_1line+x;			//起始定位
  z=z*16;								//数据定位
  A17_high	 //选择外部显示Ram

  for (i=16;i>0;i--)
  	  {if (y<lines_4kSram)
	  	  		{SRAM_32k
				q=p+32*1024;
				*q=~char16x8[z++];
				SRAM_64k
				}
		else 	*p=~char16x8[z++];
	   y++;
	   p=&ADDR_0+y*bytes_1line+x;
	  }
  A17_A16_low
}
  
void disp24x24(unsigned char x,unsigned char y,unsigned int z)
{unsigned  char i,j,*p,*q;
 
  p=&ADDR_0+y*bytes_1line+x;			//起始定位
  z=z*72;								//数据定位
  A17_high	 //选择外部显示Ram

  for (i=24;i>0;i--)
  	  {if (y<lines_4kSram)
	  	  		{SRAM_32k
				q=p+32*1024;
				for (j=3;j>0;j--)
					 {*q++=~char24x24[z++];}
				SRAM_64k
				}
		else 	{for (j=3;j>0;j--)
					 {*p++=~char24x24[z++];}
				}
	   y++;
	   p=&ADDR_0+y*bytes_1line+x;
	  }
  A17_A16_low
}
  
void picture(unsigned char x,unsigned  char y,unsigned char a,unsigned char b)
{ unsigned char *p,*q,i,j,m;
  unsigned int z=0;

  p=&ADDR_0+y*bytes_1line+x;			//起始定位
  A17_high	 //选择外部显示Ram
	   
	   for (i=b;i>0;i--)
	   	   {if (y<lines_4kSram)
		   	   		{SRAM_32k
					q=p+32*1024;
					for (j=a;j>0;j--)
					 	{*q++=~pictureTab[z++];}
					SRAM_64k
					}
			else 	 {for (j=a;j>0;j--)
					 	  {*p++=~pictureTab[z++];}
				 	 }
			y++;
	   		p=&ADDR_0+y*bytes_1line+x;
	  		}
  	A17_A16_low
}

void Line(unsigned char n,unsigned char x,unsigned char y,unsigned char z)
{	unsigned char i,data,*p,*q;
	
  p=&ADDR_0+y*bytes_1line+x;			//起始定位
  q=p+32*1024;
  A17_high	 //选择外部显示Ram

	if (n==1)
	   //竖线
	   {data=0xfe;
	   for (i=z;i>0;i--)
  	   		{if (y<lines_4kSram)
	  	  		{SRAM_32k
				q=p+32*1024;
				*q=data;
				SRAM_64k
				}
			else 	*p=data;
	   		y++;
	   		p=&ADDR_0+y*bytes_1line+x;
			}
	  }
	else //横线 
		{data=0x00;
		if (y<lines_4kSram)
			 	 {SRAM_32k
				 for (i=z;i>0;i--) *q++=data;
				 SRAM_64k}
		else 	 for (i=z;i>0;i--) *p++=data;
		}
  A17_A16_low
}

void movx(unsigned char *address,unsigned char data)
{if (address>=(&EXTERN_0))
		*address=data;
	else {		SRAM_32k
				address=address+32*1024;
				*address=data;
				SRAM_64k}
}
void kuang(unsigned char x,unsigned char y,unsigned char a,unsigned char b)
{unsigned char i,j,*p;
	
  p=&ADDR_0+y*bytes_1line+x;			//起始定位
  A17_high	 //选择外部显示Ram

 	 for(i=0;i<b;i++)
	    {if (i==(b-1))
			{//边框的最后一行
			 for (j=0;j<a;j++)
			 	 {if (j==a-1)
				 	 {movx(p,1);}
					 else if (j==0)
					 	  {movx(p,0xc0);}
						  else {movx(p,0);}				 
				 p++;
				 }
			 y++;
			 p=&ADDR_0+y*bytes_1line+x;
			}
			else if (i==(b-2))
			   	 	{//边框的倒数第二行
					for (j=0;j<a;j++)
			 	 		{if (j==a-1)
				 	 		{movx(p,~0xff);}
					 		else if (j==0)
					 	  		 {movx(p,~0x7f);}
						  		 else {movx(p,0);}				 
				 	p++;
				 	}
			 		y++;
			 		p=&ADDR_0+y*bytes_1line+x;
					}
			   		else {switch (i)
						 		 {case 0:{//边框的第一行
								 	      for (j=0;j<a;j++)
			 	 						  {	  if (j==a-1)
				 	 					  	  {movx(p,~0xfc);}
					 						  else if (j==0)
					 	  		 			  	   {movx(p,~0x7f);}
						  		 				   else {movx(p,0);}				 
				 							  p++;
				 							  }
			 								  y++;
			 								  p=&ADDR_0+y*bytes_1line+x;
								 	      }
										  break;
								  case 1:{//边框的第二行
								 	      for (j=0;j<a;j++)
			 	 						  {	  if (j==a-1)
				 	 					  	  {movx(p,~2);}
					 						  else if (j==0)
					 	  		 			  	   {movx(p,~0x80);}
						  		 				   else {movx(p,0xff);}				 
				 							  p++;
				 							  }
			 								  y++;
			 								  p=&ADDR_0+y*bytes_1line+x;
										  }
										  break;
								  default:{//中间显示
								 	      for (j=0;j<a;j++)
			 	 						  {	  if (j==a-1)
				 	 					  	  {movx(p,~3);}
					 						  else if (j==0)
					 	  		 			  	   {movx(p,~0x80);}
						  		 				   else {movx(p,0xff);}				 
				 								p++;
				 								}
			 									y++;
			 									p=&ADDR_0+y*bytes_1line+x;
											}
											break;
								 }
						 }
				 			  
		}
  A17_A16_low
}


void put_shuzi(unsigned char x,unsigned char y,unsigned int data)
{	 unsigned char z_arry[5],i;

	 z_arry[4]=data%10;
	 z_arry[3]=data%100/10;
	 z_arry[2]=data%1000/100;
	 z_arry[1]=data%10000/1000;
	 z_arry[0]=data/10000;
	 
	 for (i=0;i<5;i++)
	 	 {disp16x8(x++,y,z_arry[i]);}	 
}

void put_shuzi_pcf(unsigned char x,unsigned char y,unsigned char data)
{	 unsigned char z_arry[2],i;

	 z_arry[1]=data%16;
	 z_arry[0]=data/16;
	 
	 for (i=0;i<2;i++)
	 	 {disp16x8(x++,y,z_arry[i]);}	 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -