內存受限系統的漢字顯示設計研究

2020-12-15 電子產品世界

引言
在微電子技術、計算機技術不斷發展的推動下,儀器儀表工業也發生了巨大的變化。現代儀表將嵌入式技術引入到儀器儀表的測試和控制中,使儀器儀表向著自動化智能化的方向發展,這已經成為當今儀器儀表系統的一種趨勢。新型的儀器儀表設備將朝著操作簡便、小型化、可攜式、現場實時分析、高速運算等方向發展。由於中文顯示界面友好,適合我國國情,特別是對於一些工業現場基層用戶來說,中文顯示已經成為普遍要求解決的問題。出於對成本等因素的考慮,嵌入式系統的存儲器容量有限,這就迫使我們必須從編程上重視內存的使用效能,運用一些節約內存的技巧來設計漢字顯示程序。

本文引用地址:http://www.eepw.com.cn/article/169539.htm

本文通過分析一般漢字顯示方法,並結合嵌入式系統內存受限特點,提出了一種能在小容量內存系統中使用的漢字顯示的方法。

1漢字顯示的一般原理
要在點陣LCD上顯示漢字,首先需要獲得漢字顯示的點陣代碼。一般方法是從計算機中文作業系統擁有的龐大的漢字庫中提取所需的漢字顯示點陣字庫,存儲在嵌入式應用系統中以備使用[1]。

在漢字庫中,漢字字模大多以國標GN2313-80的區位碼為索引存放。國標碼與ASCⅡ碼屬同一制式,ASCⅡ碼用一個字節編碼,碼值範圍為00H-7FH,其中94個可見字符的碼值範圍為21H-7EH,國標碼也是以94個ASCⅡ可見字符代碼為基集(碼值範圍為21H-7EH),用兩個字節組成國標碼,其中高字節表徵區,低字節表徵位,共有94個區,每區又分94個位,區和位編號均為十進位的01-94,對應的國標碼碼值範圍為21H-7EH,因此國標碼與區位號之間存在下列關係:國標碼高字節=區號+20H;國標碼低字節=位號+20H。

漢字顯示點陣字庫是漢字顯示點陣代碼(也稱字模)的集合,中文作業系統中最常用的是16*16點陣字庫(通常文件名為HZK16),其點陣代碼為橫向排列。由於漢字顯示點陣字庫中的顯示點陣代碼一般按區位碼順序存放,所以提取字模時只要求出某漢字的偏移地址(顯示點陣代碼相對於漢字顯示點陣字庫首地址的字節數)即可,偏移地址值與漢字區位碼有以下轉換關係[2]:

偏移地址=((區號-1)*94+(位號-1))*32。

在嵌入式系統中,為了實現字符(半個漢字)、漢字的混合顯示,通常對提取的橫向字模加以轉換形成縱向排列的字模。按照上述規則將字模從計算機中文作業系統提取出來加以轉換存入到嵌入式系統中以供使用[3]。

2嵌入式系統中顯示漢字存在的問題及解決方法
嵌入式系統由於受成本、體積等因素的影響,其配置的存儲器容量一般都非常有限。這種存儲器容量受到限制的系統又稱為內存受限系統。在小型智能儀器儀表一類嵌入式設備中,內存有限,強固耐用的要求高,顯示漢字首先要有包含所有會被顯示的漢字和字符構成的字庫,在前面所提到的漢字顯示的一般原理中,嵌入式系統中存儲的是從計算機中文作業系統擁有的龐大的漢字庫中提取的漢字區位碼信息,由於漢字數目繁多,導致區位碼信息佔用大量內存。為了節省內存空間,需要將字模依照一定的方法存儲在嵌入式系統內存中,也就是建立精簡的字庫。在建立精簡的字庫時主要面臨兩個問題:

(1)相同的漢字或字符會反覆被使用,在不同的句子中重複出現多次,如果以句子字符串為單位存儲,雖然會加快句子輸出速度,但也會大大增加程序對內存的需求。為了解決這個問題,使用如下方法:採用單字排列構成字庫,一個漢字字模信息只存儲一次,任何需要使用它的地方,共享同一個字模。應用此方法後,雖然會增加程序的複雜程度,但卻極大地節省了內存,提高了內存的利用效率。

