基于單片機的智能終端中漢字顯示的處理
引言
本文引用地址:http://dyxdggzs.com/article/171858.htm近年來(lái),以單片機以及嵌入式系統平臺為基礎的各種智能終端廣泛應用于各行各業(yè)的專(zhuān)用設備和產(chǎn)品中,也將逐漸滲透到家用電器和各種消費類(lèi)電子產(chǎn)品中。
單片機以其價(jià)格低廉、技術(shù)成熟而廣泛應用于各種低端產(chǎn)品之中,但是由于單片機的尋址能力有限,限定了其最大的存儲空間。比如最常用的MCS-51單片機,其直接尋址的數據存儲空間為64k字節,如果通過(guò)擴展來(lái)得到更大的存儲空間,既增加了系統成本,也為數據讀取操作帶來(lái)了不便(對擴展區間的訪(fǎng)問(wèn)要通過(guò)端口操作實(shí)現)。所以在單片機系統的設計中,存儲空間的大小是一個(gè)很重要的因素。
在PC機上的漢字顯示,是來(lái)自存儲在PC機上的漢字庫。漢字庫中的漢字以點(diǎn)陣形式組成。如果以一個(gè)16x16點(diǎn)陣的漢字庫作為基本字模庫,每個(gè)漢字占32 個(gè)字節。GB2312中規定了6763個(gè)二級漢字,則需要的存儲空間大體為6763×32字節,約200多K字節。顯然,如果要在單片機終端上顯示漢字,不可能把以上所有的“漢字庫”信息都放在單片機系統的存儲空間中。
本文以我實(shí)驗室獨立開(kāi)發(fā)的智能餐飲信息系統為例,首先介紹關(guān)于漢字顯示的基礎知識,然后說(shuō)明在實(shí)際應用中如何對系統漢字庫進(jìn)行裁減,只保留需要在終端上顯示的“漢字庫”信息,最后介紹在實(shí)際應用中會(huì )涉及到的有關(guān)字模提取和字模轉化的處理方法。
1:關(guān)于漢字顯示的基礎知識
在中文WIN9X下,我們輸入一個(gè)雙八位字節,就得到一個(gè)漢字,就會(huì )認為這雙八位字節就是對應這樣的字形,這是錯誤的。這個(gè)雙八位字節被稱(chēng)為漢字的內碼(詳見(jiàn)下文),內碼對于字庫來(lái)說(shuō),只是查找字形的索引。通過(guò)這個(gè)雙八位字節可以唯一的從漢字庫中查詢(xún)得到其對應的漢字字形數據(字模)。對應不同編碼標準的字體,內碼對應了不同的字形。我們常用的是國標GB2312信息交換用漢字編碼字符集>>,包含了最常用的簡(jiǎn)體中文文字。
如果系統所使用的“漢字庫”中每個(gè)漢字按16x16點(diǎn)陣模式存放,則每個(gè)漢字由16x16=256個(gè)點(diǎn)組成,占用16x2=32個(gè)字節的連續內存單元。每個(gè)字節有8位,每一位都有兩種狀態(tài),即亮或暗,分別用1或0來(lái)表示。在16x16點(diǎn)陣中,用各個(gè)位的亮暗來(lái)表示一個(gè)字,凡是筆畫(huà)經(jīng)過(guò)的地方都為1(亮), 沒(méi)有筆畫(huà)的地方都為0(暗),這樣就可以表示不同的漢字。
圖1 是“大”字16x16點(diǎn)陣模式排列放大后的結果。
在PC機中,組成字模的32個(gè)字節默認的排列順序如圖2所示:每行兩個(gè)字節,低字節為DB0~DB7,高字節為DB8~DB15,每字節8比特,共16行32個(gè)字節。圖中標出了第1、第2個(gè)字節和第31、第32個(gè)字節的存放位置。
評論