51單片機(jī)的1314點(diǎn)陣縮碼漢卡
我們歷時(shí)數(shù)載,開發(fā)成“51單片機(jī)1314點(diǎn)陣縮碼漢卡”,適用于目前國內(nèi)外應(yīng)用最為廣泛的MCSX-51及其兼容系列單片機(jī)。
與此同時(shí),還開發(fā)了1314點(diǎn)陣漢字字模。1314點(diǎn)陣字模,可完全與目前通用的1616點(diǎn)陣漢字字模媲美,其在單片機(jī)和嵌入式系統(tǒng)的漢字顯示應(yīng)用中也具有明顯的經(jīng)濟(jì)價(jià)值和實(shí)用意義。
1 單片機(jī)目前的漢字顯示
信息交流的最主要方式之一即文字交流,但由于我國方塊漢字?jǐn)?shù)量繁多,構(gòu)形迥異,使?jié)h字顯示一直是我國計(jì)算機(jī)普及的障礙。隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展,PC機(jī)的漢字顯示已不成問題。但對于成本低、體積小、應(yīng)用靈活且用量極為巨大的單片機(jī)而言,因其結(jié)構(gòu)簡單,硬件資源十分有限,其漢字顯示仍面對著捉襟見肘,力不從心的窘境。
目前單片機(jī)的漢字顯示有三種基本方法。
①采用標(biāo)準(zhǔn)字庫法。即將國標(biāo)漢字庫固人ROM中,將單片機(jī)的硬件和軟件進(jìn)行特別擴(kuò)展后以顯示漢字。眾所周知,即使是1616點(diǎn)陣標(biāo)準(zhǔn)字庫,也須占用200KB以上的單元內(nèi)存,而就目前主流5l系列單片機(jī)而言,最大尋址范圍僅64KB,即使程序區(qū)與數(shù)據(jù)區(qū)合起來也僅128KB內(nèi)存。因此,若不加特別的擴(kuò)展設(shè)計(jì),不要說檢字程序和用戶空間,僅字庫都裝不下。這種方法雖然可以方便地使用現(xiàn)成標(biāo)準(zhǔn)字庫,但卻需占用大量的硬件和軟件資源,增加很大一部分成本和設(shè)計(jì)難度,所以不經(jīng)常使用。
②字模直接固化法。即將所顯示的漢字,依先后順序?qū)⑵渥帜R灰粡臉?biāo)準(zhǔn)字庫中提取后,重新固化,予以顯示。此法雖為簡捷,但只適于顯示少量漢字,且字模的制取繁瑣,軟件的修改維護(hù)都很困難。
③帶索引小字庫法。即將欲顯示文件中的漢字字模,從標(biāo)準(zhǔn)字庫中逐一提取固化,制成小型字庫,并按其在小字庫中的位置制成索引表,顯示時(shí)從索引表查出其新的字模取碼地址,取碼顯示。此方法雖比較靈活,可顯示較多的漢字,但仍然局限于只能顯示固定文件內(nèi)容,且字模制取同樣麻煩。
一種較新的單片機(jī)“漢字動(dòng)態(tài)編碼與顯示方案”(見《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》雜志2003年第1期和第9期),實(shí)際上也是一種動(dòng)態(tài)的“小字庫”法,只是字庫的制取,索引的編寫及文件的改碼皆由PC機(jī)自動(dòng)完成,免去了繁瑣的人工處理。
由上可見,目前單片機(jī)各種漢字顯示方案均不理想。標(biāo)準(zhǔn)字庫法,單片機(jī)不堪重負(fù);而其它方法最大且又無法克服的缺點(diǎn)是,所顯示文字皆有局限。顯示內(nèi)容也皆須專業(yè)人員設(shè)計(jì)而定,用戶難于更改。這便極大地限制了單片機(jī)在各個(gè)領(lǐng)域的開拓和應(yīng)用。究其原因,皆為單片機(jī)本身無漢卡,而這也正是我們致力于“51漢卡”開發(fā)的初衷。
2 1314點(diǎn)陣漢字字模
為墊定“5l漢卡”的字型基礎(chǔ),首先開發(fā)成了l314點(diǎn)陣漢字字模。在目前通用的漢字字模中,最簡單的是1616點(diǎn)陣字模。在微型打字機(jī)中,也偶見有1212點(diǎn)陣字模,但實(shí)用中不多見。字模點(diǎn)陣數(shù)直接決定著每一漢字所占單元內(nèi)存值,能否在保證字模準(zhǔn)確、美觀的基礎(chǔ)上,尋找一種較少的點(diǎn)陣字模呢?這便是我們最初的想法。于是我們經(jīng)過反復(fù)選擇比較,終于在國內(nèi)首個(gè)推出了1314點(diǎn)陣字模。此設(shè)計(jì),一是基于我國漢字為方塊字,故其行、列值需相近;二是漢字多有對稱1生,故其列值宜奇不宜偶。設(shè)計(jì)實(shí)際表明,若行、列值很少,則難保證字模的準(zhǔn)確性和美觀性。
1314點(diǎn)陣字模,是以我國現(xiàn)行簡化字為準(zhǔn),并在此基礎(chǔ)上設(shè)計(jì)而成。與目前通用的漢字16l6點(diǎn)陣字模相比,其準(zhǔn)確性和美觀性并不遜色。然而其單字所占內(nèi)存卻由32個(gè)單元降至26個(gè)單元;另外使得每個(gè)單字顯示由原來的256個(gè)像素降至l82個(gè)像素,使顯示成本和空間均減少近三分之一。100200點(diǎn)陣LED字屏,可顯示16l6點(diǎn)陣漢字72個(gè),而l314點(diǎn)陣漢字便可顯示l05個(gè),且顯示效果并無太大差異。這無疑對單片機(jī)和嵌入式系統(tǒng)漢字顯示產(chǎn)品的開發(fā)和應(yīng)用,具有明顯的經(jīng)濟(jì)價(jià)值和實(shí)用意義。
3 51單片機(jī)1314點(diǎn)陣縮碼漢卡
“51漢卡”依據(jù)我國的漢字特點(diǎn)和單片機(jī)的快速構(gòu)字功能,在1314點(diǎn)陣字?;A(chǔ)上,以縮碼形式開發(fā)而成單片機(jī)漢卡的開發(fā),應(yīng)以目前通用的主流單片機(jī)為研發(fā)對象,還應(yīng)在囊括國標(biāo)一、二級漢字及常用字符的前提下,使內(nèi)存占用必須降至主流單片機(jī)可尋址范圍內(nèi),且需留有足夠的檢字程序和用戶應(yīng)用空間。另外,字模設(shè)計(jì)必須準(zhǔn)確、美觀。字模提取速度也必須滿足實(shí)用要求?!?1漢卡”的開發(fā)正是依據(jù)原則,并達(dá)到了以上各項(xiàng)要求。
顧名思義,“51漢卡,,即以MCS-51系列及其兼容單片機(jī)為研發(fā)對象。以51系列為代表的8位單片機(jī),在過去、現(xiàn)在以及可以予見的將來,都將是嵌入式系統(tǒng)低端應(yīng)用的主流機(jī)型。此乃業(yè)界專家的共識。
“51漢卡”囊括了“GB2312-80”國標(biāo)字庫的全部一、二級漢字,并增補(bǔ)漢字86個(gè);同時(shí)包括了大、小英文字母、阿拉伯?dāng)?shù)字等160個(gè)常用字符和不到4KB的構(gòu)字程序,卻僅總共占用了不足66KB的內(nèi)存。每字平均約占9.8個(gè)單元,相對于1616點(diǎn)陣每字占32單兀內(nèi)存而言,尚不到其三分之一。這對于具有相互獨(dú)立的64KB程序區(qū)和64KB數(shù)據(jù)區(qū)的51系列單片機(jī)而言,若適當(dāng)配置內(nèi)存,可為檢字程序和用戶留出90%以上的程序空間及相當(dāng)數(shù)量的數(shù)據(jù)空間,對于一般用戶的應(yīng)用,都將綽綽有余。
另外,為使“51漢卡’’更便于使用和進(jìn)一步節(jié)省內(nèi)存,在上述基礎(chǔ)上又開發(fā)成一套簡化版本,刪去了部分較偏僻的二級漢字。簡化版本包括約5580個(gè)漢字,共占用內(nèi)存58KB。實(shí)際上,按有關(guān)權(quán)威部門的統(tǒng)計(jì),一般文本99%的文字是由2400個(gè)字寫成的,因此使用簡化版本,并配以簡單的造字程序,一般亦可滿足我們的使用要求。
"51漢卡”所用字模,即我們開發(fā)的完全可與1616點(diǎn)陣字模媲美的I314點(diǎn)陣漢字字模。字模提取速度是我們最為關(guān)心的問題之一。經(jīng)測試及實(shí)際使用表明,“51漢卡’’的提模速度完全可滿足單片機(jī)漢字顯示的實(shí)用要求。
我們使用Intel公司MCS-51經(jīng)典系列87C51單片機(jī)在24MHz頻率下測試,平均字模提取速度為2.1ms/字。因人的視覺暫留時(shí)間為0.1s,無論理論還是實(shí)際使用都表明,50字字模提取并顯示,并無遲滯和待機(jī)之感。即使在1 2MHz頻率下,20字取模,即點(diǎn)即出,在一般拼音檢字和少量漢字顯示中,完全可滿足使用要求。隨著單片機(jī)技術(shù)的迅速發(fā)展,目前,Intel公司、Atmel公司、philips公司、我國臺灣華邦等公司生產(chǎn)的MCS-51兼容單片機(jī)時(shí)鐘頻率可達(dá)33MHz,增強(qiáng)型可達(dá)40MHz,以至達(dá)60MHz;現(xiàn)市售的“STC89LE”系列單片機(jī),最高頻率可達(dá)90MHz。這些芯片都完全能與MCS-51芯片兼容,對于更高需求的場合,更新升級也十分簡便。另外,在單片機(jī)和嵌入式系統(tǒng)中,文字顯示速度要求并不高,只要滿足換屏?xí)r的視覺要求即可。其漢字顯示字?jǐn)?shù),一般也不太多。如用LCD顯示屏,12864點(diǎn)陣,才顯示32個(gè)字;19264點(diǎn)陣才顯48個(gè)字;即使使用l314點(diǎn)陣字模,滿屏也才56個(gè)漢字。
4“51漢卡”設(shè)計(jì)依據(jù)及說明
“51漢卡”設(shè)計(jì)依據(jù)是,我國漢字雖然數(shù)量繁多,字型各異,但其中復(fù)合結(jié)構(gòu)者占大部分,并素有“偏旁取義,正字取音”之說。如“寸”字與不同偏旁可組成“村”、“付”、“討”、“守”、“過”等字。因此“51漢卡”除單結(jié)構(gòu)字基本以全碼設(shè)計(jì)外,復(fù)臺結(jié)構(gòu)字多用相應(yīng)的單體字及其偏旁,以結(jié)構(gòu)代碼寫成。利用單片機(jī)快速的單元積木式構(gòu)字程序,便可迅速生成字模代碼。這既保證了提碼速度,又節(jié)省了大量的漢卡內(nèi)存。
有關(guān)“51漢卡”的幾點(diǎn)說明如下:
①凡漢字庫中簡、繁體字都有的用簡體。如“後”以“后”代,“馀”以“余”代等;
② 《新華字典》未收入字,多未收入,如“酏”、“鼽”等字,但“婧”、“弳”等字仍收入;
③對于多體字,一般以常用字代,如“摺”以“折”代,“鏇”以“旋,,代等,但“吒”不以“咤”代,“讎”不以“仇”代等;
④對通常已由其它字取代的字,都以這些字代替,如“崠”以“東”代,“肛’’以“船”代等;
⑤二級漢字中,不單獨(dú)構(gòu)成漢字的偏旁未收入;
⑥依據(jù)名篇名著,生活用語等,增補(bǔ)漢字86個(gè);
⑦收編大、小寫英文字母、阿拉伯?dāng)?shù)字、標(biāo)點(diǎn)符號等各種常用字符160個(gè)。
5“51單片機(jī)漢卡”應(yīng)用舉例
利用“51單片機(jī)漢卡”,將使51系列單片機(jī)的漢字顯示輕而易舉,并可大為降低成本、體積和設(shè)計(jì)開發(fā)的難度,為單片機(jī)在生產(chǎn)控制、信息通信、文化教育和日常生活等領(lǐng)域,特別是計(jì)算機(jī)終端和手持產(chǎn)品的開發(fā)提供極大的便利和支持。
我們現(xiàn)已初步開發(fā)成“51漢卡”的“區(qū)位碼輸入法”和“拼音輸入法,,檢字程序,并利用“51漢卡”成功地開發(fā)了帶有廉價(jià)單片機(jī)控制器的LED漢字顯示屏。這不僅大幅度降低了成本費(fèi)用。而且用戶可以通過單片機(jī)控制器,隨心所欲地改變顯示內(nèi)容。
5.1 硬件設(shè)計(jì)
CPU――87C51、12MHz晶振。
程序存儲(chǔ)器一1片EPROM 27C512。
數(shù)據(jù)存儲(chǔ)器一1片EPROM 27C512;1片EEPROM28C64A;1片6116。
控制器顯示屏一LCD HY一19264B(深圳秋田視佳實(shí)業(yè)有限公司)。
LED屏選24016點(diǎn)陣。
本系統(tǒng)用標(biāo)準(zhǔn)小鍵盤檢字,一次可予選4000字;控制器LCD滿屏顯示l314點(diǎn)陣漢字56個(gè);LED屏滿屏顯示漢字19個(gè)。
地址分配及用途如表l所列。
5.2程序設(shè)計(jì)框圖
程序設(shè)計(jì)流程如圖1所示。本系統(tǒng)采用12MHz晶振,若LCD取滿屏56字,換屏?xí)r有約0.1s的延時(shí),這對人的實(shí)際視覺并無大影響。
評論