(2)字庫在程序中佔有很大的比例,需要大量內存,並且要顯示的內容除漢字外還有一些字符,而字符字模只有16個字節,是漢字字模的一半。正如編譯器或彙編器往往令數據對齊以使CPU指令集更便捷的訪問對齊數據一樣[4],如果存儲字符字模時把其16個字節添零擴充為32個字節,計算偏移地址直接用字序號乘上32再加上字庫首地址即可,但這種方法只適用於字符比較少的情況,當字符較多時將浪費大量內存。

解決上述問題採取如下方法:在符合系統要求的前提下,逐一考慮每個字和字符,考慮其中有多少信息是真正必須存儲的,也就是說儘量精簡字庫,若有相同意義的字或詞就只保留一種而捨棄其它的同義字詞。此外,將字庫建在程序末尾,先依次存儲漢字字模,每個漢字字模佔用32個字節,然後依次存儲字符字模,每個字符字模佔用16個字節,並給漢字和字符統一編上序號(見圖1)。並為每一條輸出的漢字信息建立一個索引,索引由每條漢字信息中各個漢字和字符的序號組成。顯示一句話時,只需獲得這句話中各個漢字和字符的序號,根據序號Q先判斷需要顯示的是漢字還是字符,如果為漢字,則根據公式:字模地址=字庫首地址+32*Q,如果為字符,則根據公式:字模地址=字庫首地址+32*X+(Q-X)*16,求得它們的字模地址,依次將它們的字模複製並存入一個緩衝區,再根據液晶顯示原理將緩衝區字模送到顯示模塊埠[5]。程序流程見圖2。

通過以上方法給程式設計師造成一種假象:即他可以擁有同一份數據的多份副本,而又不必浪費內存,使得系統內存的總需求量降低,而且相同數量的數據可以隨機存儲、更新、訪問。但是,根據字序號找到一句話的各個字模再統一存入緩衝區勢必降低系統的時間效率,同時也需要程式設計師花費心力來完成不那麼直觀的代碼。而且系統需要擴充字庫時,不能直接在字庫末尾補充,而應在漢字字模末尾添加漢字字模,在字符字模末尾添加字符字模,再依次重新編寫字序號。此外,顯示句子的索引也需要修改,這就降低了系統的擴展性。不過在本文討論的節省內存問題上,衡量利弊,這種方法還是有效的。

3結論
在內存受限系統中建立精簡的字庫是顯示漢字的關鍵步驟。本文通過研究有關算法,在分析內存字庫所需存儲信息的特點的基礎上,提出了一種節省內存的字庫建立方法。依照此法在所設計的單片機電路上進行編程,能夠實現漢字的顯示,且明顯減少了系統的內存,滿足了實用的要求,所以,本文算法具有一定的實際意義。

linux作業系統文章專題:linux作業系統詳解(linux不再難懂)

