精品一区二区中文在线,无遮挡h肉动漫在线观看,国产99视频精品免视看9,成全免费高清大全

推薦文檔列表

單片機系統(tǒng)中的漢字顯示

時間:2021-10-01 09:37:17 計算機論文 我要投稿

單片機系統(tǒng)中的漢字顯示

摘要:需要顯示的漢字較多時,單片機系統(tǒng)中的漢字編碼非常繁瑣。本文介紹一種直接利用PC機的漢字內(nèi)碼作為單片機系統(tǒng)的漢字編碼,以簡化系統(tǒng)的設(shè)計。

    關(guān)鍵詞:單片機 液晶顯示器 29F040 漢字顯示

引言

在現(xiàn)代工業(yè)控制和一些智能化儀器儀表中,越來越多的場所需要用點陣圖形顯示器顯示漢字。通常的漢字顯示方式是先根據(jù)所需要的漢字提取漢字點陣(如16×16點陣),將點陣文件存入ROM,形成新的漢字編碼;而在使用時剛需要先根據(jù)新的漢字編碼組成語句,再由MCU根據(jù)新編碼提取相應(yīng)的點陣進行漢字顯示。在這種顯示方式中,如果使用的流字?jǐn)?shù)量較大或語句較多時,利用漢字的新編碼組成語句將是一件十分繁瑣而枯燥的工作。針對這種情況,本文提出了一種十分簡單的方式——直接利用PC機的漢字內(nèi)碼作為單片機系統(tǒng)的編碼。下面以8031單片機系統(tǒng)為例闡述如下:

一、硬件組成

本系統(tǒng)中采用香港精電公司的內(nèi)置T6963控制器[1]的240128T點陣圖形液晶顯示器。該顯示器1行為240點,能容納16×16點陣的漢字15個,總列數(shù)為128點,能顯示8行漢字。為了使用MCU操作可使用1片512KB的存儲器(如本系統(tǒng)中的29F040)用來存儲全部的國標(biāo)16×16點陣漢遼、8×16的ASCII碼點陣數(shù)據(jù)以及漢字語句編碼數(shù)據(jù)。為了降低成本和減小體積,對于速度要求不是很高的場合也可采用大容量的串行數(shù)據(jù)存儲器,如AT45DB041B。具體的硬件控制電路如圖1所示(與漢字顯示無關(guān)的電路略)。

由于29F040的容量為512KB,而5031微控制器只能管理64KB的數(shù)據(jù)間,所以可將29F040分成16頁,每頁32KB,占單片機系統(tǒng)數(shù)據(jù)空間的8000H~0FFFFH(剩余32KB為單片機系統(tǒng)的其他存儲器和外設(shè))。頁碼由單片機的P1.0~P1.3選擇。液晶顯示器的地址為7FF8H~7FF9H。

二、漢字顯示原理及軟件設(shè)計

UCDOS軟件中的文件HZK16和文件ASC16分別為16×16的國標(biāo)漢字點陣文件和8×16的ASCII碼點陣文件,以二進制格式存儲。在文件HZK16中,按漢字區(qū)位碼從小到大依次存有國標(biāo)區(qū)位碼表中的所有漢字,每個漢字占用32個字節(jié),每個區(qū)為94個漢字。在文件ASC16中按ASCII碼從小到大依次存有8×16的ASCII碼點陣,每個ASCII碼占用16個字節(jié)。

在PC機的文本文件中,漢字是以機內(nèi)碼的形式存儲的,每個漢字占用兩個字節(jié):第一個字節(jié)為區(qū)碼,為了與ASCII碼區(qū)別,范圍從十六進制的0A1H開始(小于80H的為ASCII碼字符),對應(yīng)區(qū)位碼中區(qū)碼的第一區(qū);第二個字節(jié)為位碼,范圍也是從0A1H開始,對應(yīng)某區(qū)中的第一個位碼。這樣,將漢字機內(nèi)碼減去0A0AH就得該漢字的區(qū)位碼。

例如漢字“房”的機內(nèi)碼為十六進制的“B7BF”,其中“B7”表示區(qū)碼,“BF”表示位碼。所以“房”的區(qū)位碼為0B7BFH-0A0A0H=171FH。將區(qū)碼和位碼分別轉(zhuǎn)換為十進制得漢字“房”的區(qū)位碼為“2331”,即“房”的點陣位于第23區(qū)的第31個字的位置,相當(dāng)于在文件HZK16中的位置為第32×[(23-1) ×94+(31-1)]=67136B以后的32個字節(jié)為“房”的顯示點陣。

在本單片機系統(tǒng)中,

[1] [2] [3] [4] [5]