摘 要:本項目通過對單片機中文輸入的研究,解決了在單片機上實時輸入、輸出漢字的技術難題。實現了單片機的人機交互功能,使得在單片上輸入漢字更智能化、人性化。通過對單片機中文輸入算法的模塊化設計,提高了軟件的可移植性,為單片機在不同領域的開發提供一個中文輸入、輸出平臺。我們知道字母在計算機內是用ASC碼表示的,同樣,漢字在計算機內的表示是使用內碼。一個ASCII碼字符用一個字節表示,一個漢字的內碼用2個字節表示,分高8位和低8位。漢字的內碼是唯一編碼的,在計算機內我們只要知道了漢字的內碼,即可找到該漢字。為了在單片機上實現漢字的輸入,其關鍵在于拼音檢索算法的實現。
關鍵詞:單片機 中文輸入 編碼 研究
中圖分類號:TP391文獻標識碼:A文章編號:1674-098X(2011)12(b)-0023-01
1 系統總體方案設計
系統總體結構框圖如圖1所示。本項目通過對單片機中文輸入的研究,解決在單片機中不能實時輸入、輸出的技術難題。提高單片機的人機交互功能,使單片機更智能化、人性化。通過對單片機中文輸入模塊化設計和標準國際化的封轉,使整個系統具有更強的可移植性,為后續單片機在不同領域的開發提供一個中文輸入、輸出平臺。在鍵盤設計上,采用PS2標準接口的全鍵盤,采用串行接口占用單片機端口資源少,同時既符合用戶的操作習慣,又能提高漢字的錄入速度。在特定的嵌入式系統中,我們并不需要標準的的漢字字庫。全字庫占用嵌入式系統的存儲資源。在軟件設計中,要求集成的漢字可以按實際需要增添刪減。
2 系統的軟件設計
2.1 拼音的輸入
拼音通過PS2鍵盤輸入,與在PC機上使用拼音輸入法輸入漢字時相同。
2.2 拼音碼表的建立
我們知道字母在計算機內的表示是用ASC碼來表示,同樣,漢字在計算機內的表示是使用內碼。一個ASC碼字符用一個字節表示,一個漢字的內碼用2個字節表示,分高8位和低8位。漢字的內碼是唯一編碼的,在計算機內我們只要知道了漢字的內碼,即可找到該漢字。
為了在單片機上實現漢字的輸入,其關鍵在于如何由拼音來檢索漢字的內碼。為此,我們先根據拼音分來來建立一張拼音碼表:
部分代碼如下:
const uint8 PY_mb_a []={\"阿啊\"};
const uint8 PY_mb_ai []={\"哎哀唉埃挨皚癌矮藹艾愛隘礙\"};
const uint8 PY_mb_an []={\"安氨鞍俺岸按案胺暗\"};
const uint8 PY_mb_ang []={\"骯昂盎\"};
const uint8 PY_mb_zun []={\"尊遵\"};
const uint8 PY_mb_zuo []={\"昨左佐作坐座做\"};
2.3 拼音索引表的建立
拼音碼表是一張無序碼表,為了便于查找,提高查詢的效率,在本設計中采用多級索引查找法。
拼音索引表的建立如下:
typedef struct
{
uint8 PY[6];
uint8 a;
uint8 b;
}S_PY;
新數據結構定義,數組PY是拼音字符串的首地址,a是偏移地址的低8位,b是偏移地址的高8位。
部分代碼如下:
const S_PY PY_index_a[] = {
{\" \",0x00,0x00},
{\"i \",0x05,0x00},
{\"n \",0x20,0x00},
{\"ng \",0x33,0x00},
{\"o \",0x3A,0x00}};
首先,將將拼音以字符串賦值給PY,在將偏移地址分別放到低8位和高8位。
2.4 首字母索引表的建立
建立索引表的程序如下:
const S_PY *PY_index_pointer[26]={
PY_index_a,PY_index_b,PY_index_c,PY_index_d,PY_index_e,PY_index_f,PY_index_g,PY_index_h,PY_index_j,PY_index_j,PY_index_k,PY_index_l,PY_index_m,PY_index_n,PY_index_o,PY_index_p,PY_index_q,PY_index_r,PY_index_s,PY_index_t,PY_index_w,PY_index_w,PY_index_w,PY_index_x,PY_index_y,PY_index_z
};
該索引表的功能是根據首字母查找對應的拼音。
2.5 拼音檢索算法
在嵌入式系統中資源有限,要求在算法設計上效率盡可能高。在拼音檢索算法設計中采用多級檢索方法,將非線性表轉變為線性表,提高檢索效率。
第一級檢索為聲母檢索,采用計算查找法。通過巧妙的構建數據結構,根據聲母的ASC碼計算出與聲母所有可能組合的拼音的地址。
第二級檢索為韻母首字母,根據第一級檢索的結果,進行第二級檢索,查找出與之相關的拼音地址。如果拼音只有聲母,則跳過這步。
第三級為剩余字母檢索,根據第二級檢索的結果,進行第三級檢索,查找與拼音對應的漢字內碼。
3 結語
本設計工作穩定,適合嵌入式系統上運行。代碼編寫按照模塊化程序設計思想,可移植性強。字庫大小可根據實際需求裁剪,充分發揮嵌入式系統軟硬件資源。通過對單片機中文輸入模塊化設計和標準國際化的封轉,使整個系統具有更強的可移植性,為后續單片機在不同領域的開發提供一個中文輸入、輸出平臺。
參考文獻
[1]王賢勇,李海,汪燁編著.單片機原理與接口技術應用教程.北京市:清華大學出版社,2010,03.
[2]馬斌,韓忠華,王長濤,夏興華編著.單片機原理及應用C語言程序設計與實現.北京市:人民郵電出版社,2009,10.