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

📄 t9.c

📁 这是一称的项目原文件,包括T9汉字输入,打印机,24C512,已经引用到产品上
💻 C
📖 第 1 页 / 共 5 页
字号:
              	 //显示上一次的情况
                   set_pinyin_struct.count--;  //拼音计数减1 回到上一次状态
				    py=0; //拼音选择计数清零
					page=0; //翻页计数清零
					hz=0;  //汉字计数清零
                  break;
               case 14: //上翻页键
                 page=page-8;//翻页计数减去8(每行8个汉字)
                 if(page<0) //如果翻页计数小于0则置为0
                  {page=0;}
                 lcd_T9_display(ok[0],0,py,hz,page); //进入拼音汉字显示
                break;
               case 15: //下翻页键
                page=page+8; //翻页计数加(每行显示8个汉字)
                 lcd_T9_display(ok[0],0,py,hz,page); //进入拼音与汉字显示
                break;
               }
			 }  
         else if(key[1]==0) //如果为确定键
             {m=set_name_struct.count;//将当前汉字选择计数赋给m
			 lcd_clear_line(1); //清除拼音显示
			 lcd_clear_line(3);  //清除汉字显示行
			 lcd_T9_hz_display(ok[0],m,py,hz,page);  //进入汉字显示
			  set_pinyin_struct.count=0; //将拼音计数清零,回到拼音输入的初始状态
			set_name_struct.count++;  //汉字计数加1 进入下一个汉字选择状态
			timer1_init(TIME_4S);  //延时4s
				  py=0;  //拼音选择计数清零
				  page=0; //翻页计数清零
				  hz=0;  //汉字计数清零
              return; // 返回
                }     
        break;  
   case 2:       //第三次按键
          key[2]=kk;
     if(key[2]>0&&key[2]<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]==key[2]&&hzk_1[k][3]==0)//如果表中某行第1,2列分别与第1,2次键入的值相同且第3列为零
                 {ok[2]=k;                            //将该行的行标赋给0k[1]
		        	set_pinyin_struct.count++; //将拼音按键计数器加1
				    lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[2],2,py,hz,page);//进入拼音与汉字显示子函数
				 break;
				}
			   }
             }
		   else if(key[2]>=3&&key[2]<=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]==key[2]&&hzk_2[k][3]==0) //如果索引表中某行第一列与第一次键入值相同且该行第二列为零
				     { ok[2]=k+57;//将该行的行标赋给ok[0]
				       set_pinyin_struct.count++; //将拼音按键计数器加1
				    lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[2],2,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]==key[2]&&hzk_3[k][3]==0) //如果索引表中某行第一列与第一次键入值相同且该行第二列为零
				     { ok[2]=k+106;//将该行的行标赋给ok[0]
				       set_pinyin_struct.count++; //将拼音按键计数器加1
				    lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[2],2,py,hz,page);//进入拼音与汉字显示子函数
				    break;
				   }
				 }
					 lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[1],1,py,hz,page);//进入拼音与汉字显示子函数
			 }
          else //(key[2]>=7&&key[2]<=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]==key[2]&&hzk_4[k][3]==0) //如果索引表中某行第一列与第一次键入值相同且该行第二列为零
				     {ok[2]=k+167;//将该行的行标赋给ok[0]
					 set_pinyin_struct.count++; //将拼音按键计数器加1
				    lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[2],2,py,hz,page);//进入拼音与汉字显示子函数
				  break;
					 }				   
				 }
              }
        }//end if     
		   
           else if(key[2]>=9&&key[2]<=15)  //功能键
                {
             switch(key[2])
              {case 9:  //拼音选择键 
                 py+=1;  //计数加1
				 page=0;  
                 lcd_T9_display(ok[1],1,py,hz,page);  //拼音与汉字显示
                 break;
               case 10: //切换
                 break;
               case 11: //
                 break;
               case 12: //汉字选择键
                 hz+=1;  //汉字计数加1
                  if(hz>7) //如果大于7 则归零
                    {hz=0;}
                 lcd_T9_display(ok[1],1,py,hz,page);   // 拼音与汉字显示
                 break;
               case 13: //清除键
			       lcd_clear_line(1);
					  py=0; //拼音选择计数归零
                   lcd_T9_display(ok[0],0,py,hz,page);
				   //显示上一次的情况
                   set_pinyin_struct.count--;  //拼音按键计数器减去1
                  break;
               case 14: //上翻页键
                 page=page-8;//汉字翻页计数减8
                 if(page<0)  //如果小于0则归零
                  {page=0;}
                 lcd_T9_display(ok[1],1,py,hz,page);  //显示拼音与汉字
                break;
               case 15: //下翻页
                page=page+8;  //汉字翻页计数加8
                lcd_T9_display(ok[1],1,py,hz,page);   //显示拼音与汉字
                break;
             }
			 }
          else if(key[2]==0) //确定键
             {m=set_name_struct.count; //将当前汉字选择计数保存到m
			 lcd_clear_line(1);
			 lcd_clear_line(3);
			 lcd_T9_hz_display(ok[1],m,py,hz,page);  //进入选择汉字显示
			  set_pinyin_struct.count=0; //将拼音计数清零
			set_name_struct.count++;  //将汉字选择计数加1 进入下一次选择汉字状态
			timer1_init(TIME_4S);
		  		py=0;
				  page=0;
				hz=0;
               return;
                }     
        break;
 case 3:
          key[3]=kk;
     if(key[3]>0&&key[3]<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]==key[2]&&hzk_1[k][3]==key[3]&&hzk_1[k][4]==0)//如果表中某行第1,2列分别与第1,2次键入的值相同且第3列为零
                    {ok[3]=k;                            //将该行的行标赋给0k[1]
			    	 set_pinyin_struct.count++; //将拼音按键计数器加1
					 lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[3],3,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]==key[2]&&hzk_2[k][3]==key[3]&&hzk_2[k][4]==0) //如果索引表中某行第一列与第一次键入值相同且该行第二列为零
				       { ok[3]=k+57;//将该行的行标赋给ok[0]
				         set_pinyin_struct.count++; //将拼音按键计数器加1
					 lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[3],3,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]==key[2]&&hzk_3[k][3]==key[3]&&hzk_3[k][4]==0) //如果索引表中某行第一列与第一次键入值相同且该行第二列为零
				      {ok[3]=k+106;//将该行的行标赋给ok[0]
				       set_pinyin_struct.count++; //将拼音按键计数器加1
					 lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[3],3,py,hz,page);//进入拼音与汉字显示子函数
					  break;
					 }				 
                   }
                }
            else //(key[3]>=7&&key[3]<=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]==key[2]&&hzk_4[k][3]==key[3]&&hzk_4[k][4]==0) //如果索引表中某行第一列与第一次键入值相同且该行第二列为零
				      {ok[3]=k+167;//将该行的行标赋给ok[0]
		    		   set_pinyin_struct.count++; //将拼音按键计数器加1
					 lcd_clear_line(1);//清除第二行
                    lcd_T9_display(ok[3],3,py,hz,page);//进入拼音与汉字显示子函数
					  break;
				     }				 
                    }
                }
        }//end if     
		   
           else if(key[3]>=9&&key[3]<=15)  //功能键
                {
             switch(key[3])
              {case 9:  //拼音选择键 
                 py+=1; //计数加1
				 page=0; 
				 hz=0;
                 lcd_T9_display(ok[2],2,py,hz,page);  //拼音汉字显示
                 break;
               case 10: //切换
                 break;
               case 11://
                 break;
               case 12: //汉字选择键
                 hz=hz+1; //计数加1
                  if(hz>7)//计数大于7则归零
                    {hz=0;}
                 lcd_T9_display(ok[2],2,py,hz,page);  //拼音汉字显示
                 break;
               case 13: //清除
			      lcd_clear_line(1);
 				   py=0;
				   hz=0;
                 lcd_T9_display(ok[1],1,py,hz,page);
				  //显示上一次的情况
                   set_pinyin_struct.count--;  //拼音按键计数减去1,回到上一次状态
                  break;
               case 14: //上翻页
                 page-=8; //计数减去8

⌨️ 快捷键说明

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