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

📄 拼音输入.txt

📁 在ARM2410中实现拼音输入,并显示在终端 调用汉字码表没有列在其中
💻 TXT
字号:
unsigned char * Py_ShuRu ( unsigned char a0)
{    
	unsigned char  *hzaddr;
	unsigned char  *hzaddrend;
	unsigned char  *hzaddr1;    
	unsigned char a[8]={' ',' ',' ',' ',' ',' ',' ','\0'};
	unsigned char j=0;    
	unsigned char key;    
	volatile unsigned char (*p1)[8],(*p2)[8],(*p3)[8];
	volatile unsigned char i;
	int x, y;

	x = SCREENW-440;
	y = HINTY;

	a[0]=a0;
	while ( (a[0]<97) || (a[0]>122) || (a[0]=='i') || (a[0]=='u') || (a[0]=='v') )
	{
		while (Key_Done==0); 
		Key_Done=0; 
		a[0]= Key_Val;
	}
    
	while( j<6 )
	{
		Putchar ( x+j*8, y, a[j], 0 );   	
		i=1;
		p1=p2=PY_index_pointer[a[0]-97]; //"计算入口树根"
		p3=PY_index_pointer[a[0]-96]; //"设置指针界限"
		if (p1==0) break;	 //"查询失败返回0"
		while (p1<p3) 
			if ((*p1)[0]==a[1]) {p2=p1; break;} 
				else p1++;		                                            //"查询第二个拼音"
		p1=p2;
		while (p1<p3)									//"阶梯法查询余下拼音"
			if (((*p1)[i]==a[i+1])&&((*p1)[i-1]==a[i]))  { p2=p1; i++; } 
				else p1++;
		hzaddr=((unsigned char *)((*p2)[6]+(*p2)[7]*256+py_mb_begin));	  //"返回查询结果首地址"
		hzaddrend=((unsigned char *)((*(p2+1))[6]+(*(p2+1))[7]*256+py_mb_begin-1));
		hzaddr1=hzaddr;
		key=0;
		while((key<97)||(key>122))
		{
			i=0;
			Glib_FilledRectangle (x+(5+2)*8, y, x+440, y+20, 0 );  //440 = 38*10+(5+2)*8 + 4
			while( ((hzaddr1+i*2) < hzaddrend )&&(i<10))
			{
				Putchar ( (x+i*38+(5+2)*8), y, i+48, 0);   
				PutHz16( (x+12+i*38+(5+2)*8), y, (*(hzaddr1+i*2))-161, (*(hzaddr1+i*2+1)-161), 0);
				i++;
			}

			while (Key_Done==0);  
			Key_Done=0; 
			key =  Key_Val;
    	          
			if ( (key>=48)&&(key<=(i+47)) )  
			{ 	          	    
				Glib_FilledRectangle (x, y, x+440, y+20, 0 ); 
				return (hzaddr1+(key-48)*2); 
			}
			if ((key==0xe0)) //page down 
			{
				if ((hzaddr1+20)<hzaddrend) hzaddr1+=20;
			}
			if ((key==0xe7)) //page up
			{
				if ((hzaddr1-20)>=hzaddr) hzaddr1-=20;
			}
			if (key==8) 
			{
				if (j==0) 
				{ 
					Glib_FilledRectangle (x, y, x+440, y+20, 0 ); 
					return (0); 
				} 
				else { a[j]=' '; Glib_FilledRectangle (x+j*8, y, (x+j*8+8), (y+16), 0 ); j--; break;}
			}
			if ((key>96)&&(key<123))  {j++;  a[j]=key;  }    
		}
	}    
	Glib_FilledRectangle (x, y, x+440, y+20, 0 ); 
	return(0);   
}


void  Putchar ( int x, int y, unsigned char s, unsigned char a)
{
	U16  i,j,k,c1,c2;	  
	U8 *put_char;
	
	put_char = asc16[s];	
	
	for (j=0; j<=15; j++)
	{
		k=0x80;
		
		for (i=0; i<=7; i++)  
		{ 
			c1=((*put_char) & k);  
			c2 = ( c1 == 0 ? 0: 255 );  
			k = k >> 1; 
			PutPixel(x+i, y+j, c2, a); 
		}
		put_char++;      
	}   	
}


void  PutPixel(U32 x,U32 y,U32 c, unsigned int a1) 
{
	unsigned char c1, c2, a;

	c2=c>>4;
	if ((c2 != 0) && ((c2-cloursubtract) >= 0))	c2=c2-cloursubtract;
    
	if((x<SCREENW) && (y<(SCREENH-2)))   
	{
		c1=displaybuffer[(y)][(x)/2];
		a = ((x)%2)*4;
		
		if (a1==0) 
			displaybuffer[(y)][(x)/2] = (c1 & ~(0x0f<<a) ) | ( (c2&0x0f)<<a);        
	  	else  
	  		displaybuffer[(y)][(x)/2] = (c1 & ~(0x0f<<a) ) | ((( c2^(c1>>a))&0x0f)<<a);        
	}        
}



void PutHz16 (int  x, int  y,  unsigned char qm, unsigned char wm, unsigned char a )
{
	volatile U16 i,j,k,c1,c2;	
	volatile INT32U ulOffset;
	volatile U8 *put_hz;
	
	ulOffset = (INT32U)(qm * 94 + wm) * 32;
	put_hz=HZK+ulOffset;        
	
	for (j=0; j<=15; j++)
	{       	                 
		k=128;
		for (i=0; i<=7; i++)  
		{	
			c1=((*put_hz) & k); 
			c2 = ( c1 == 0 ? 0: 255 );  
			k = k >> 1; 
			PutPixel(x+i,y+j, c2,a);
		}                     	
		put_hz++;
     	         
		k=128;
		for (i=0; i<=7; i++)  
		{ 
			c1=((*put_hz) & k); 
			c2 = ( c1 == 0 ? 0: 255);  
			k = k >> 1; 
			PutPixel(x+8+i, y+j, c2, a); 	
		}
		put_hz++;       	       
	}              
}


void Glib_FilledRectangle(int x1,int y1,int x2,int y2,int color)
{
	int i,j;
	
	for(j=y1; j<=y2; j++)
	{
	  	for(i=x1; i<=x2; i++)    
	  	{
			PutPixel(i ,j, color, 0);
	  	}
	}
 }

⌨️ 快捷键说明

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