?? t9.c
字號:
else if(key[5]==0) //確定
{m=set_name_struct.count; //保存當前漢字計數
lcd_clear_line(1);
lcd_clear_line(3);
lcd_T9_hz_display(ok[4],m,py,hz,page); //進入已選擇好的漢字顯示
set_pinyin_struct.count=0; //拼音按鍵計數歸零 回到初始狀態
timer1_init(TIME_4S);
set_name_struct.count++;// 漢字選擇計數加1,進入下一狀態
py=0;
page=0;
hz=0;
return;
}
break;
case 6:
key[6]=kk;
page=0;
if(key[6]>0&&key[6]<9) //字母鍵無效
{ //set_pinyin_struct.count++;
}
else if(key[6]>=9&&key[6]<=15) //功能鍵
{
switch(key[6])
{case 9: //拼音選擇
py+=1; //計數加1
page=0;
hz=0;
lcd_T9_display(ok[5],5,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[5],5,py,hz,page); //顯示拼音漢字
break;
case 13: //清除
lcd_clear_line(1);
py=0;
hz=0;
lcd_T9_display(ok[4],4,py,hz,page);
//顯示上一次的情況
set_pinyin_struct.count--; //拼音按鍵計數減去1,返回上一狀態
break;
case 14: //上翻頁
page-=8;//計數減去8
if(page<0)//若小于零則歸零
{page=0;}
lcd_T9_display(ok[5],5,py,hz,page); //顯示拼音漢字
break;
case 15: //下翻頁
page+=8; //計數加8
lcd_T9_display(ok[5],5,py,hz,page); //顯示拼音漢字
break;
}
}
else if(key[5]==0) //確定
{m=set_name_struct.count;//保存當前漢字選擇計數值
lcd_clear_line(1);
lcd_clear_line(3);
lcd_T9_hz_display(ok[5],m,py,hz,page); //進入選擇好的漢字顯示
set_pinyin_struct.count=0; //拼音按鍵計數歸零,回到初始狀態
timer1_init(TIME_4S);
set_name_struct.count=0; //漢字選擇計數歸零,進入下一次狀態
py=0;
page=0;
hz=0;
return;
}
break;
}
}
void lcd_T9_display(char k_y,int c_t,char p_y,char h_z,char p_g)
{
WORD qmh,qml;
char m,n,h,kkk;
WORD d,p;
WORD b[6][6];
BYTE a[6][6];
if(key_0>=0&&key_0<57)
{ qmh=hzk_1[k_y][7+2*p_y];
qml=hzk_1[k_y][8+2*p_y];
m=hzk_1[k_y][6];
}
if(key_0>=57&&key_0<106)
{ qmh=hzk_2[k_y-57][7+2*p_y];
qml=hzk_2[k_y-57][8+2*p_y];
m=hzk_2[k_y-57][6];
}
if(key_0>=106&&key_0<167)
{ qmh=hzk_3[k_y-106][7+2*p_y];
qml=hzk_3[k_y-106][8+2*p_y];
m=hzk_3[k_y-106][6];
}
if(key_0>=167&&key_0<222)
{ qmh=hzk_4[k_y-167][7+2*p_y];
qml=hzk_4[k_y-167][8+2*p_y];
m=hzk_4[k_y-167][6];
}
p_y=p_y%m;
d=qmh/16;
p=p&0x0fff;
p=p|(d<<12);
d=qmh%16;
p=p&0xf0ff;
p=p|(d<<8);
d=qml/16;
p=p&0xff0f;
p=p|(d<<4);
d=qml%16;
p=p&0xfff0;
p=p|d;
p=p+0xa0a0;
for(h=0;h<8;h++)
{lcd_Display_Lib_Chinese(0x98+h,p+h+p_g);
}
lcd_Display_Lib_Chinese(0x88,p+h_z+p_g);
for(n=0;n<m;n++)
{ for(kkk=1;kkk<=c_t+1;kkk++)
{
if(key_0>=0&&key_0<57)
{ b[n][kkk-1]=hzk_1[k_y][18+n*(c_t+1)+kkk];
}
else if(key_0>=57&&key_0<106)
{ b[n][kkk-1]=hzk_2[k_y-57][18+n*(c_t+1)+kkk];
}
else if(key_0>=106&&key_0<167)
{ b[n][kkk-1]=hzk_3[k_y-106][18+n*(c_t+1)+kkk];
}
else //if(key_0>=167&&key_0<222)
{ b[n][kkk-1]=hzk_4[k_y-167][18+n*(c_t+1)+kkk];
}
switch(b[n][kkk-1])
{ case 1:a[n][kkk-1]='a';break;
case 2:a[n][kkk-1]='b';break;
case 3:a[n][kkk-1]='c';break;
case 4:a[n][kkk-1]='d';break;
case 5:a[n][kkk-1]='e';break;
case 6:a[n][kkk-1]='f';break;
case 7:a[n][kkk-1]='g';break;
case 8:a[n][kkk-1]='h';break;
case 9:a[n][kkk-1]='i';break;
case 10:a[n][kkk-1]='j';break;
case 11:a[n][kkk-1]='k';break;
case 12:a[n][kkk-1]='l';break;
case 13:a[n][kkk-1]='m';break;
case 14:a[n][kkk-1]='n';break;
case 15:a[n][kkk-1]='o';break;
case 16:a[n][kkk-1]='p';break;
case 17:a[n][kkk-1]='q';break;
case 18:a[n][kkk-1]='r';break;
case 19:a[n][kkk-1]='s';break;
case 20:a[n][kkk-1]='t';break;
case 21:a[n][kkk-1]='u';break;
case 22:a[n][kkk-1]='v';break;
case 23:a[n][kkk-1]='w';break;
case 24:a[n][kkk-1]='x';break;
case 25:a[n][kkk-1]='y';break;
case 26:a[n][kkk-1]='z';break;
default: break;
}
if(n==p_y)
{a[n][kkk-1]-=0x20;}
}
}
switch(c_t)
{
case 0://拼音字母為1的最大組合數為4
for(n=0;n<m;n++)
{lcd_Display_num_half_wide(0x90+n,a[n][0],0x20);
}
break;
case 1://拼音字母為2個的最大組合數為5///////////////////
if(m<5)//當字母組合小于5個時空一個字符顯示拼音
{for(n=0;n<m;n++)
{lcd_Display_num_half_wide(0x90+2*n,a[n][0],a[n][1]);
lcd_Display_num_half_wide(0x90+2*n+1,0x20,0x20);
}
}
else //當字母組合為5個時候空半個字符顯示拼音
{//for(n=0;n<5;n++)
lcd_Display_num_half_wide(0x90,a[0][0],a[0][1]);
lcd_Display_num_half_wide(0x91,0x20,a[1][0]);
lcd_Display_num_half_wide(0x92,a[1][1],0x20);
lcd_Display_num_half_wide(0x93,a[2][0],a[2][1]);
lcd_Display_num_half_wide(0x94,0x20,a[3][0]);
lcd_Display_num_half_wide(0x95,a[3][1],0x20);
lcd_Display_num_half_wide(0x96,a[4][0],a[4][1]);
}
break;
case 2://拼音字母為3個的最大組合數為6////////////////////
if(m<5)//當字母組合小于5個時連續顯示前4個拼音組合
{for(n=0;n<m;n++)
{lcd_Display_num_half_wide(0x90+2*n,a[n][0],a[n][1]);
lcd_Display_num_half_wide(0x90+2*n+1,a[n][2],0x20);
}
}
else if(m==5)//當字母組合等于5個時 根據拼音選擇鍵確定顯示///////////////
{ if(p_y<4)//如果拼音選擇為小于等于4個的情況下按前四個顯示
{for(n=0;n<4;n++)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -