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

📄 t9.c

📁 这是一称的项目原文件,包括T9汉字输入,打印机,24C512,已经引用到产品上
💻 C
📖 第 1 页 / 共 5 页
字号:
8, 1, 5, 0, 0, 0, 5,      45, 67,49, 41,52, 66,49, 91,52, 59,0, 0,                     23,1,14,25,1,14,26,1,15,25,1,15,26,1,14,0,0,0,0,0,0,0,0,0,
8, 1, 5, 3, 0, 0, 3,      45, 84,52, 63,49, 74, 0, 0, 0, 0, 0, 0,                      23,1,14,7,26,1,14,7,25,1,14,7,0,0,0,0,0,0,0,0,0,0,0,0,
8, 2, 0, 0, 0, 0, 2,      50, 12,52, 80, 0,  0, 0,  0, 0, 0, 0, 0,                     25,5,26,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 2, 3, 0, 0, 0, 2,      45, 94,52, 84, 0,  0, 0,  0, 0, 0, 0, 0,                     23,5,9,26,5,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 2, 5, 0, 0, 0, 2,      47, 33,52, 85, 0,  0, 0,  0, 0, 0, 0, 0,                     23,5,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 2, 5, 3, 0, 0, 2,      47, 43,52, 86, 0,  0, 0,  0, 0, 0, 0, 0,                     23,5,14,7,26,5,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 0, 0, 0, 0, 3,      46, 84,50, 27, 55, 40,0,  0, 0, 0, 0, 0,                     24,9,25,9,26,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 1, 0, 0, 0, 2,      47, 25,52, 90, 0,  0, 0,  0, 0, 0, 0, 0,                     24,9,1,26,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 1, 3, 0, 0, 1,      53, 10, 0,  0, 0,  0, 0,  0, 0, 0, 0, 0,                     26,8,1,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 1, 5, 0, 0, 4,      47, 38,47, 84,53, 16,53, 48, 0, 0, 0, 0,                     24,9,1,14,24,9,1,15,26,8,1,14,26,8,1,15,0,0,0,0,0,0,0,0,
8, 3, 1, 5, 3, 0, 2,      47, 64,53, 33, 0,  0, 0,  0, 0, 0, 0, 0,                     24,9,1,14,7,26,8,1,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 2, 0, 0, 0, 2,      48, 8,53, 58,  0,  0, 0,  0, 0, 0, 0, 0,                     24,9,5,26,8,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 2, 5, 0, 0, 1,      53, 68,0,  0,  0,  0, 0,  0, 0, 0, 0, 0,                     26,8,5,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 2, 5, 3, 0, 1,      53, 84,0,  0,  0,  0, 0,  0, 0, 0, 0, 0,                     26,8,5,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 3, 0, 0, 0, 1,      54, 5, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0,                     26,8,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 5, 0, 0, 0, 2,      48, 29,50, 80, 0,  0, 0,  0, 0, 0, 0, 0,                     24,9,14,25,9,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 5, 3, 0, 0, 2,      48, 39,51, 2,  0,  0, 0,  0, 0, 0, 0, 0,                     24,9,14,7,25,9,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 5, 5, 3, 0, 2,      48, 54,54, 48, 0,  0, 0,  0, 0, 0, 0, 0,                     24,9,15,14,7,26,8,15,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 5, 7, 0, 0, 1,      54, 59, 0,  0, 0,  0, 0,  0, 0, 0, 0, 0,                     26,8,15,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 7, 0, 0, 0, 2,      48, 61,54, 73, 0,  0, 0,  0, 0, 0, 0, 0,                     24,9,21,26,8,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 7, 1, 0, 0, 1,      55, 5, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0,                       26,8,21,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 7, 1, 3, 0, 1,      55, 7, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0,                       26,8,21,1,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 7, 1, 5, 0, 1,      55, 8, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0,                       26,8,21,1,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 7, 1, 5, 3, 1,      55, 14,0,  0, 0,  0, 0, 0, 0, 0, 0, 0,                       26,8,21,1,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 7, 3, 0, 0, 1,      55, 21,0,  0, 0,  0, 0, 0, 0, 0, 0, 0,                       26,8,21,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 3, 7, 5, 0, 0, 2,      55, 27,55, 29,0,  0, 0, 0, 0, 0, 0, 0,                       26,8,21,14,26,8,21,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 5, 0, 0, 0, 0, 1,      46, 46,0,  0, 0,  0, 0, 0, 0, 0, 0, 0,                       23,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 5, 5, 3, 0, 0, 2,      51, 20,55, 55,0,  0, 0, 0, 0, 0, 0, 0,                       25,15,14,7,26,15,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 5, 7, 0, 0, 0, 2,      51, 36,55, 62,0,  0, 0, 0, 0, 0, 0, 0,                       25,15,21,26,15,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 7, 0, 0, 0, 0, 4,      48, 70,47, 55,55, 66,51, 56,0,0,0, 0, 0,                     23,21,24,21,26,21,25,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 7, 1, 5, 0, 0, 3,      48, 89,52, 7,55, 74, 0, 0, 0, 0, 0, 0,                       24,21,1,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 7, 2, 0, 0, 0, 2,      49, 5, 52, 27,0,  0, 0, 0, 0, 0, 0, 0,                       24,21,5,25,21,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 7, 3, 0, 0, 0, 1,      55, 76,0,  0, 0,  0, 0, 0, 0, 0, 0, 0,                       26,21,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8, 7, 5, 0, 0, 0, 4,      49, 11,52, 37,55, 80,55,82,0, 0, 0, 0,                       24,21,14,25,21,14,26,21,14,26,21,15,0,0,0,0,0,0,0,0,0,0,0,0
};

