国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

應(yīng)用于低性能單片機的拼音輸入法設(shè)計與實現(xiàn)

2020-12-29 02:30:20李麗英劉明德
電腦與電信 2020年10期
關(guān)鍵詞:字庫輸入法首字母

王 江 李麗英 劉明德

(江西機電職業(yè)技術(shù)學院,江西 南昌 330013)

關(guān)鍵字:拼音輸入法;低性能單片機;軟件處理

1 引言

隨著嵌入式系統(tǒng)應(yīng)用領(lǐng)域的不斷拓展[1],越來越多的嵌入式設(shè)備要求實現(xiàn)中文漢字的輸入與顯示。目前應(yīng)用于智能終端最為廣泛的是美國特捷通訊的T9輸入法,其次有Motorola的iTAP輸入法和Ericson的字能輸入法等[2]。盡管市場上還有許多輸入法,且它們的功能也十分強大,但是它們大多對硬件要求較高,幾乎不支持沒有操作系統(tǒng)的嵌入式產(chǎn)品。而在低端市場,單片機往往需要花費大部分資源來完成輸入法功能,這不免導致系統(tǒng)主功能缺少足夠的資源可供調(diào)用,出現(xiàn)頭重腳輕的狀況。因此,研究一種實用且低成本的中文輸入法是非常有市場前景和必要性的。

2 設(shè)計思路

單片機中的輸入法的傳統(tǒng)思路是:選用較大容量的EEPROM存放漢字字庫,漢字內(nèi)碼則裝入FLASH中,這樣雖然可以實現(xiàn)輸入法功能,但是其造成了主控芯片的資源大量浪費,F(xiàn)LASH不能用來存放更多的系統(tǒng)功能代碼。而后,雖然出現(xiàn)了帶字庫的LCD,但其做法大都是選擇具有較大程序存儲器的微處理器,以便存儲拼音到字型碼的映射表,這樣雖然可以解決FLASH不足的問題,但是成本大幅提高,產(chǎn)品競爭力將隨之下降。本文的設(shè)計思路是:采用已附帶漢字字庫的點陣液晶,直接略去字庫所需的內(nèi)存;然后將漢字內(nèi)碼保存到EEPROM,而內(nèi)碼大小遠小于相應(yīng)的字庫內(nèi)容,在此處我們可以節(jié)省出大量空間。主控只需要在拼音與內(nèi)碼之間建立一種對應(yīng)關(guān)系,最后通過鍵盤選擇要輸入的漢字并顯示在液晶屏上。

3 硬件設(shè)計

本系統(tǒng)按功能可劃分為輸入、處理、存儲和輸出四個部分[3]。對于拼音輸入法來說,至少需要實現(xiàn)26 個字母鍵、10個數(shù)字鍵、ESC 鍵、OK 鍵、MENU 鍵、MODE 鍵、UP 鍵和DOWN 鍵,可以自制或選擇標準鍵盤。處理器選用NXP 的LPC2103 芯片,它的最高工作速度可達70MHz,擁有32KB的片內(nèi)FLASH 程序存儲器和8K 的片內(nèi)SRAM[4],能夠滿足大部分嵌入式系統(tǒng)的需求[5],特別適用于訪問控制和指紋打卡機等小型應(yīng)用中,如果在該芯片上開發(fā)輸入法,作者經(jīng)過實驗測試得到以下結(jié)論:使用傳統(tǒng)方法時片內(nèi)FLASH 和RAM均存在內(nèi)存不夠的問題,改進方案是去掉字模部分,引入帶字模的液晶顯示器,這樣就節(jié)約了大量的主控芯片的FLASH空間,但由于字庫內(nèi)碼仍然存放在RAM中,LPC2103的RAM依然不足,所以這里采用24c256作為存儲器,搭配以ST7920為控制器的液晶,最后發(fā)現(xiàn)完成輸入法功能后,系統(tǒng)僅使用了主控3KByte FALSH,4KByte RAM,使得存儲量小的主控也能勝任調(diào)整后的拼音輸入法。

4 軟件設(shè)計

4.1 自定義漢字內(nèi)碼表的設(shè)計

為了提高顯示效率,避免每次查找漢字內(nèi)碼時對整個碼表進行遍歷,本文對漢字碼表的存儲地址做了一些調(diào)整,將碼表按照字母A-E、F-K、L-P、Q-W、X-Z 分成5 個碼段,處理器可以根據(jù)拼音首字母進行分段查找,每段包含的漢字內(nèi)碼大小都是1Kbyte~2KByte范圍,所以在EEPROM中為每段分別分配了2Kbyte內(nèi)存。每個拼音讀法之間以空格(空格的內(nèi)碼是0x20 0x20)隔開,這樣在查找拼音的時候,當遇到0x20 0x20即表示該拼音讀法結(jié)束。

4.2 鍵盤編碼

鍵盤設(shè)計模仿手機T9鍵盤方式,布局如圖1所示。

