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

📄 pinyin.c

📁 标准C版本的应用于单片机系统的全屏输入法
💻 C
📖 第 1 页 / 共 5 页
字号:
  				    {'i',' ',' ',' ',' ',1,0x4d,0x26},
  				    {'o','n','g',' ',' ',3,0x90,0x26},
  				    {'o','u',' ',' ',' ',2,0xb1,0x26},
  				    {'u',' ',' ',' ',' ',1,0xcc,0x26},
  				    {'u','a','n',' ',' ',3,0xf9,0x26},
  				    {'u','i',' ',' ',' ',2,0x02,0x27},
  				    {'u','n',' ',' ',' ',2,0x27,0x27},
  				    {'u','o',' ',' ',' ',2,0x38,0x27}};
unsigned char code PY_index_t[][8]={
                    {'a',' ',' ',' ',' ',1,0x59,0x27},
  				    {'a','i',' ',' ',' ',2,0x78,0x27},
  				    {'a','n',' ',' ',' ',2,0x9d,0x27},
  				    {'a','n','g',' ',' ',3,0xd2,0x27},
  				    {'a','o',' ',' ',' ',2,0x07,0x28},
  				    {'e',' ',' ',' ',' ',1,0x28,0x28},
  				    {'e','i',' ',' ',' ',2,0x33,0x28},
  				    {'e','n','g',' ',' ',3,0x36,0x28},
  				    {'i',' ',' ',' ',' ',1,0x41,0x28},
  				    {'i','a','n',' ',' ',3,0x70,0x28},
  				    {'i','a','o',' ',' ',3,0x8b,0x28},
  				    {'i','e',' ',' ',' ',2,0xae,0x28},
  				    {'i','n','g',' ',' ',3,0xb9,0x28},
  				    {'o','n','g',' ',' ',3,0xde,0x28},
  				    {'o','u',' ',' ',' ',2,0x09,0x29},
  				    {'u',' ',' ',' ',' ',1,0x16,0x29},
  				    {'u','a','n',' ',' ',3,0x37,0x29},
  				    {'u','i',' ',' ',' ',2,0x42,0x29},
  				    {'u','n',' ',' ',' ',2,0x51,0x29},
  				    {'u','o',' ',' ',' ',2,0x60,0x29}};
unsigned char code PY_index_w[][8]={
                    {'a',' ',' ',' ',' ',1,0x93,0x29},
  				    {'a','i',' ',' ',' ',2,0xa8,0x29},
  				    {'a','n',' ',' ',' ',2,0xaf,0x29},
  				    {'a','n','g',' ',' ',3,0xe8,0x29},
  				    {'e','i',' ',' ',' ',2,0x05,0x2a},
  				    {'e','n',' ',' ',' ',2,0x80,0x2a},
  				    {'e','n','g',' ',' ',3,0x9f,0x2a},
  				    {'o',' ',' ',' ',' ',1,0xaa,0x2a},
  				    {'u',' ',' ',' ',' ',1,0xcd,0x2a}};
unsigned char code PY_index_x[][8]={
                    {'i',' ',' ',' ',' ',1,0x3e,0x2b},
  				    {'i','a',' ',' ',' ',2,0xd5,0x2b},
  				    {'i','a','n',' ',' ',3,0x00,0x2c},
  				    {'i','a','n','g',' ',4,0x61,0x2c},
  				    {'i','a','o',' ',' ',3,0x9e,0x2c},
  				    {'i','e',' ',' ',' ',2,0xd9,0x2c},
  				    {'i','n',' ',' ',' ',2,0x28,0x2d},
  				    {'i','n','g',' ',' ',3,0x49,0x2d},
  				    {'i','o','n','g',' ',4,0x76,0x2d},
  				    {'i','u',' ',' ',' ',2,0x87,0x2d},
  				    {'u',' ',' ',' ',' ',1,0xaa,0x2d},
  				    {'u','a','n',' ',' ',3,0xef,0x2d},
  				    {'u','e',' ',' ',' ',2,0x24,0x2e},
  				    {'u','n',' ',' ',' ',2,0x3d,0x2e}};
