內(nèi)含標準字庫的中文液晶模塊OCMJ5X10
引 言
1 概 述
由于圖形點陣液晶顯示模塊具有顯示信息豐富(可顯示漢字、字符、曲線、圖形)、功耗低、體積小、質(zhì)量輕、壽命長、不產(chǎn)生電磁輻射污染等優(yōu)點,因而是單片機系統(tǒng)中理想的顯示器件。近年來被廣泛應(yīng)用于單片機控制的智能儀器儀表、工業(yè)控制領(lǐng)域、通信器材和家用電器中。目前,國內(nèi)在單片機系統(tǒng)中用于中文顯示時,使用的液晶顯示模塊主要存在以下幾方面的不足。
?、?占用ROM空間大。以圖形方式顯示漢字,每個漢字將占用32字節(jié)的ROM空間,因此限制了顯示漢字字符的數(shù)量。此點對內(nèi)部Flash閃存數(shù)量較小的單片機,影響尤為嚴重。
?、?與單片機的硬件接口電路復(fù)雜。該類型模塊除使用8根數(shù)據(jù)線外,尚需使用片選、寄存器選擇、讀/寫選擇、使能控制等控制線,使得對單片機的硬件資源占用較為嚴重。
?、?接口時序復(fù)雜,軟件編程繁復(fù)。
上述的幾點內(nèi)容限制了液晶顯示技術(shù)在單片機系統(tǒng)中的應(yīng)用。
這里介紹的OCMJ5X10是16080點陣的中文圖文液晶圖形顯示器模塊。該模塊的內(nèi)部由于含有國標一級簡體字庫,使得漢字的顯示異常方便;同時,該模塊與單片機的硬件接口除數(shù)據(jù)總線外,僅使用了REQ/BUSY兩根握手信號線,簡化了與單片機的硬件接口電路設(shè)計。上述特點對軟件、硬件資源均十分緊張的單片機系統(tǒng)來說是十分重要的。
圖1 OCMJ5X10寫漢字時序圖
2 主要特點及引腳定義
以下是OCMJ5X10中文液晶顯示模塊的主要特性。
① OCMJ5X10中文液晶顯示器模塊內(nèi)含 GB 2312 1616點陣國標一級簡體漢字和 ASCII 88(半高)及816(全高)點陣英文字庫。用戶輸入?yún)^(qū)位碼或 ASCII 碼即可實現(xiàn)文本顯示。
② OCMJ5X10中文液晶顯示模塊也可用作一般的點陣圖形顯示器,提供位點陣和字節(jié)點陣兩種圖形顯示功能。用戶可在指定的屏幕位置上以點為單位或以字節(jié)為單位進行圖形顯示。完全兼容一般的圖形點陣模塊。
③ OCMJ5X10中文液晶顯示模塊可以實現(xiàn)漢字、ASCII 碼、點陣圖形和變化曲線的同屏顯示,并可通過字節(jié)點陣圖形方式造字。
④ OCMJ5X10中文液晶顯示模塊具有上/下/左/右移動當(dāng)前顯示屏幕及清除屏幕的命令,一改傳統(tǒng)的使用大量的設(shè)置命令進行初始化的方法。OCMJ5X10 中文模塊所有的設(shè)置初始化工作都是在上電時自動完成的,實現(xiàn)了“即插即用”;同時,保留了一條專用的復(fù)位線供用戶選擇使用,可對工作中的模塊進行軟件或硬件強制復(fù)位。規(guī)劃整齊的10個用戶接口命令代碼,非常容易記憶。標準用戶硬件接口采用REQ/BUSY 握手協(xié)議,簡單可靠。
⑤ OCMJ5X10中文液晶顯示模塊使用+5V單電源,同時由模塊內(nèi)部提供顯示驅(qū)動負電壓,簡化了系統(tǒng)電源的設(shè)計。該模塊還具有LED背光源。
OCMJ5X10中文圖文液晶顯示器的引腳說明如表1所列。
表1 OCMJ5X10引腳說明
引 腳 | 名 稱 | 方 向 | 說 明 |
1 | VLED- | I | 背光源負極(LED-OV) |
2 | VLED+ | I | 背光源正極(LED+5V) |
3 | VSS | I | 地 |
4 | VDD | I | (+5V) |
5~12 | DB0~DB7 | I | 數(shù)據(jù)0~7 |
13 | BUSY | O | =1,已收到數(shù)據(jù)并正在處理中; =0,模塊空閑,可接收數(shù)據(jù) |
14 | REQ | I | 請求信號,高電平有效 |
15 | RES | I | 復(fù)位信號,低電平有效 |
16 | NC | ||
17 | RT1 | LCD灰度調(diào)整,外接電阻端 | |
18 | RT2 | LCD灰度調(diào)整,外接電阻端 |
3 硬件接口協(xié)議及接口時序
OCMJ5X10模塊與CPU的接口除了使用DB0~DB7口8根數(shù)據(jù)線外,僅使用了REQ和BUSY兩根控制線,構(gòu)成請求/應(yīng)答(REQ/BUSY)握手方式,省略了傳統(tǒng)模塊接口方式的片選、讀寫控制、指令/數(shù)據(jù)選擇、使能控制等控制線,從而使硬件接口及軟件時序變得非常簡單。在硬件資源十分緊張的應(yīng)用系統(tǒng)中,也可采用REQ單線延時控制方式,從而把硬件資源占用降至最低。接口協(xié)議如下:當(dāng)BUSY線為高電平時(BUSY =1),表示模塊忙于內(nèi)部處理,不能接收用戶命令;而BUSY為低電平時(BUSY =0),表示模塊空閑,等待接收用戶命令。CPU可在BUSY為低后的任意時刻開始發(fā)送命令。首先,把用戶命令的當(dāng)前字節(jié)放到數(shù)據(jù)線上,接著發(fā)送高電平REQ 信號,通知模塊,請求處理當(dāng)前數(shù)據(jù)線上的命令或數(shù)據(jù)。模塊在收到外部的REQ高電平信號后,立即讀取數(shù)據(jù)線上的命令或數(shù)據(jù),同時將應(yīng)答線BUSY變?yōu)楦唠娖剑砻髂K已收到數(shù)據(jù)并正在忙于對此數(shù)據(jù)的內(nèi)部處理。此時,用戶對模塊的寫操作已經(jīng)完成,可以撤消數(shù)據(jù)線上的信號并可做模塊顯示以外的其它工作,也可不斷地查詢BUSY是否為低。如果BUSY =0,說明模塊對用戶的寫操作已經(jīng)執(zhí)行完畢,可以再送下一個數(shù)據(jù)。如向模塊發(fā)出一個完整的顯示漢字的命令,包括顯示坐標及漢字代碼在內(nèi)共需5個字節(jié),模塊在接收到最后一個字節(jié)后,才開始執(zhí)行整個命令的內(nèi)部操作;因此,最后一個字節(jié)的應(yīng)答B(yǎng)USY 高電平(BUSY =1)持續(xù)時間較長。這里以寫入漢字命令的時序為例,給出 圖1所示的OCMJ5X10時序圖,對應(yīng)的具體時間參數(shù)說明如表2所列。
表2 OCMJ5X10模塊時間參數(shù)
編 號 | 參數(shù)名稱 | 最小值 | 最大值 | 說 明 |
1 | tr/μs | 0.4 | - | 數(shù)據(jù)線上數(shù)據(jù)穩(wěn)定時間 |
2 | tb/μs | 2 | 20 | 最大模塊響應(yīng)時間 |
3 | trt/μs | 11 | - | 最小REQ保持時間 |
4 | ts1/μs | 20 | 45 | 最大數(shù)據(jù)接收時間 |
5 | ts2/ms | - | 30 | 最大命令指令處理時間 |
4 用戶命令
OCMJ5X10模塊共有3類10條命令,每條命令分為操作碼和操作數(shù)兩部分,操作數(shù)為十六進制數(shù)。下面介紹該模塊的用戶命令。
(1)顯示國標漢字
命令格式 F0 XX YY QQ WW
XX:以漢字為單位的屏幕行坐標值。
YY:以漢字為單位的屏幕列坐標值。
QQ WW:坐標位置上要顯示的GB 2312漢字區(qū)位碼。
OCMJ5X10模塊由于內(nèi)部含有中文字庫,因此中文字符的顯示非常簡單,只需給出該漢字的區(qū)位碼即可顯示該字。區(qū)位碼表可參見GB2312字符集。
(2)顯示88 ASCII字符
命令格式 F1 XX YY AS
該命令為4字節(jié)命令(最長執(zhí)行時間為0.8ms,ts2= 0.8ms)。
XX:以ASCII碼為單位的屏幕行坐標值。
YY:以ASCII碼為單位的屏幕列坐標值。
AS:坐標位置上要顯示的ASCII 字符碼。
(3)顯示816 ASCII字符
命令格式 F9 XX YY AS
操作數(shù)意義同上。
(4)顯示位點陣
命令格式 F2 XX YY
該命令為3字節(jié)命令(最長執(zhí)行時間為0.1ms,ts2= 0.1ms)。
(5)顯示字節(jié)點陣
命令格式 F3 XX YY BT
該命令為4字節(jié)命令(最長執(zhí)行時間為0.1ms,ts2= 0.1ms)。
(6)清 屏
命令格式 F4
該命令為單字節(jié)命令(最長執(zhí)行時間為11ms,ts2=11ms),其功能為將屏幕清空。
(7)上 移
命令格式 F5
該命令為單字節(jié)命令(最長執(zhí)行時間為25ms,ts2=25ms),其功能為將屏幕向上移動一個點陣行。
(8)下 移
命令格式 F6
該命令為單字節(jié)命令(最長執(zhí)行時間為30ms,ts2=30ms),其功能為將屏幕向下移動一個點陣行。
(9)左 移
命令格式 F7
該命令為單字節(jié)命令(最長執(zhí)行時間為12ms,ts2=12ms),其功能為將屏幕向左移動一個點陣行。
(10)右 移
命令格式 F8
該命令為單字節(jié)命令(最長執(zhí)行時間為12ms,ts2=12ms),其功能為將屏幕向右移動一個點陣行。
圖2 OCMJ5X10液晶顯示模塊與AT89C52單片機的接口電路
5 具體應(yīng)用
由于OCMJ5X10內(nèi)部具有中文字庫,且使用了簡單的兩線握手協(xié)議,因而將其應(yīng)用在嵌入式系統(tǒng)中,可簡化顯示電路的硬件接口設(shè)計及軟件編程。雖然模塊與單片機之間數(shù)據(jù)的傳輸采用并行模式,占用單片機系統(tǒng)的硬件資源相對較多,但是相應(yīng)顯示軟件的編制卻要比采用串行接口模式的中文字庫液晶模塊相對簡單。尤其是圖形顯示界面設(shè)計,利用OCMJ5X10提供的顯示字節(jié)點陣命令(線繪圖),可方便、快捷地繪制出顯示圖形。此點在繪圖速度、ROM空間占用等方面優(yōu)于串行接口模式的液晶模塊。下面給出OCMJ5X10在嵌入式系統(tǒng)中的具體應(yīng)用,包括硬件接口電路及軟件編程。
5.1 硬件接口電路
這里以AT89C52單片機為例,給出OCMJ5X10液晶顯示模塊與單片機的接口電路。單片機與模塊采用間接控制方式和REQ/BUSY握手方式。AT89C52的P1.0~P1.7口與模塊的DB0~DB7數(shù)據(jù)線相連,P3.4與模塊BUSY線相連,P3.5與模塊REQ線相連;晶振為12MHz,模塊采用上電自動復(fù)位。AT89C52與OCMJ5X10的接口電路如圖2所示。
5.2 顯示軟件
下面給出與上述硬件電路配套的顯示子程序。其包括初始化、顯示漢字、顯示816點陣ASCII字符、點繪圖及線繪圖子程序。可根據(jù)顯示需要在主程序的相應(yīng)位置調(diào)用,即可實現(xiàn)相應(yīng)的顯示功能。OCMJ5X10內(nèi)部含有GB 2312一級字庫,可滿足絕大部分應(yīng)用系統(tǒng)漢字顯示的需要。對于一級國標字庫內(nèi)所沒有的漢字或需要顯示復(fù)雜圖形時,可通過調(diào)用繪點及繪線子程序來實現(xiàn)任意復(fù)雜漢字或圖形的顯示。
;位定義
BUSY BIT P3.4
REQ BIT P3.5
;數(shù)據(jù)定義
X DATA 30H ;屏幕行坐標緩沖區(qū)
Y DATA 31H ;屏幕列坐標緩沖區(qū)
DATAH DATA 32H ;顯示值高位
DATAL DATA 33H ;顯示值低位
;初始化子程序
INT: MOV SP,#60H ;設(shè)堆棧
CLR REQ ;請求線清0
SETB BUSY ;將P3.4設(shè)為輸入口
RET
;寫模塊子程序
SUB1: JB BUSY ,SUB1 ;確信模塊空閑
MOV P1 , A ;向總線送數(shù)椐
NOP ;等待數(shù)據(jù)總線穩(wěn)定
SETB REQ ;向模塊發(fā)請求命令
WAIT: JNB BUSY,WAIT ;等待模塊響應(yīng)
CLR REQ ;清REQ
RET ;返回
;寫漢字程序
HZ: MOV A , #0F0H ;寫顯示漢字命令
ACALL SUB1
MOV A , X
ACALL SUB1 ;寫屏幕行坐標值
MOV A , Y
ACALL SUB1 ;寫屏幕列坐標值
MOV A , DATAH
ACALL SUB1 ;寫區(qū)位碼高位
MOV A , DATAL
ACALL SUB1 ;寫區(qū)位碼低位
RET
;寫816 ASCII碼程序
ASC2:MOV A , #0F9H ;寫顯示816 ASCII
ACALL SUB1 ;字符命令
MOV A , X
ACALL SUB1 ;寫屏幕行坐標值
MOV A , Y
ACALL SUB1 ;寫屏幕列坐標值
MOV A , DATAL
ACALL SUB1 ;寫字符ASCII碼
RET
;點繪圖子程序
HD: MOV A , #0F2H;寫顯示位點陣命令
ACALL SUB1
MOV A , X ;寫點屏幕行坐標值
ACALL SUB1
MOV A , Y ;寫點屏幕列坐標值
ACALL SUB1
RET
;線繪圖子程序
HX: MOV A , #0F3H;寫顯示位點陣命令
ACALL SUB1
MOV A , X ;寫點屏幕行坐標值
ACALL SUB1
MOV A , Y ;寫點屏幕列坐標值
ACALL SUB1
MOV A , DATAL
RET
;清屏程序
CLR: MOV A , #0F4H ;寫清屏命令
ACALL SUB1
RET
結(jié) 語
利用OCMJ5X10中文圖文液晶模塊相對簡單的硬件接口及簡單的用戶命令,可為嵌入式系統(tǒng)設(shè)計出顯示信息量大且顯示信息豐富的全中文人機界面,避免了傳統(tǒng)液晶模塊中文圖形顯示界面復(fù)雜的硬件接口設(shè)計及軟件編程。該模塊為嵌入式系統(tǒng)人機界面設(shè)計提供了一種較好的解決方案。
評論