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