标题: [转帖]单片机实现T9文字输入法电路(源代码+仿真) [打印本页]
作者: zcllom 时间: 2008-10-30 15:52 标题: [转帖]单片机实现T9文字输入法电路(源代码+仿真)
图片附件: [[转帖]单片机实现T9文字输入法电路(源代码+仿真)] g93PE8dc.jpg (2008-10-30 15:33, 117.7 KB) / 下载次数 321
http://bbs.eccn.com/attachment.php?aid=5389&k=588fcf15b938a2037a2934dc2fcfc971&t=1732241501&sid=K1h8H8
作者: zcllom 时间: 2008-10-30 15:59
这个东东出自一个毕业论文:
图片附件: [[转帖]单片机实现T9文字输入法电路(源代码+仿真)] UE3vY23J.jpg (2008-10-30 15:40, 28.26 KB) / 下载次数 304
http://bbs.eccn.com/attachment.php?aid=5390&k=064045e6e4d86abcd9ddc519d63d59a2&t=1732241501&sid=K1h8H8
作者: zcllom 时间: 2008-10-30 16:00
为了能够实现汉字短信的无线收发,本系统加入了中文输入法,汉字采用了12*16的点阵,设计了1000多个汉字,共用了大概50K的代码空间,因而选用64K的单片机正好符合系统设计的要求。
4.4.1 数据结构的设计:
struct t9PY_index
{
char code *t9PY_T9; /*对应的按键输入的数字*/
char code *PY; /*输入的数字对应的拼音*/
char code *PY_mb; /*拼音对应的汉字点阵表*/
};
例如{"948264","zhuang",PY_mb_zhuang},当按键连续按入"948264",对应的拼音为"zhuang",汉字的首地址为PY_mb_zhuang,其实是数组PY_mb_zhuang的数组名,定义如下。
unsigned char code PY_mb_zhuang[]= /*庄桩装壮状幢撞*/
{
/*-- 文字: 庄 --*/
0x00,0xFE,0x02,0x22,0x22,0x22,0xFB,0x22,0x22,0x22,0x02,0x00,0x06,0x01,0x04,0x04,
0x04,0x04,0x07,0x04,0x04,0x04,0x04,0x00,
/*省略*/
};
4.4.2 按键拼音查找表的设计
struct t9PY_index code t9PY_index2[] ={
{"","",PY_mb_a },
{"2","a",PY_mb_a},
{"3","e",PY_mb_e},
{"4","i",PY_mb_a},
{"6","o",PY_mb_o},
{"8","u",PY_mb_a},
{"8","v",PY_mb_a},
/*省略*/
};
4.4.3 算法的设计
当数据结构和拼音查找表设计完成后,就是算法的设计了。
源程序如下:
/********************************************************************
*T9 输入法查找函数
*函数声明:unsigned char *T9PY(char *inputstr,uchar length);
*参数说明:inputstr为字符串的地址,length为字符串的长度
*函数功能:把找到的汉字点阵表的首地址放在数组T9PY_mb中
********************************************************************/
unsigned char *T9PY(char *inputstr,uchar length)
{
struct t9PY_index *cpHZ,*cpHZedge;
unsigned char i;
PY_num=0;
if(*inputstr=='\0')return(0); /*如果输入空字符返回0 */
cpHZ=&(t9PY_index2[0]); /*取得查找表的首地址 */
cpHZedge=t9PY_index2+sizeof(t9PY_index2)/sizeof(t9PY_index2[0]);
/*取得查找表的末地址 */
while(cpHZ < cpHZedge) /*如果没有搜索到末地址则继续 */
{
for(i=0;i<length;i++)
{
if(*(inputstr+i)!=*((*cpHZ).t9PY_T9+i))
/*检查字符串匹配 */
{
break; /*发现字母串不配则退出 */
}
}
if(i==length&&Y_num<=3)
{
T9PY_mb[PY_num]=cpHZ;/*存下搜索到的对应的拼音 */
PY_num++;
}
cpHZ++;
}
if (PY_num>0)
{
p_py=T9PY_mb[0]->Y;
return(T9PY_mb[0]->Y_mb); /*返回拼音对应汉字点阵的地址 */
}
else
{
return(PY_mb_a); /*没有查到则返回拼音’a’的汉字点阵地址 */
}
}
作者: luoman 时间: 2008-10-30 16:01
看看
作者: luoman 时间: 2008-10-30 16:03
我觉得这个设计和手机的比较相似?
不知道改一下能不能用到手机设计上?
作者: zcllom 时间: 2008-10-30 16:04
nFdzcFyh.rar (368.23 KB)
上面的就是:C语言源代码和Proteus仿真下载地址。
附件: [[转帖]单片机实现T9文字输入法电路(源代码+仿真)] nFdzcFyh.rar (2008-10-30 15:44, 368.23 KB) / 下载次数 3000
http://bbs.eccn.com/attachment.php?aid=5391&k=b906d2369664f31f3ecf1b7696f891d7&t=1732241501&sid=K1h8H8
作者: luoman 时间: 2008-10-30 16:05
以前那种老款手机的中文输入法就是用的T9拼音输入法!
作者: zcllom 时间: 2008-10-30 16:05
仿照手机输入法做的,如果再还原成手机,得再加入好多功能模块。
作者: luoman 时间: 2008-10-30 16:06
版主的这个板块比以前火多了 呵呵 恭喜版主
作者: luoman 时间: 2008-10-30 16:08
版主大哥 这个东东一般用在什么地方呢?
作者: admin 时间: 2008-10-30 16:09
论坛版块的人气旺都是版主的努力 我们大家都应该学习 !
向版主致敬!
作者: luoman 时间: 2008-10-30 16:12
论坛这几天怎么老出问题,要不登陆不上,下载东西都麻烦,下载中心有时候也出问题,大的资料不好上传啊!请帮忙看看 。
作者: zcllom 时间: 2008-10-30 16:16
版主大哥 这个东东一般用在什么地方呢?
=======================
我把那个毕业论文传上来你看看。
基于nRF2401的无线组网:
pHF0vuzf.rar (700.32 KB)
附件: [[转帖]单片机实现T9文字输入法电路(源代码+仿真)] pHF0vuzf.rar (2008-10-30 15:57, 700.32 KB) / 下载次数 757
http://bbs.eccn.com/attachment.php?aid=5392&k=94237cda4529e53e4467d9bc5e41f3ed&t=1732241501&sid=K1h8H8
作者: luoman 时间: 2008-10-30 16:17
谢谢版主大哥 学习一下 呵呵
作者: smofx 时间: 2008-11-20 09:53
不错支持一下
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) |
Powered by Discuz! 7.0.0 |