//unsigned char code hzk_1[1][43]={0};
//unsigned char code hzk_2[1][43]={0};
//unsigned char code hzk_3[1][43]={0};
//unsigned char code hzk_4[1][43]={0};
BYTE key_0;
WORD hz_nm[5]={0x2020};//

void T9_PY_SHURU(BYTE key_value)
{
char  k;//汉字索引表行标变量
int m,h;
WORD kk;
BYTE key[7];
BYTE ky_num;
ky_num=get_num_address_from_key_value(key_value);//取按键返回值
switch(ky_num)
   {   //将各返回值(字符型)转化为无符号整形
     case 0: kk=0;break;
	 case 1: kk=1;break;
	 case 2: kk=2;break;
	 case 3: kk=3;break;
	 case 4: kk=4;break;
	 case 5: kk=5;break;
     case 6: kk=6;break;
	 case 7: kk=7;break;
	 case 8: kk=8;break;
	 case 9: kk=9;break;
	 case 'a': kk=10;break;
	 case 'b': kk=11;break;
     case 'c': kk=12;break;
	 case 'd': kk=13;break;
	 case 'e': kk=14;break;
	 case 'f': kk=15;break;
	 default:  kk=20;break;
   } 
switch(set_pinyin_struct.count)//通过判断按键次数计数器来确定是第几次按键
   { case 0:     //第一次按键
       key[0]=kk;
		   key_0=key[0];
     if(key[0]>0&&key[0]<9)	
       {    	
       	  if(key[0]>0&&key[0]<=2)             //如果为1~2(字母键)
             {   for(k=0;k<57;k++)              //查询汉字索引表
               { if(hzk_1[k][0]==key[0]&&hzk_1[k][1]==0)//如果表中某行第1,2列分别与第1,2次键入的值相同且第3列为零
                 {ok[0]=k;                            //将该行的行标赋给0k[1]
				 set_pinyin_struct.count++; //将拼音按键计数器加1
				  }
				 // break;
			   }
             }
		   else if(key[0]>=3&&key[0]<=4)       //如果为3~4(字母键 
		     { for(k=0;k<49;k++)  //查询汉字索引表
                 {   if(hzk_2[k][0]==key[0]&&hzk_2[k][1]==0) //如果索引表中某行第一列与第一次键入值相同且该行第二列为零
				     {ok[0]=k+57;//将该行的行标赋给ok[0]
					 set_pinyin_struct.count++; //将拼音按键计数器加1
				     }
					// break;
				 }
			 }
		   else if(key[0]>=5&&key[0]<=6)       //如果为5~6(字母键 
		      { for(k=0;k<61;k++)  //查询汉字索引表
                  {   if(hzk_3[k][0]==key[0]&&hzk_3[k][1]==0) //如果索引表中某行第一列与第一次键入值相同且该行第二列为零
				     {ok[0]=k+106;//将该行的行标赋给ok[0]
					 set_pinyin_struct.count++; //将拼音按键计数器加1
				     }
                    //break;
				 }
			 }
          else //(key[0]>=7&&key[0]<=8)//如果为7~8(字母键)
             { for(k=0;k<55;k++)  //查询汉字索引表
                 {   if(hzk_4[k][0]==key[0]&&hzk_4[k][1]==0) //如果索引表中某行第一列与第一次键入值相同且该行第二列为零
				     { ok[0]=k+167;//将该行的行标赋给ok
				       set_pinyin_struct.count++; //将拼音按键计数器加1
					 }
					// break;
				 }
              }
		   	lcd_clear_line(1);//清除第二行
            lcd_T9_display(ok[0],0,py,hz,page);//进入拼音与汉字显示子函数
			//set_pinyin_struct.count++; //将拼音按键计数器加1
        }//end if     
		  
		   else if(key[0]==10)
		   {set_name_struct.count=0;//将汉字计数器清零
		   }
		   else if(key[0]==13)  //删除键
		   {if(set_name_struct.count>0) //当汉字计数器大于0的情况下
		     {  set_name_struct.count--;//汉字计数器减1并返回
                lcd_clear_line(2); //清除第3行
		        for(h=0;h<=set_name_struct.count;h++)//在该行重新显示上一次之前选择好的汉字
                 { lcd_Display_Lib_Chinese(0x8b+h,hz_nm[h]);
                 }
			 }
			 else  
		/*	{ set_code_struct.count=0;
			  lcd_clear_line(2);
			}*/
		   py=0;  //拼音选择键清零
		   page=0; //汉字翻页键清零
		   hz=0;   //汉字选择键清零
		   return;
		   }
           break;
  case 1:    // 第二次按键
          key[1]=kk;
     if(key[1]>0&&key[1]<9)	
       {    	
       	  if(key[0]>0&&key[0]<=2)             //如果为1~2(字母键)
             {   for(k=0;k<57;k++)              //查询汉字索引表
               { if(hzk_1[k][0]==key[0]&&hzk_1[k][1]==key[1]&&hzk_1[k][2]==0)//如果表中某行第1,2列分别与第1,2次键入的值相同且第3列为零
                 {ok[1]=k;                            //将该行的行标赋给0k[1]
				 	set_pinyin_struct.count++; //将拼音按键计数器加1
					 lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[1],1,py,hz,page);//进入拼音与汉字显示子函数
				     break;
					}		  
			   }
             }
		   else if(key[0]>=3&&key[0]<=4)       //如果为3~4(字母键 
		     { for(k=0;k<49;k++)  //查询汉字索引表
                 {   if(hzk_2[k][0]==key[0]&&hzk_2[k][1]==key[1]&&hzk_2[k][2]==0) //如果索引表中某行第一列与第一次键入值相同且该行第二列为零
				     {ok[1]=k+57;//将该行的行标赋给ok[0]
				      set_pinyin_struct.count++; //将拼音按键计数器加1
					 lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[1],1,py,hz,page);//进入拼音与汉字显示子函数
				   break;
					 }
                    
				 }
			 }
		   else if(key[0]>=5&&key[0]<=6)       //如果为5~6(字母键 
		      { for(k=0;k<61;k++)  //查询汉字索引表
                  {   if(hzk_3[k][0]==key[0]&&hzk_3[k][1]==key[1]&&hzk_3[k][2]==0) //如果索引表中某行第一列与第一次键入值相同且该行第二列为零
				      {ok[1]=k+106;//将该行的行标赋给ok[0]
				    	set_pinyin_struct.count++; //将拼音按键计数器加1
					 lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[1],1,py,hz,page);//进入拼音与汉字显示子函数
					 break;
				    	 }                  
			  	}
			 }
          else //(key[1]>=7&&key[1]<=8)//如果为7~8(字母键)
             { for(k=0;k<55;k++)  //查询汉字索引表
                 {   if(hzk_4[k][0]==key[0]&&hzk_4[k][1]==key[1]&&hzk_4[k][2]==0) //如果索引表中某行第一列与第一次键入值相同且该行第二列为零
				     {ok[1]=k+167;//将该行的行标赋给ok[0]
					set_pinyin_struct.count++; //将拼音按键计数器加1
					 lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[1],1,py,hz,page);//进入拼音与汉字显示子函数
				 break;
					 }				   
				 }
              }
   }//end if     
		  
      else if(key[1]>=9&&key[1]<=15)   //功能键
         {
             switch(key[1])
              {case 9: //如果为拼音选择键
                 py+=1; //拼音计数自加1
	 			 page=0; //汉字翻页清零
                 hz=0;   //汉字选择清零
				 lcd_T9_display(ok[0],0,py,hz,page); //进入拼音与汉字显示子函数
                 break;
               case 10: //切换
                 break;
               case 11: //
                 break;
               case 12: //如果为汉字选择键
                 hz=hz+1; //汉字计数自加1
                  if(hz>7) //如果计数大于7则归零(循环显示某行(8个)中的单个汉字)
                    {hz=0;}
				//	lcd_clear_line(2);
                 lcd_T9_display(ok[0],0,py,hz,page);//进入拼音与汉字显示
                 break;
               case 13: //如果为删除键
			        lcd_clear_line(1); //清除拼音显示行
                    lcd_clear_line(3); //清除汉字显示行

⌨️ 快捷键说明

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