由圖1可知,按鍵功能存在較多的復用情況,在輸入拼音過程中,將得到不同的結(jié)果,所以需要對鍵值編碼進行特殊處理。比如MODE 鍵用來區(qū)分當前輸入的模式是拼音還是數(shù)字字母,ESC 鍵在不同的狀態(tài)下有刪除和退出的功能等。舉例說明,用戶想輸入拼音“wang”,在鍵盤上順序按下鍵“9264”,把這4 個鍵上的字母進行排列組合會得到108 種拼音,其中合法的只有3種,分別是“wang”、“yang”和“zang”[6],我們需要篩選出合法的拼音,這里每組合出一種可能的拼音,系統(tǒng)立即將該拼音按首字母的碼段與其對應(yīng)的拼音集合進行比較,看該拼音是否合法(即與集合中拼音相同或與這些拼音的前幾個字母相同),若合法,則存儲起來,繼續(xù)對比,直到把所有情況列舉完,然后顯示到LCD上。最后使用按鍵“UP”和“DOWN”來選擇目標拼音,并記錄下該拼音在其對應(yīng)的拼音集合中的位置,留待到EEPROM 中讀取漢字內(nèi)碼時使用。鍵盤相應(yīng)流程如圖2所示。

依據(jù)上述思路,得到鍵盤碼后,應(yīng)立即從所有排列組合中篩選出合法的拼音。從圖1中可以看到,每個字母/數(shù)字鍵上都不只1 個字母,所以在整個篩選過程中,將組合出(假設(shè)輸入5 個鍵,每個鍵上的字母數(shù)分別為a,b,c,d,e)種情況,為加快備選拼音與拼音集合的比對速率,程序把拼音集合按首字母分成5段,并以常量數(shù)組的形式保存在FLASH中。

4.3 拼音輸入碼到內(nèi)碼轉(zhuǎn)換

拼音與其對應(yīng)的漢字內(nèi)碼在存儲中具有很好的對應(yīng)關(guān)系。拼音集合按首字母分為五段,以數(shù)組的形式存放在FLASH 中,目標拼音可以迅速地在數(shù)組中找到自己在集合中的序號(數(shù)組下標)N,而漢字內(nèi)碼在EEPROM中的存儲順序跟拼音集合的拼音順序是一致的,所以內(nèi)碼表中第N個空格(空格的內(nèi)碼是0x20 0x20)和第N+1個空格位置之間的內(nèi)容就是目標拼音對應(yīng)的漢字內(nèi)碼。如表1所示。

4.4 漢字顯示

ST7920控制器系列中文圖像液晶模塊由ST7920控制驅(qū)動器和128*64 點陣的液晶顯示器組成。該控制器提供8 位并行接口、4位串行接口可供選擇,可以顯示數(shù)字、字母、中文字型及自定義圖形[7],具有64*16位字符顯示緩存和15*16位總共240 點的ICON 緩存,2M 位的中文字型ROM(CGROM),可提供8192個16*16點陣的中文字型,16K位半寬字型ROM(HCGROM),提供126 個16*8 點陣的西文字型[8]。這些特點大大彌補了低端單片機在存儲空間和控制上的不足。由于LCD自帶漢字字模,所以主控芯片無須執(zhí)行內(nèi)碼到字模的轉(zhuǎn)換,只要將LCD設(shè)置為顯示漢字模式,直接發(fā)送內(nèi)碼到顯示控制器,即能看到漢字顯示在屏幕上了。

5 結(jié)束語

本文設(shè)計的精簡化拼音輸入法方案,同以往的設(shè)計相比,解決了小容量FLASH 的主控芯片較難實現(xiàn)拼音輸入法的問題,充分解放了主控的存儲壓力和內(nèi)碼到字模轉(zhuǎn)換時的運算壓力。同時,拼音按照首字母分成5個碼段,大大提高了查找內(nèi)碼的效率。目前,該輸入法已在筆者設(shè)計的指紋打卡機中成功應(yīng)用。

表1 拼音碼與內(nèi)碼轉(zhuǎn)換關(guān)系

猜你喜歡
字庫輸入法首字母
要命的輸入法
No.2 喜茶聯(lián)合漢儀字庫推出微型書和書簽
某型號產(chǎn)品的字庫遷移優(yōu)化設(shè)計
電子世界(2018年7期)2018-04-26 08:51:35
新目標英語八年級(上)Unit5 STEP BY STEP隨堂通
新目標英語八年級(上)Unit4 STEP BY STEP隨堂通
Unit 12 STEP BY STEP 隨堂通
Unit 7 STEP BY STEP 隨堂通Section A
百度被訴侵犯商標權(quán)和不正當競爭
相同字庫條件下激光打印文件特征的變化規(guī)律和特點
再議字庫知識產(chǎn)權(quán)保護
特克斯县| 宜春市| 全州县| 盈江县| 东莞市| 巴林右旗| 抚松县| 宝坻区| 潍坊市| 郁南县| 杭锦旗| 河池市| 吉隆县| 台东县| 安福县| 平顶山市| 德庆县| 昌邑市| 年辖:市辖区| 通榆县| 漳平市| 义乌市| 云安县| 浑源县| 阿克苏市| 锦州市| 彰化市| 遵义市| 阿鲁科尔沁旗| 桃园市| 高密市| 新和县| 山丹县| 沙洋县| 赫章县| 五寨县| 无棣县| 舞阳县| 西平县| 阳西县| 巴彦县|