unsigned char code PY_index_y[][8]={
                    {'a',' ',' ',' ',' ',1,0x7a,0x2e},
  				    {'a','n',' ',' ',' ',2,0xb5,0x2e},
  				    {'a','n','g',' ',' ',3,0x36,0x2f},
  				    {'a','o',' ',' ',' ',2,0x69,0x2f},
  				    {'e',' ',' ',' ',' ',1,0xac,0x2f},
  				    {'i',' ',' ',' ',' ',1,0xdd,0x2f},
  				    {'i','n',' ',' ',' ',2,0xb0,0x30},
  				    {'i','n','g',' ',' ',3,0xf3,0x30},
  				    {'o',' ',' ',' ',' ',1,0x42,0x31},
  				    {'o','n','g',' ',' ',3,0x47,0x31},
  				    {'o','u',' ',' ',' ',2,0x7a,0x31},
  				    {'u',' ',' ',' ',' ',1,0xcd,0x31},
  				    {'u','a','n',' ',' ',3,0x86,0x32},
  				    {'u','e',' ',' ',' ',2,0xcb,0x32},
  				    {'u','n',' ',' ',' ',2,0xea,0x32}};
unsigned char code PY_index_z[][8]={
                    {'a',' ',' ',' ',' ',1,0x19,0x33},
  				    {'a','i',' ',' ',' ',2,0x28,0x33},
  				    {'a','n',' ',' ',' ',2,0x3b,0x33},
  				    {'a','n','g',' ',' ',3,0x52,0x33},
  				    {'a','o',' ',' ',' ',2,0x61,0x33},
  				    {'e',' ',' ',' ',' ',1,0x80,0x33},
  				    {'e','i',' ',' ',' ',2,0x9b,0x33},
  				    {'e','n',' ',' ',' ',2,0x9e,0x33},
  				    {'e','n','g',' ',' ',3,0xa3,0x33},
  				    {'h','a',' ',' ',' ',2,0xb4,0x33},
  				    {'h','a','i',' ',' ',3,0xe9,0x33},
  				    {'h','a','n',' ',' ',3,0xfe,0x33},
  				    {'h','a','n','g',' ',4,0x2d,0x34},
  				    {'h','a','o',' ',' ',3,0x5c,0x34},
  				    {'h','e',' ',' ',' ',2,0x81,0x34},
  				    {'h','e','n',' ',' ',3,0xaa,0x34},
  				    {'h','e','n','g',' ',4,0xeb,0x34},
  				    {'h','i',' ',' ',' ',2,0x18,0x35},
  				    {'h','o','n','g',' ',4,0xb7,0x35},
  				    {'h','o','u',' ',' ',3,0xda,0x35},
  				    {'h','u',' ',' ',' ',2,0x07,0x36},
  				    {'h','u','a',' ',' ',3,0x68,0x36},
  				    {'h','u','a','i',' ',4,0x6d,0x36},
  				    {'h','u','a','n',' ',4,0x70,0x36},
  				    {'h','u','a','n','g',5,0x87,0x36},
  				    {'h','u','i',' ',' ',3,0x9c,0x36},
  				    {'h','u','n',' ',' ',3,0xb1,0x36},
  				    {'h','u','o',' ',' ',3,0xba,0x36},
  				    {'i',' ',' ',' ',' ',1,0xe7,0x36},
  				    {'o','n','g',' ',' ',3,0x32,0x37},
  				    {'o','u',' ',' ',' ',2,0x47,0x37},
  				    {'u',' ',' ',' ',' ',1,0x5a,0x37},
  				    {'u','a','n',' ',' ',3,0x71,0x37},
  				    {'u','i',' ',' ',' ',2,0x7c,0x37},
  				    {'u','n',' ',' ',' ',2,0x89,0x37},
  				    {'u','o',' ',' ',' ',2,0x94,0x37}};