相關焦點

  • 基於51單片機的漢字LCD智能顯示模塊設計
    系統組成本文引用地址:http://www.eepw.com.cn/article/21534.htm 本系統主要由三部分組成,分別為單片機,lcd模塊和flash字庫,圖1所示是該系統的硬體原理框圖,由於顯示所需要佔用的資源過多(本設計採用的是16×16點陣,每個漢字存儲需要32個字節),而單片機內部ram資源及其有限,所以系統設計時有必要擴展—
  • 基於USB接口的LED顯示系統設計
    本設計包括硬體和軟體。硬體包括LED顯示屏的驅動和控制。驅動部分負責根據行列選通信號向指定的LED發光器件提供合適的驅動電流;控制部分採用集成USB2. 0的微處理器CY7C68013A,實現USB通信和對行列移位寄存系統的控制。
  • Tachyon:Spark生態系統中的分布式內存文件系統
    Tachyon是Spark生態系統內快速崛起的一個新項目。 本質上, Tachyon是個分布式的內存文件系統, 它在減輕Spark內存壓力的同時,也賦予了Spark內存快速大量數據讀寫的能力。Tachyon把內存存儲的功能從Spark中分離出來, 使Spark可以更專注計算的本身, 以求通過更細的分工達到更高的執行效率。
  • 內存電路分析-設計框圖和金手指
    為了幫助大家把前面分享的內存知識融匯貫通,並能和實際的電路設計結合起來,我們就來針對一份實際的內存條設計電路原理進行詳細的分析和解讀。具體電路圖已經分享給大家,還沒有領取的朋友可在微信號「超硬工程師」界面上點擊屏幕下方的「資料分享」菜單,然後選擇「內存電路」,根據其中的步驟免費申請領取。
  • 液晶顯示器的漢字顯示方法
    摘 要: 研究了圖形液晶模塊的漢字顯示方法, 以8051 單片機為基礎, 介紹了液晶模塊與單片機的典型接口電路, 描述了通過外擴的EEPROM 存儲漢字字模數據, 將其作為外部數據存儲器進行尋址, 通過C51 程序詳細介紹了使用方法。對於程序存儲器和數據存儲器分開尋址的單片機, 該方式能起到節省程序存儲器, 擴大程序容量的作用。
  • 系統內存/進程內存知識掃盲
    的,需要觀察linux的內存使用狀態,首先需要判斷整體系統的內存情況,然後是進程級別的內存情況,你真的搞清楚這裡面的方法了嘛?Linux會在物理內存不足時,使用虛擬內存,內核會把暫時不用的內存塊信息寫到虛擬內存,這樣物理內存就得到了釋放,這塊兒內存就可以用於其他目的,而需要用到這些內容的時候,這些信息就會被重新從虛擬內存讀入物理內存。一般來說,如果系統要用到了虛擬內存,那表明系統的內存資源存在瓶頸了。
  • 基於ARM7微處理器的中文液晶顯示技術
    只能用於字符和數字的簡單顯示,不能滿足圖形曲線和漢字顯示的要求,而點陣式LCD不僅可以顯示字符、數字,還可以顯示各種圖形、曲線及漢字,並且可以實現屏幕上下左右滾動動畫功能,分區開窗口、反轉、閃爍等功能,用途十分廣泛,為了簡化液晶 顯示電路的設計和應用,生產廠家通常將液晶顯示單元、顯示控制器,顯示內存和顯示驅動電路等裝配在一起,做成液晶顯示模塊LCD Module(LCM)[1]。
  • 【語言論壇】從設計維度審視漢字發展
    因此,當代中國及東亞各國(地區)的視覺傳達設計師普遍存在濃厚的漢字情結,其中也不乏深入研究與創新的優秀作品。但總的來說,對於漢字的研究主要集中在訓詁、考證等語言文字學、漢字書法藝術、裝飾美術字或漢字字體字庫設計開發等方面,專門梳理漢字設計系統方法論、研究漢字設計思想模式,並以此為基礎將新技術、新媒介引入漢字設計視野的研究與實踐則較少。
  • STC89C52單片機對數字溫度計顯示系統的設計
    而主控制器是每個控制系統不可或缺的部分,正因為單片機有體積小,重量輕,抗幹擾能力強,環境要求不高,價格低廉,可靠性高,靈活性好,開發較為容易等優點,所以它是很多設計人員的首選控制器。而在人們的日常生活或工業生產中,經常要對溫度進行檢測及控制。在許多場合器材設備對溫度的要求非常高,而傳統的溫度計反應速度慢、讀數麻煩、測量精度不高、誤差大,所以需要設計一種高精度的溫度計。
  • 「漢字全息資源應用系統」正式上線
    1月11日,教育部「奮進之筆」行動、國家語委重大基礎資源建設項目「通用漢字全息資料庫建設」的標誌性成果「漢字全息資源應用系統」發布會在北京師範大學舉行。項目由北京師範大學中國文字整理與規範研究中心、漢字研究與現代應用實驗室負責實施。
  • 數字電路中顯示解碼器設計的分析與研究
    顯示解碼器輸出經驅動器使顯示器工作,輸出變量的多少和狀態取決於顯示器的種類,輸入變量的多少和狀態與輸出顯示結果有關。研究表明,顯示解碼器輸入變量的位數,n與輸出顯示結果的個數N之間滿足2n=N或2n-1N≤2n,輸出變量的個數與顯示器的輸入相同,狀態相互對應。
  • 手機內存過一會就顯示不足怎麼辦【圖文教程】
    手機內存過一會就顯示不足怎麼辦  1、定期清理後臺程序。  3、如果你剛開機後的內存都非常小,那麼就需要優化你的機器了優化有如下方法:  1)如果你的機器太亂了,那麼最好格式化你的機器,保持最乾淨的系統,你也可以看看這個時候你的最大內存是多少。
  • 《漢字的創意與設計 》教學設計
    《漢字的創意與設計 》教學設計一、教學目標【知識與技能】通過本課學習,識別創意漢字、了解漢字創意設計的過程與方法。【過程與方法】通過對漢字演變的學習了解字形字意的關聯,在教師示範的引導下通過想一想、做一做的環節,完成漢字創意的作品設計。
  • 4745G老年機加內存 是否還能經得起考驗?
    哪怕後臺僅運行個360安全衛士,然後在360瀏覽器裡通過搜狗輸入法打字,輸入拼音後需要5-8秒才能出現漢字;這種感覺真是讓人慾罷不能。考慮平時電腦的使用率並不高,於是想自己動手加下內存條試試看能否稍微提升使用快感,接下來讓我們拭目以待。
  • LCD作為終端顯示字符串的過程
    ,我們往往都會利用到各種GUI進行互動設計,但是對於GUI的字符串處理與中文字庫顯示,也許並不會特別關注,因為GUI已經幫助我們封裝了一些通用的API,在調用相對應的API就可以顯示想要的圖像和字符串了。
  • LCD彩色圖形顯示和英文、漢字顯示實現的具體原理和方法
    液晶顯示模塊LM057QC1T01  LM057QC1T01是夏普公司生產的圖形點陣256色STN液晶模塊,它的解析度為320×240,由於它具有接口簡單、工作穩定和便於操作等特點,在嵌入式系統有比較廣泛的應用。
  • 解析基於DSP的漢字語音識別系統的實現方式
    作為專門的研究領域,語音識別又是一門交叉學科,它與聲學、語音學、語言學、數位訊號處理理論、資訊理論、計算機科學等眾多學科緊密相連。語音識別經過四十多年的發展,已經顯示出巨大的應用前景。本文從實現原理入手,介紹語音識別系統的實現方式。
  • 古今漢字任你查 「漢字全息資源應用系統」上線
    如今,「漢字全息資源應用系統」的正式上線可能讓他再不用犯難——藉助資源庫,「古今漢字任你查」已經不再是夢想。1月11日,教育部「奮進之筆」行動、國家語委重大基礎資源建設項目「通用漢字全息資料庫建設」的標誌性成果「漢字全息資源應用系統」發布會在北京師範大學舉行,也標誌著該系統正式啟動上線。
  • 嵌入式系統裸機編程的內存管理簡介
    經常要與CPU、內存等打交道。CPU作為系統的動力源,其重要程度不言而喻。  但是,在裸機編程中,對內存的管理也不容忽視。如果稍微不注意,輕則,可能造成內存洩漏,重則造成內存訪問異常。導致系統死機。  嵌入式產品,對穩定性要求及其嚴格。動不動就死機,那可就麻煩大了。以下,是我本人對嵌入式系統裸機編程的內存管理的一些簡介。
  • 浙經院將系統研發「漢字藝術」
    錢江晚報·小時新聞 記者 陳素萍 通訊員 陳紅松11月17日,景德鎮昌南漢字陶瓷藝術研究中心和浙江經濟職業技術學院共同籤署課題研究合同書:景德鎮昌南漢字陶瓷藝術研究中心就「漢字藝術文創產品的研發及漢字藝術精品線上課程的開發