一種漢字實(shí)時(shí)輸入顯控系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引言
隨著電子信息技術(shù)的發(fā)展,中文操作界面在控制系統(tǒng)中的應(yīng)用越來(lái)越廣泛。而在一些單片機(jī)人機(jī)接口系統(tǒng)中,大多只能顯示事先取好字模點(diǎn)陣的漢字,在需要實(shí)時(shí)大量輸入漢字的顯控處理應(yīng)用中,利用傳統(tǒng)顯控設(shè)計(jì)方法是無(wú)法實(shí)現(xiàn)的;本文設(shè)計(jì)一種顯控系統(tǒng),該系統(tǒng)以單片機(jī)為核心,通過(guò)鍵盤輸入漢語(yǔ)拼音,通過(guò)漢字區(qū)位碼索引表查找漢字,最后在LCD上實(shí)時(shí)顯示所輸入的漢字。
1 系統(tǒng)結(jié)構(gòu)及硬件電路設(shè)計(jì)
為使系統(tǒng)硬件電路結(jié)構(gòu)簡(jiǎn)單,采用4×4行列式鍵盤實(shí)現(xiàn)按鍵輸入;采用帶有漢字字庫(kù)的液晶顯示模塊RT12864M實(shí)現(xiàn)顯示功能,RT12864M是128×64點(diǎn)陣的圖形液晶顯示模塊,內(nèi)置國(guó)家標(biāo)準(zhǔn)的一、二級(jí)漢字字庫(kù),可顯示漢字及圖形;CPU選取了常見(jiàn)的AT89C52單片機(jī),可完全實(shí)現(xiàn)控制要求。系統(tǒng)的硬件接口電路如圖1所示。
2 系統(tǒng)的軟件設(shè)計(jì)
2.1 主程序設(shè)計(jì)思路
系統(tǒng)的主程序設(shè)計(jì)流程為:首先在鍵盤上輸入所要顯示的漢字的拼音鍵,利用單片機(jī)來(lái)掃描與識(shí)別鍵盤,得到正確的拼音組合,然后根據(jù)輸入的拼音組合查找漢字區(qū)位碼索引表找到相同音漢字的區(qū)位碼與漢字個(gè)數(shù),在液晶屏的最后一行顯示所輸入的拼音對(duì)應(yīng)的漢字,最后通過(guò)光標(biāo)的移動(dòng),按確認(rèn)鍵來(lái)選擇所要輸入的漢字,并讓其在液晶屏的第一行顯示,至此,完成了一個(gè)漢字的查找與顯示。
2.2 按鍵處理程序
2.2.1 按鍵排布及處理
CPU采用中斷方式掃描鍵盤,提高CPU效率;由圖1可知,P1.0~P1.3為行線,P1.4~P1.7為列線,列線經(jīng)與門和AT89C52的INT1相連。無(wú)鍵閉合時(shí),INT1為高電平,有鍵閉合時(shí),INT1為低電平,向CPU申請(qǐng)中斷,CPU響應(yīng)此中斷,轉(zhuǎn)向中斷服務(wù)程序。首先通過(guò)程序讀取按鍵的行首鍵號(hào)和列值,并求出鍵號(hào)(鍵號(hào)=行首鍵號(hào)+列值),即地址偏移量,然后查鍵值表即可確定對(duì)應(yīng)的鍵值。從圖2系統(tǒng)按鍵排布圖中可以看出,本系統(tǒng)按鍵數(shù)為16個(gè),而顯示漢字所需拼音個(gè)數(shù)為26個(gè),因此需進(jìn)行復(fù)鍵編排與處理。
2.2.2 四復(fù)鍵判別處理子程序
某個(gè)鍵上有四個(gè)拼音字母,對(duì)于這樣的鍵應(yīng)特殊處理。例如表1所示,偏移量為05的四復(fù)鍵,上有字母PQRS。具體算法為:40H里存的是該鍵的地址偏移量,計(jì)數(shù)器計(jì)的是按鍵次數(shù),當(dāng)?shù)谝淮伟聪麓随I時(shí),計(jì)數(shù)器為0,所得鍵值就是地址偏移量,當(dāng)?shù)诙伟聪麓随I時(shí),計(jì)數(shù)器為1,鍵值為1×8+05H=0DH,當(dāng)?shù)谌伟聪麓随I時(shí),計(jì)數(shù)器為2,鍵值為2×8+05H=15H,當(dāng)?shù)谒拇伟聪麓随I時(shí),將計(jì)數(shù)器清0,并以鍵值18H查表,如此循環(huán)。
2.2.3 三復(fù)鍵處理子程序
對(duì)于三復(fù)鍵,即鍵上有三個(gè)字母,例如表2所示,此鍵上有字母ABC,表示為三復(fù)鍵。具體算法為:40H里存的是該鍵的地址偏移量,計(jì)數(shù)器計(jì)的是按鍵次數(shù),當(dāng)?shù)谝淮伟聪麓随I時(shí),計(jì)數(shù)器為0,所得鍵值就是地址偏移量,當(dāng)?shù)诙伟聪麓随I時(shí),計(jì)數(shù)器為1,鍵值為1×8+0=08 H,當(dāng)?shù)谌伟聪麓随I時(shí),計(jì)數(shù)器為2,鍵值為2×8+0=10H,然后再將計(jì)數(shù)器清0,如此循環(huán)。
2.2.4 查找漢字區(qū)位碼及漢字顯示處理方法
區(qū)位碼表的結(jié)構(gòu)為:DB'B',00,00,00,0B0H,0C5H,12H。其中前四個(gè)單元為四個(gè)拼音鍵值,后兩個(gè)是漢字的區(qū)位碼,最后一個(gè)是該拼音對(duì)應(yīng)漢字的個(gè)數(shù),所以區(qū)位碼每行有七個(gè)單元。區(qū)位碼的查找方法:先讓地址指針指向表頭,也就是第一行,讓每行的前四個(gè)拼音鍵值與存入到內(nèi)存中的拼音鍵值比較,若相同則為找到區(qū)位碼,若不等則要修改地址指針,讓地址指針指向下一行的拼音鍵值,直到找到該拼音的區(qū)位碼。若地址指針大于地址表中的最大地址值則表示該拼音組合不存在。當(dāng)漢字區(qū)位碼查找成功時(shí),就要在LCD上顯示漢字,首先要調(diào)用液晶初始化程序,在LCD顯示該拼音對(duì)應(yīng)的所有漢字,然后通過(guò)光標(biāo)的移動(dòng),按確認(rèn)鍵來(lái)選擇所要輸入的漢字并顯示。
3 結(jié)束語(yǔ)
文中對(duì)復(fù)鍵輸入作了詳盡的分析,在此基礎(chǔ)上編寫了復(fù)鍵處理程序;介紹了液晶顯示模塊RT12864M,并根據(jù)該模塊的特點(diǎn)編制了漢字查找與顯示程序;最后利用偉福仿真試驗(yàn)系統(tǒng)對(duì)所編寫程序進(jìn)行仿真檢測(cè),所有程序均通過(guò)檢測(cè)并可實(shí)現(xiàn)所設(shè)定的功能。此系統(tǒng)可用于控制及檢測(cè)領(lǐng)域,可模塊化生產(chǎn),為多種產(chǎn)品提供實(shí)時(shí)輸入顯示漢字模塊,為現(xiàn)有產(chǎn)品的人機(jī)界面改造提供新的方法。