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