unsigned int code PY_Index_List[23][3]={{'a',sizeof(PY_index_a)/8,PY_index_a},
                                        {'b',sizeof(PY_index_b)/8,PY_index_b},
                                        {'c',sizeof(PY_index_c)/8,PY_index_c},
                                        {'d',sizeof(PY_index_d)/8,PY_index_d},
                                        {'e',sizeof(PY_index_e)/8,PY_index_e},
                                        {'f',sizeof(PY_index_f)/8,PY_index_f},
                                        {'g',sizeof(PY_index_g)/8,PY_index_g},
                                        {'h',sizeof(PY_index_h)/8,PY_index_h},
                                        {'j',sizeof(PY_index_j)/8,PY_index_j},
                                        {'k',sizeof(PY_index_k)/8,PY_index_k},
                                        {'l',sizeof(PY_index_l)/8,PY_index_l},
                                        {'m',sizeof(PY_index_m)/8,PY_index_m},
                                        {'n',sizeof(PY_index_n)/8,PY_index_n},
                                        {'o',sizeof(PY_index_o)/8,PY_index_o},
                                        {'p',sizeof(PY_index_p)/8,PY_index_p},
                                        {'q',sizeof(PY_index_q)/8,PY_index_q},
                                        {'r',sizeof(PY_index_r)/8,PY_index_r},
                                        {'s',sizeof(PY_index_s)/8,PY_index_s},
                                        {'t',sizeof(PY_index_t)/8,PY_index_t},
                                        {'w',sizeof(PY_index_w)/8,PY_index_w},
                                        {'x',sizeof(PY_index_x)/8,PY_index_x},
                                        {'y',sizeof(PY_index_y)/8,PY_index_y},
                                        {'z',sizeof(PY_index_z)/8,PY_index_z}};
///////////////////////////////////////////////////////////////////////////////
//根据输入的拼音组合计算出:
//函数说明:用全拼方法输入的字母序列(如"yang")及长度(4)固定保存在sPinyinList_0
//    结构中,sPinyinList_0.uArray中保存字母序列(如"yang"),sPinyinList_0.uLen
//    中保存长度(4);该函数根据这两个数据计算同音"yang"字的起始地址距离首地址的
//    偏移量。
//参数:  无
//返回值:正常情况下返回汉字在字符表中的相对首地址的偏移量(声韵母合法)
//        0xffff-没有声母或声韵母组合不正确
///////////////////////////////////////////////////////////////////////////////                                     
unsigned int CalcPinyinOffset(void){
    unsigned char i,j;
    unsigned char code *pPY;
    
    if(!sQuanPinInfo.uLen)         {return 0xffff;}
    if(sQuanPinInfo.uArray[0]=='i'){return 0xffff;}
    if(sQuanPinInfo.uArray[0]=='u'){return 0xffff;}    
    if(sQuanPinInfo.uArray[0]=='v'){return 0xffff;}
    //B13toB18=0;
    for(i=0;i<23;i++)                                           //查找声母位置
    {                                          
        if(sQuanPinInfo.uArray[0]==PY_Index_List[i][0])         //查找声母位置
        {
            pPY=(unsigned char code *)PY_Index_List[i][2];      //找到声母所在起始位置 
            if(sQuanPinInfo.uLen==1)                            //无韵母
            {                           
                if(*(pPY+5)==0){return (*(pPY+7))*256+*(pPY+6);}//如果在列表中确实没有韵母
                else{return 0xffff;}                            //列表中有韵母,输入不完整
            }
            else                                                //有韵母
            {                                               
                for(j=0;j<PY_Index_List[i][1];j++)              //找韵母
                {             
                    if(memcmp(pPY+8*j,sQuanPinInfo.uArray+1,sQuanPinInfo.uLen-1)==0)//找到韵母相同的位置
                    {
                        if((*(pPY+8*j+5))==(sQuanPinInfo.uLen-1))//韵母数量相同
                        {
                            return (*(pPY+8*j+7))*256+(*(pPY+8*j+6));
                        }
                        else                                    //韵母数量不同,拼写不完整
                        {
						    return 0xffff;
                        }                    
                    }
                } 
            }
        }    
    }
    
    return 0xffff;
}

⌨️ 快捷键说明

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