<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機系統中的漢字顯示解決方案

單片機系統中的漢字顯示解決方案

作者: 時(shí)間:2012-07-02 來(lái)源:網(wǎng)絡(luò ) 收藏

引言

本文引用地址:http://dyxdggzs.com/article/171206.htm

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

一、硬件組成

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

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

二、漢字顯示原理及軟件設計

UCDOS軟件中的文件HZK16和文件ASC16分別為16×16的國標漢字點(diǎn)陣文件和8×16的ASCII碼點(diǎn)陣文件,以二進(jìn)制格式存儲。在文件HZK16中,按漢字區位碼從小到大依次存有國標區位碼表中的所有漢字,每個(gè)漢字占用32個(gè)字節,每個(gè)區為94個(gè)漢字。在文件ASC16中按ASCII碼從小到大依次存有8×16的ASCII碼點(diǎn)陣,每個(gè)ASCII碼占用16個(gè)字節。

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

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

在本單片機系統中,起始地址的高4位為頁(yè)號,送P1口,低15位為數據區地址,送指針DPTR。利用“MOVX”指令連續取32個(gè)字節送LCD的相應位置,就能實(shí)現正確的漢字顯示。

ASCII碼的顯示與漢字的顯示基本原理相同。在文件ASC16中不存在機內碼的問(wèn)題,其顯示點(diǎn)陣直接按ASCII碼從小到大依次排列,只是每個(gè)ASCII碼在文本文件中只占1個(gè)字節且小于80H,而且ASCII碼為8×16點(diǎn)陣,所以在A(yíng)SCII16文件中,每個(gè)ASCII碼的點(diǎn)陣也只占16個(gè)字節。

首先提取16×16的國標漢字點(diǎn)陣和8×16的ASCII碼點(diǎn)陣(如UCDOS軟件中的HZK16和ASC16)并將其直接寫(xiě)入29F040。其中HZK16(共256KB)點(diǎn)0~7頁(yè)。為了便于編程,ASC16雖然只有4KB,也單獨占用第8頁(yè)。其余剩下的空間用來(lái)存儲漢字語(yǔ)句的編碼。

由于240×128點(diǎn)陣的LED顯示器每個(gè)只能顯示15個(gè)漢字(16×16點(diǎn)陣漢字),即30個(gè)字節。所以可將需要顯示的語(yǔ)句按30個(gè)字節為1行進(jìn)行編寫(xiě),不足30個(gè)字符的則補空格。在PC機上進(jìn)行錄入時(shí),每行30個(gè)字符再加上回車(chē)鍵和換行符,實(shí)占32個(gè)字符。所錄入的語(yǔ)句以純文本形式存盤(pán),再將該文本文件以二進(jìn)制的形式寫(xiě)入29F040的第9頁(yè)。那么,以后根據需要顯示的語(yǔ)句行號便可以進(jìn)行正確的顯示。此,作者推出薦使用DOS版本的WPS軟件的“編輯非文收文件”功能,它能清楚地顯示每行是否有30個(gè)字符

53.jpg

為方便讀者,將已經(jīng)在實(shí)際應用中中通過(guò)的匯編子程序列出如下(關(guān)于LCD控制器T6963的用戶(hù)法請見(jiàn)參考文獻1)。

LCDCOM EQU 7FF9H

LCDDAT EQU 7FF8H

;顯示1行漢字子程序

;漢字語(yǔ)句位置編號DPTR;行號:R6 PRHZ:MOV 24H,DPH

MOV 25H,DPL

PUSH DPH

PUSH DPL

MOV A,DPH ;計算頁(yè)號

RR A

RR A

ADD A,#9;從第9區開(kāi)始存放每行字符的機內碼

ORL A,#0F0H

MOV P1,A

LCALL RL245 ;行號乘以32(每行32個(gè)字符)

SETB 24H,7 ;數據地址位于8000H~0FFFFH

MOV DPH,24H

MOV DPL,25H

MOV R0,#0E0H

MOV R7,#30 ;連續取出30個(gè)字符至0E0H內部數據存儲器

PRHZ3:MOVX A,@DPTR

led顯示器相關(guān)文章:led顯示器原理



上一頁(yè) 1 2 3 4 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>