硬件漢字庫設計原理與應用
如果有新的漢字加入那么漢字庫的維護也成問(wèn)題,而我們日常生活的一些手持工具上如手機快譯通等等它們可以任意輸入漢字不僅靈活性大而且檢索速度快,這其中的主要原因就是在這些設備中固化了硬件漢字庫。而半導體技術(shù)的發(fā)展使得大容量FLASH ROM 的價(jià)格大大下降從而使用硬件漢字庫的儀器設備的成本大大下降,因此越來(lái)越多的技術(shù)開(kāi)發(fā)人員開(kāi)始關(guān)注起硬件漢字庫希望能在自己開(kāi)發(fā)的設備中設計并使用硬件漢字庫,達到加快產(chǎn)品開(kāi)發(fā)速度降低軟件成本的目的。
一硬件漢字庫相關(guān)知識
1 漢字機內碼國標碼和區位碼
在PC 機的文本文件中,漢字是以機內碼的形式存儲的。每個(gè)漢字占用兩個(gè)字節長(cháng)度為了和ASCII碼區別,范圍從十六進(jìn)制的0A1H 開(kāi)始小于80H 的為ASCII 碼,將機內碼每個(gè)字節的最高位屏蔽掉,再以十六進(jìn)制的形式顯示出來(lái)則為國標碼。將機內碼的每個(gè)字節各減去0A0H 再以十進(jìn)制顯示出來(lái),即為該漢字的區位碼。例如"國"字的機內碼國標碼和區位碼如表1 所示
表1 國字的機內碼國標碼和區位碼
類(lèi)別數值高位字節低位字節
機內碼B9FAH 1 0 1 1 1 0 0 1 1 1 1 1 1 0 1 0
國標碼397AH 0 0 1 1 1 0 0 1 0 1 1 1 1 0 1 0
區位碼195AH 0 0 0 1 1 0 0 1 0 1 0 1 1 0 1 0
即區位碼機內碼0A0AOH 就國字而言其區位碼和機內碼的關(guān)系為
195AH 區位碼0B9FAH 機內碼0A0A0H
記住這個(gè)關(guān)系是我們理解下面有關(guān)程序的關(guān)鍵
2 國標漢字字符集與區位碼
根據對漢字使用頻率程度的研究可把漢字分成高頻字約100 個(gè)常用字約3000 個(gè)次常用
字約4000 字罕見(jiàn)字約8000 個(gè)和死字約45000 個(gè)即正常使用的漢字達15000 個(gè)。我國1981
年公布了通訊用漢字字符集基本集及其交換碼標準GB2312-80 方案,把高頻字常用字和次常用字集合成漢字基本字符集共6763 個(gè),在該字符集中按漢字使用的頻度又將其分為一級漢字3755 個(gè),按拼音排序二級漢字3008 個(gè),按部首排序再加上西文字母數字圖形符號等700 個(gè),國家標準的漢字字符集GB2312-80 在漢字操作系統中是以漢字庫的形式提供的漢字庫結構作了統一規定如圖1 所示此主題相關(guān)圖片如下:
即將字庫分成94 個(gè)區每個(gè)區有94 個(gè)漢字,以位作區別每一個(gè)漢字在漢字庫中有確定的區和位。編號用兩個(gè)字節這就是所謂的區位碼。區位碼的第一個(gè)字節表示區號,第二個(gè)字節表示位號,因而只要知道了區位碼就可知道該漢字在字庫中的地址。每個(gè)漢字在字庫中是以點(diǎn)陣字模形式存儲的,如一般采用16x16 點(diǎn)陣形式,每個(gè)點(diǎn)用一個(gè)二進(jìn)制位表示,存1 的點(diǎn)當顯示時(shí)可以在屏上顯示一個(gè)亮點(diǎn),存0 的點(diǎn)則在屏上不顯示,這樣就把存某字的16 16 點(diǎn)陣信息直接用來(lái)在顯示器上按上述原則顯示,則將出現對應的漢字如一個(gè)國字的16 16 點(diǎn)陣字模如圖2 所示。當用存儲單元存儲該字模信息時(shí)將需32 個(gè)字節地址在圖2 的右邊寫(xiě)出了該字模對應的字節值此主題相關(guān)圖片如下:
3 液晶顯示模塊特性與字模數據
漢字顯示是國內應用圖形液晶顯示模塊的目的之一,目前對硬件漢字庫比較關(guān)心的技術(shù)人員大多是想將其應用到圖形點(diǎn)陣液晶顯示器中,但目前有關(guān)液晶顯示的資料大多數是介紹通過(guò)字模軟件取出的點(diǎn)陣數據是如何送往液晶顯示器的,因此作者在此作一下比較要在液晶屏幕上顯示出這個(gè)點(diǎn)陣圖形需要將相應的點(diǎn)陣數據送入液晶顯示驅動(dòng)器,但對于不同的液晶顯示驅動(dòng)器要顯示同一圖形所需要送入的數據排列順序可能不同,作者曾經(jīng)使用過(guò)內置D61202U 液晶顯示驅動(dòng)控制器和內置T6963C 液晶顯示驅動(dòng)控制器的液晶顯示模塊,同樣是顯示16 16 點(diǎn)陣的國
字則需要的點(diǎn)陣數據如下
HD61202U
DB 000H,0FEH,002H,00AH,08AH,08AH,08AH,0FAH
DB 08AH,08AH,08AH,00AH,002H,0FEH,000H,000H
DB 000H,0FFH,040H,048H,048H,048H,048H,04FH
DB 048H,049H,04EH,048H,040H,0FFH,000H,000H
由于HD61202U 顯示存儲器的特性不能將計算機內的漢字庫提出直接使用,需要將其旋轉90 度后再寫(xiě)入,也就是有些字模軟件如zimo22.exe 可到www.c51bbs.com上免費下載設置為豎向倒序取模后所得的數據其生成字庫的格式是前16 個(gè)字節為上半部16 8 點(diǎn)陣字模數據后16 個(gè)字節為下半部16x8 點(diǎn)陣字模數據,讀者如果與圖2 中的相應數據作比較可以看出如果僅僅從數據上是看不出兩者的聯(lián)系的,如果在這種液晶顯示器上要使用硬件漢字庫則讀出的點(diǎn)陣信息必須經(jīng)過(guò)處理方可送出顯示增加了使用難度
T6963C
DB 000H,000H,07FH,0FCH,040H,004H,05FH,0F4H
DB 041H,004H,041H,004H,041H,004H,04FH,0E4H
DB 041H,044H,041H,024H,041H,024H,05FH,0F4H
DB 040H,004H,040H,004H,07FH,0FCH,040H,004H
這些數據也是通過(guò)字模軟件得出的讀者再與圖2 中的32 個(gè)數據相比較可以看出兩者在數值和排列順序上都是一致的,正是這種特性使得筆者選擇了內置T6963C 的液晶顯示模塊作為論述開(kāi)發(fā)硬件漢字庫的例子
二漢字庫的制作
在本節中筆者將論述將16 16 點(diǎn)陣的宋體漢字庫燒錄到256KB 的存儲器中的具體方法,這也是讀者比較關(guān)心的問(wèn)題。本例中使用了AT29C020 該產(chǎn)品是ATMEL 公司生產(chǎn)的高達256KB 的FLASH ROM ,讀者也可以使用其它容量不小于256KB 的產(chǎn)品,但在具體電路設計時(shí)應注意引腳定義和邏輯關(guān)系,并在燒錄時(shí)選擇相應的型號UCDOS 軟件有一個(gè)名字為HZK16 的文件,這就是16 16 的國標漢字點(diǎn)陣文件,在該文件中按漢字區位碼從小到大依次存有:國標區位碼中的所有漢字,每個(gè)漢字占用32 格字節,每個(gè)區為94 個(gè)漢字,如果顯示其屬性可以看出其大小為262KB 。當寫(xiě)入AT29C020A 時(shí)可以將多于256KB 的部分截去,實(shí)際上在國標漢字點(diǎn)陣字庫中二級漢字排到第87 區,從第88 區開(kāi)始就是空白,所以將多余部分截去不會(huì )影響實(shí)際使用。在實(shí)際操作中硬件漢字庫的制作和普通的程序存儲器的編程沒(méi)什么不同,注意將HZK16 文件調入時(shí)要使用二進(jìn)制方式打開(kāi)編程并校驗成功后,即可將存儲器取下備用,這樣一個(gè)硬件漢字庫就制作好了。針對不同的應用讀者也可以選用其它大容量甚至是串行數據存儲器從而可以擴展硬件漢字庫的使用范圍。在此也一并向大家推薦容量為512KB 甚至更大的存儲器除了可以存儲全部的國標漢字外還可以存儲8 16 的ASCII 碼點(diǎn)陣數據以及漢字語(yǔ)句編碼數據,使用起來(lái)更加方便。串行數據存儲器如AT45DB041B 等特點(diǎn)是占用口線(xiàn)少體積小和成本低如果對于速度要求不是很高的場(chǎng)合非常適宜
三硬件漢字庫使用電路
在本節中筆者使用PHILIPS 公司的產(chǎn)品P89C51RD2 作為主控CPU ,使用內置T6963 控制器的240x128 點(diǎn)陣圖形液晶顯示器并結合硬件漢字庫的使用,將一部3 萬(wàn)多字的小說(shuō)嵌入其中,開(kāi)機后就可以閱讀小說(shuō)。P89C51RD2 是PHILIPS 公司于2001 年發(fā)布的一款非常優(yōu)秀的單片機,該單片機是基于8 位80C51單片機的派生產(chǎn)品,它在完全保留80C51 指令系統和硬件結構的大框架外發(fā)生了多方面的加強擴展翻新和創(chuàng )新,P89C51RD2 將原有的對外數據和程序存儲器的16 位尋址機制加以利用,把片上的RAM 擴展到1K 字節,片上的FLASH EPROM 擴展到64K 字節,由于一個(gè)漢字的內碼占用兩個(gè)字節,所以1024 字節可以存儲512 個(gè)漢字所以64KB 的閃存可以存儲3 萬(wàn)多漢字。
本系統使用了Microtips Technology Inc.公司生產(chǎn)的內置Toshiba 公司生產(chǎn)的T6963C 的液晶顯示器型號為MTG-F24128CMNHSCW 具有CCFL 背光相關(guān)接口信息如下此主題相關(guān)圖片如下:
此主題相關(guān)圖片如下:
硬件設計說(shuō)明
由于A(yíng)T29C020 的容量為256KB 而80C51 系列微控制器只能管理64KB 的數據空間所以可以將
AT29C020 分成8 頁(yè)每頁(yè)32KB 占單片機系統數據空間的0000 7FFFH 剩余32KB 空間為單片機系統的其它存儲器和外設
A15 反相后作為液晶顯示器的片選LCD/CS P1.5 是控制液晶顯示器正顯和反顯的該液晶顯示器的
復位電平為低電平與P89C51RD2 正好相反
評論