日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
單片機(jī)系統(tǒng)中的漢字顯示
單片機(jī)系統(tǒng)中的漢字顯示
 更新時(shí)間:2008-8-17 16:27:18  點(diǎn)擊數(shù):15
【字體: 字體顏色

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

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

引言

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

一、硬件組成

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

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

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

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

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

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

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

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

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

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

根據(jù)以上原則,顯示1行漢字的具體程序框圖如圖2所示。

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

LCDCOM EQU 7FF9H

LCDDAT EQU 7FF8H

;顯示1行漢字子程序

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

MOV 25H,DPL

PUSH DPH

PUSH DPL

MOV A,DPH ;計(jì)算頁(yè)號(hào)

RR A

RR A

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

ORL A,#0F0H

MOV P1,A

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

SETB 24H,7 ;數(shù)據(jù)地址位于8000H~0FFFFH

MOV DPH,24H

MOV DPL,25H

MOV R0,#0E0H

MOV R7,#30 ;

  • 上一篇: Windows 95下智能數(shù)據(jù)采集系統(tǒng)
  • 下一篇: ADuC812應(yīng)用中的若干問(wèn)題
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1