資料介紹
引言T9輸入法全名為智能輸入法,由美國特捷通訊(Tegic Communications)軟件公司開發(fā),是目前小型嵌入式人機(jī)交互設(shè)備中常用的文字輸入法,可以直觀、簡捷、快速地輸入簡短文字。 在研制基于STM32F107VCT6(以下簡稱STM32)芯片的人機(jī)交互設(shè)備時(shí),需要輸入文字(主要是漢字)進(jìn)行人機(jī)交互,但是可用的鍵盤已定型固化而且按鍵極其有限(僅有7個(gè))。根據(jù)T9輸 入法的基本原理,研究了一種利用有限鍵盤資源實(shí)現(xiàn)輸入漢、英文字的方案。1 總體設(shè)計(jì)方案硬件由4部分組成:中心控制芯片STM32F107VCT6、驅(qū)動(dòng)芯片SSD1963QL9AU315AF控制的7寸480×240像素的TFT顯示屏、預(yù)裝中文字庫容量為64 Mb的W25Q64的FLASH芯片、簡單的鍵盤。其邏輯組成如圖1所示。程序的功能實(shí)現(xiàn)方面主要由4個(gè)功能模塊組成:STM32F107VCT6的系統(tǒng)驅(qū)動(dòng)程序、TFT屏幕驅(qū)動(dòng)和顯示程序、按鍵控制程序、T9輸入法程序。本文的總體設(shè)計(jì)方案是外部鍵盤輸入、T9算法、存儲(chǔ)并顯示這3部分通過與STM32控制芯片的交互,實(shí)現(xiàn)文字的輸入、顯示與存儲(chǔ)。系統(tǒng)開始工作前先將點(diǎn)陣字庫文件存放到W25Q64芯片的FLASH中(通過SPI接口實(shí)現(xiàn)與STM32的信息交換)。系統(tǒng)啟動(dòng)后,在TFT顯示屏上繪制T9輸入界面,包括提示信息和拼音輸入表,通過掃描按鍵得到輸入信號(hào),利用T9算法得到存放在W25Q64的FLASH芯片中的字符點(diǎn)陣,并顯示在TFT屏幕上。1.1 硬件設(shè)計(jì)STM32F107VCT6是ST公司設(shè)計(jì)的一種低功耗、低成本的內(nèi)核為32位的CortexM3處理器,其最高工作頻率達(dá)72 MHz,內(nèi)部含有256 KB的FLASH 和64 KB的SRAM,實(shí)時(shí)性好,且具有很強(qiáng)的中斷處理能力[1],目前廣泛應(yīng)用于各種嵌入式和手持設(shè)備中,是本設(shè)計(jì)的核心部件。W25Q64是華邦公司推出的大容量SPI FLASH產(chǎn)品,容量為8 MB,支持標(biāo)準(zhǔn)SPI,最大SPI時(shí)鐘可達(dá)80 MHz[1],在本設(shè)計(jì)中則是利用STM32自帶的SPI來實(shí)現(xiàn)對(duì)外部FLASH W25Q64的讀寫。本設(shè)計(jì)中,鍵盤由四向操縱桿的4個(gè)方向鍵和3個(gè)按鍵組成。文字的輸入需要借助TFT顯示屏上的光標(biāo)位置并結(jié)合鍵盤操作來完成,是一種充分利用現(xiàn)有資源的集約設(shè)計(jì)。其中3個(gè)按鍵分別稱為確定1鍵、確定2鍵、輸入方式切換鍵,其具體功能如表1所列。TFT顯示屏及其顯示芯片在本設(shè)計(jì)中作為外部存儲(chǔ)器使用,對(duì)TFT驅(qū)動(dòng)芯片SSD1963QL9AU315AF的操作進(jìn)行簡單編程,利用指針實(shí)現(xiàn)對(duì)TFT的讀寫操作。由于鍵盤已定型固化而且按鍵有限,因此本設(shè)計(jì)中TFT顯示屏還將結(jié)合鍵盤,模擬T9數(shù)字鍵盤的功能。1.2 程序設(shè)計(jì)本系統(tǒng)中,T9算法的代碼在ST公司自帶的庫文件上編寫。初始化階段先配置好STM32F107VCT6的內(nèi)部時(shí)鐘、SPI、鍵盤、W25Q64、TFT等設(shè)備的接口,并分別初始化啟動(dòng),進(jìn)入到T9輸入法界面。設(shè)計(jì)的T9輸入法包括漢字拼音輸入和英文(含數(shù)字、標(biāo)點(diǎn)、大小寫英文)兩種方式,并且兩種輸入方式可相互切換。T9輸入法實(shí)際上就是一個(gè)查找、判斷輸入數(shù)字串與拼音組合之間的映射關(guān)系過程[4]。本設(shè)計(jì)中采用的是簡單的循環(huán)結(jié)構(gòu)[2],首先通過掃描鍵盤獲得輸入信號(hào),然后判斷是數(shù)字序列還是處理信號(hào);若是數(shù)字序列則再判斷是漢字輸入狀態(tài)還是英文輸入狀態(tài);根據(jù)輸入內(nèi)容不斷修正與拼音碼表及漢字排列表的映射關(guān)系進(jìn)行定位,獲得文字的機(jī)內(nèi)碼并在數(shù)組中存儲(chǔ);根據(jù)機(jī)內(nèi)碼在字庫中獲取相應(yīng)的點(diǎn)陣數(shù)組,在LCD顯示屏上顯示;若鍵盤輸入的是字符處理信號(hào),則需要對(duì)已輸入的數(shù)字序列進(jìn)行相應(yīng)的刪除、選擇等處理。算法的主體結(jié)構(gòu)流程如圖2所示。2 T9輸入法的實(shí)現(xiàn)T9輸入法的實(shí)現(xiàn)過程可看作是根據(jù)鍵盤輸入信號(hào)查找拼音組合,進(jìn)而確定相應(yīng)漢字的過程,其中難點(diǎn)在于數(shù)字串到拼音的映射往往是多對(duì)多的映射關(guān)系,而拼音到同音的漢字排列表是一對(duì)多的映射關(guān)系。因此為了理清T9輸入法的基本映射原理,使文字的輸入過程更加明晰,可以將T9輸入法代碼從邏輯上分為3部分:拼音輸入與漢字查找的數(shù)據(jù)結(jié)構(gòu)(即碼表設(shè)計(jì))、碼表的查找過程、界面顯示設(shè)計(jì)。2.1 碼表設(shè)計(jì)中的重要數(shù)據(jù)結(jié)構(gòu)在T9輸入法中,采用漢語拼音的漢字輸入方式比較復(fù)雜。在輸入過程中,首先需要獲得正確組合的數(shù)字序列,根據(jù)數(shù)字序列找到對(duì)應(yīng)的拼音碼表進(jìn)行初步定位,再根據(jù)該拼音碼在漢字庫中找到對(duì)應(yīng)的漢字,然后根據(jù)漢字的機(jī)內(nèi)碼到漢字字庫中查找漢字的點(diǎn)陣數(shù)組,這一過程稱為“碼表查找”。從保證碼表查找過程的簡捷、高效這一意義上講,碼表的設(shè)計(jì)是碼表查找的關(guān)鍵[3]。在T9算法的碼表設(shè)計(jì)里用到兩種數(shù)據(jù)結(jié)構(gòu),即拼音索引數(shù)據(jù)結(jié)構(gòu)和漢字字模數(shù)據(jù)結(jié)構(gòu)。2.1.1 拼音索引數(shù)據(jù)結(jié)構(gòu)本文拼音索引的數(shù)據(jù)結(jié)構(gòu)是一個(gè)包括輸入數(shù)字序列、拼音、拼音碼表的結(jié)構(gòu)體,這三者構(gòu)成一個(gè)完整的三級(jí)映射關(guān)系。其定義如下:typedef struct {u8 *py_input;//輸入的數(shù)字序列u8 *py;//數(shù)字序列對(duì)應(yīng)的拼音u8 *pymb;//拼音碼表}py_index;其中具體的拼音索引表(部分)如下所示:Const py_indexpy_index_li[] ={{"2","a",(u8*)PY_mb_a},{"2","b",(u8*)PY_mb_b},{"2","c",(u8*)PY_mb_c},……{"2264","bang",(u8*)PY_mb_bang},{"2264","cang",(u8*)PY_mb_cang},……} //拼音索引表與拼音碼表對(duì)應(yīng)的漢字排列表(部分)如下所示:const u8 PY_mb_a[]={"啊阿腌吖錒厑嗄錒呵腌"};const u8 PY_mb_b[]={"不把被百比"};const u8 PY_mb_c[]={"才出吃次成"};……const u8 PY_mb_bang[]={"邦幫梆榜膀綁棒磅蚌鎊傍謗蒡浜"};const u8 PY_mb_cang[]={"蒼艙倉滄藏傖"};const u8 PY_mb_zhu[]={"助主住注祝竹珠蛛朱株豬諸誅逐燭煮拄矚囑著柱蛀……"};const u8 PY_mb_xiu[]={"臭宿休修羞朽嗅銹秀袖繡咻溴貅饈岫庥鵂髹"};……//拼音漢字排列表2.1.2 漢字字模數(shù)據(jù)結(jié)構(gòu)漢字字模數(shù)據(jù)結(jié)構(gòu)是一個(gè)包括漢字的機(jī)內(nèi)碼(兩個(gè)字節(jié))、點(diǎn)陣碼的結(jié)構(gòu)體,其定義如下:typedef struct {//漢字字模數(shù)據(jù)結(jié)構(gòu)unsigned char Index[2];//漢字內(nèi)碼索引unsigned char Msk[32];//點(diǎn)陣碼數(shù)據(jù)}FNT_GB16;漢字的點(diǎn)陣碼數(shù)據(jù)是橫向取模,根據(jù)所用顯示屏特性,數(shù)據(jù)排列方式為從左到右、從上到下。以漢字“啊”為例,如下所示:const FNT_GB16 GBHZ_16[] = {//宋體12,對(duì)應(yīng)的點(diǎn)陣為:寬×高=16×16"啊",0x00,0x00,0x0E,0xFC,0xEA,0x08,0xAA,0x08,0xAA,0xE8,0xAA,0xA8,0xAC,0xA8,0xAA,0xA8,0xAA,0xA8,0xAA,0xA8,0xEA,0xE8,0xAA,0xA8,0x0C,0x08,0x08,0x08,0x08,0x28,0x08,0x10,……"幫",0x08,0x00,0x08,0x7C,0xFF,0x48,0x08,0x50,0x7E,0x48,0x08,0x44,0xFF,0x54,0x10,0x48,0x20,0x40,0x41,0x00,0xBF,0xF8,0x21,0x08,0x21,0x08,0x21,0x28,0x21,0x10,0x01,0x00,"助",0x00,0x20,0x7C,0x20,0x44,0x20,0x44,0x20,0x44,0xFC,0x7C,0x24,0x44,0x24,0x44,0x24,0x7C,0x24,0x44,0x24,0x44,0x24,0x44,0x44,0x4E,0x44,0xF0,0x84,0x01,0x28,0x02,0x10,……};2.2T9 算法的查找流程與實(shí)現(xiàn)在本設(shè)計(jì)中,一個(gè)輸入事件就是輸入一串外部信號(hào),通過軟硬件的交互處理,在相應(yīng)的文本框中顯示與外部輸入信號(hào)對(duì)應(yīng)的文字。由于本設(shè)計(jì)中鍵盤有限,相同的操作在不同的環(huán)境下可能有不同的意義,因此為了更進(jìn)一步明晰每一個(gè)外部信號(hào)的作用,輸入界面加入了其他成型的輸入設(shè)備中不常出現(xiàn)的“數(shù)字”、“當(dāng)前索引”、“匹配數(shù)”等提示信息。圖3是本設(shè)計(jì)T9拼音輸入下輸入“互助相幫”文字過程中的顯示界面。py查找流程是一個(gè)隨著外部信號(hào)的輸入而不斷變化的動(dòng)態(tài)過程,以輸入漢字“幫”為例,將T9輸入法的拼音輸入漢字的過程簡略概括如下:首先掃描鍵盤,結(jié)合光標(biāo)在TFT顯示屏的位置,通過右鍵結(jié)合確定鍵2輸入數(shù)字串“2264”,根據(jù)數(shù)字串到py_index型自定義數(shù)據(jù)結(jié)構(gòu)py_index3[]中搜索相應(yīng)的py和pymb,其中與“2264”對(duì)應(yīng)的py有兩種,即“bang”和“cang”,而其分別對(duì)應(yīng)的同音漢字也有兩組,具體情形參考2.1.1小節(jié)中的內(nèi)容。在本設(shè)計(jì)自定義的拼音索引表py_index_li[]中,拼音順序按英文字母表順序排列。拼音“bang”的位置比“cang”靠前,是第一個(gè)匹配拼音(圖3中“當(dāng)前索引”為1),即當(dāng)前的“拼音匹配”。將當(dāng)前“拼音匹配”“bang”音的漢字存放到數(shù)組u8 buf_store[]中,并將前8個(gè)漢字,即“邦幫梆榜膀綁棒磅”分別按1至8的順序排列顯示(參見圖3)。掃描按鍵,如果是左鍵按下,則將“當(dāng)前索引”修改為2,“拼音匹配”修改為“cang”,將拼音匹配“cang”音的漢字存放到數(shù)組u8 buf_store[]中,并將其前8個(gè)漢字按順序排列顯示。若是光標(biāo)1結(jié)合確定2鍵按下,即執(zhí)行刪除操作,則數(shù)字序列最后一位被刪去,變?yōu)椤?26”,其py有“ban”、“bao”、“can”、“cao”四種,其中“ban”為第一個(gè)匹配拼音,并顯示其前8個(gè)漢字。選定拼音后(設(shè)選定“bang”),下一步需要選定漢字。掃描鍵盤,若輸入信號(hào)是確定1鍵按下,則會(huì)將“bang”音的前8個(gè)漢字按順序排列(參見圖3),而“幫”在“bang”音漢字?jǐn)?shù)組{"邦幫梆榜膀綁棒磅……"}中排第2位,則利用右鍵將光標(biāo)移動(dòng)到2的位置,按下確定2鍵,即可利用賦值語句從存儲(chǔ)數(shù)組buf_store[]中取出漢字“幫”的漢字機(jī)內(nèi)碼碼0xB0和0xEF;然后利用“幫”的漢字機(jī)內(nèi)碼到FLASH中存儲(chǔ)的GBHZ_16[]中查找漢字“幫”的顯示點(diǎn)陣,將之顯示到顯示屏上,并存儲(chǔ)其漢字內(nèi)碼到u8 buf_message[]中,從而完成一次完整拼音輸入、漢字查找并顯示的過程。具體過程如圖4所示。英文輸入過程相對(duì)簡單,映射關(guān)系也相對(duì)清晰,可以參考py到pymb一對(duì)多的映射和搜索過程,在此不再贅述。結(jié)語當(dāng)前嵌入式人機(jī)交互設(shè)備在各行業(yè)獲得廣泛應(yīng)用,輸入法是不可或缺的重要組成部分,而商用輸入法的成本較高[5]且具有一定的安全風(fēng)險(xiǎn),因此自行設(shè)計(jì)具備中英文切換功能的輸入法是很有必要的。鑒于此,根據(jù)T9輸入法的基本思想,本文介紹了一個(gè)比較簡單但能滿足基本文字交互要求的輸入法實(shí)現(xiàn)方案。本設(shè)計(jì)方案中所有程序代碼采用C語言編寫,代碼具有較強(qiáng)的可移植性,并可根據(jù)需要添加詞組和聯(lián)想功能,目前本方案己經(jīng)應(yīng)用在數(shù)種型號(hào)的嵌入式人機(jī)交互設(shè)備中。(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 嵌入式linux 中文輸入法,基于嵌入式Linux的漢字輸入法
- 基于ARM9的嵌入式PLC系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 嵌入式設(shè)計(jì)中「超省電」設(shè)備的電源管理資料下載
- 嵌入式ARM9的USB設(shè)計(jì)與實(shí)現(xiàn)資料下載
- 基于嵌入式ARM9的USB設(shè)計(jì)與實(shí)現(xiàn)資料下載
- 體外診斷設(shè)備上的各類嵌入式方案資料下載
- 如何在2KB內(nèi)存的單片機(jī)上實(shí)現(xiàn)的T9中文輸入法詳細(xì)方法和程序說明
- 如何在2KB內(nèi)存的單片機(jī)上實(shí)現(xiàn)的T9中文輸入法
- 嵌入式系統(tǒng)中文輸入法的設(shè)計(jì)方案解析 7次下載
- Pocket PC中漢字輸入法分析與實(shí)現(xiàn) 0次下載
- 基于VxWorks的漢字輸入法實(shí)現(xiàn)
- Pocket PC中漢字輸入法分析與實(shí)現(xiàn) 18次下載
- 數(shù)字五筆輸入法2007破解版免費(fèi)下載 0次下載
- 基于嵌入式Linux的漢字輸入法
- 嵌入式中文輸入法設(shè)計(jì)
- 嵌入式fpga是什么意思 997次閱讀
- 安卓11之下的系統(tǒng)實(shí)現(xiàn)輸入法切換 1448次閱讀
- 嵌入式開發(fā)中串口通訊方案 2253次閱讀
- 如何實(shí)現(xiàn)嵌入式系統(tǒng)遠(yuǎn)程調(diào)試 5082次閱讀
- 基于WEB技術(shù)與嵌入式技術(shù)實(shí)現(xiàn)對(duì)設(shè)備的控制與診斷 612次閱讀
- 嵌入式物聯(lián)網(wǎng)設(shè)備的3種方案 2927次閱讀
- 嵌入式FIFO數(shù)據(jù)傳輸系統(tǒng)詳解 4143次閱讀
- 關(guān)于嵌入式系統(tǒng)以及其在印刷設(shè)備中的解決方案及應(yīng)用淺析 629次閱讀
- 如何在嵌入式Linux中截屏 5909次閱讀
- 基于PXA255開發(fā)板外圍字符設(shè)備的嵌入式Linux字符設(shè)備驅(qū)動(dòng)設(shè)計(jì)與應(yīng)用 1138次閱讀
- 關(guān)于IPSec網(wǎng)絡(luò)安全協(xié)議在嵌入式系統(tǒng)中的應(yīng)用與實(shí)現(xiàn)詳解 1870次閱讀
- 基于嵌入式環(huán)境的WiFi通信設(shè)計(jì)方案詳解 5593次閱讀
- 嵌入式輸入設(shè)備設(shè)計(jì) 1232次閱讀
- 嵌入式輸入設(shè)備設(shè)計(jì)應(yīng)用 478次閱讀
- 基于32位低端嵌入式系統(tǒng)的圖像采集模塊 1411次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費(fèi)下載
- 0.00 MB | 1491次下載 | 免費(fèi)
- 2單片機(jī)典型實(shí)例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實(shí)例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識(shí)別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關(guān)電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費(fèi)
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機(jī)和 SG3525的程控開關(guān)電源設(shè)計(jì)
- 0.23 MB | 4次下載 | 免費(fèi)
- 8基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
- 0.11 MB | 4次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費(fèi)
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費(fèi)
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費(fèi)
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費(fèi)
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費(fèi)
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費(fèi)
- 8開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21539次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537793次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191183次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183277次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138039次下載 | 免費(fèi)
評(píng)論
查看更多