論文微控制器系統中的漢字顯示
論文微控制器系統中的漢字顯示
摘要:需要顯示的漢字較多時,微控制器系統中的漢字編碼非常繁瑣,微控制器系統中的漢字顯示。本文介紹一種直接利用PC機的漢字內碼作為微控制器系統的漢字編碼,以簡化系統的設計。
關鍵詞:微控制器 液晶顯示器 29F040 漢字顯示
引言
在現代工業控制和一些智慧化儀器儀表中,越來越多的場所需要用點陣圖形顯示器顯示漢字。通常的漢字顯示方式是先根據所需要的漢字提取漢字點陣(如16×16點陣),將點陣檔案存入ROM,形成新的漢字編碼;而在使用時剛需要先根據新的漢字編碼組成語句,再由MCU根據新編碼提取相應的點陣進行漢字顯示。在這種顯示方式中,如果使用的流字數量較大或語句較多時,利用漢字的新編碼組成語句將是一件十分繁瑣而枯燥的工作。針對這種情況,本文提出了一種十分簡單的方式——直接利用PC機的漢字內碼作為微控制器系統的編碼。下面以8031微控制器系統為例闡述如下:
一、硬體組成
本系統中採用香港精電公司的內建T6963控制器[1]的240128T點陣圖形液晶顯示器。該顯示器1行為240點,能容納16×16點陣的'漢字15個,總列數為128點,能顯示8行漢字。為了使用MCU操作可使用1片512KB的儲存器(如本系統中的29F040)用來儲存全部的國標16×16點陣漢遼、8×16的ASCII碼點陣資料以及漢字語句編碼資料,計算機論文《微控制器系統中的漢字顯示》。為了降低成本和減小體積,對於速度要求不是很高的場合也可採用大容量的序列資料儲存器,如AT45DB041B。具體的硬體控制電路如圖1所示(與漢字顯示無關的電路略)。
由於29F040的容量為512KB,而5031微控制器只能管理64KB的資料間,所以可將29F040分成16頁,每頁32KB,佔微控制器系統資料空間的8000H~0FFFFH(剩餘32KB為微控制器系統的其他儲存器和外設)。頁碼由微控制器的P1.0~P1.3選擇。液晶顯示器的地址為7FF8H~7FF9H。二、漢字顯示原理及軟體設計
UCDOS軟體中的檔案HZK16和檔案ASC16分別為16×16的國標漢字點陣檔案和8×16的ASCII碼點陣檔案,以二進位制格式儲存。在檔案HZK16中,按漢字區位碼從小到大依次存有國標區位碼錶中的所有漢字,每個漢字佔用32個位元組,每個區為94個漢字。在檔案ASC16中按ASCII碼從小到大依次存有8×16的ASCII碼點陣,每個ASCII碼佔用16個位元組。
在PC機的文字檔案中,漢字是以機內碼的形式儲存的,每個漢字佔用兩個位元組:第一個位元組為區碼,為了與ASCII碼區別,範圍從十六進位制的0A1H開始(小於80H的為ASCII碼字元),對應區位碼中區碼的第一區;第二個位元組為位碼,範圍也是從0A1H開始,對應某區中的第一個位碼。這樣,將漢字機內碼減去0A0AH就得該漢字的區位碼。
例如漢字“房”的機內碼為十六進位制的“B7BF”,其中“B7”表示區碼,“BF”表示位碼。所以“房”的區位碼為0B7BFH-0A0A0H=171FH。將區碼和位碼分別轉換為十進位制得漢字“房”的區位碼為“2331”,即“房”的點陣位於第23區的第31個字的位置,相當於在檔案HZK16中的位置為第32×[(23-1) ×94+(31-1)]=67136B以後的32個位元組為“房”的顯示點陣。