1 概 述 由于圖形點陣液晶顯示模塊具有顯示信息豐富(可顯示漢字、字符、曲線、圖形)、功耗低、體積小、質量輕、壽命長、不產生電磁輻射污染等優點,因而是單片機系統中理想的顯示器件。近年來被廣泛應用于單片機控制的智能儀器儀表、工業控制領域、通信器材和家用電器中。目前,國內在單片機系統中用于中文顯示時,使用的液晶顯示模塊主要存在以下幾方面的不足。 ① 占用ROM空間大。以圖形方式顯示漢字,每個漢字將占用32字節的ROM空間,因此限制了顯示漢字字符的數量。此點對內部Flash閃存數量較小的單片機,影響尤為嚴重。 ② 與單片機的硬件接口電路復雜。8根數據線外,尚需使用片選、寄存器選擇、讀/寫選擇、使能控制等控制線,使得對單片機的硬件資源占用較為嚴重。 ③ 接口時序復雜,軟件編程繁復。 上述的幾點內容限制了液晶顯示技術在單片機系統中的應用。 這里介紹的OCMJ5X10是160×80點陣的中文圖文液晶圖形顯示器模塊。該模塊的內部由于含有國標一級簡體字庫,使得漢字的顯示異常方便;同時,該模塊與單片機的硬件接口除數據總線外,僅使用了REQ/BUSY兩根握手信號線,簡化了與單片機的硬件接口電路設計。上述特點對軟件、硬件資源均十分緊張的單片機系統來說是十分重要的。 2 主要特點及引腳定義 以下是OCMJ5X10中文液晶顯示模塊的主要特性。 ① OCMJ5X10中文液晶顯示器模塊內含 GB 2312 16×16點陣國標一級簡體漢字和 ASCII 8×8(半高)及8×16(全高)點陣英文字庫。用戶輸入區位碼或 ASCII 碼即可實現文本顯示。 ② OCMJ5X10中文液晶顯示模塊也可用作一般的點陣圖形顯示器,提供位點陣和字節點陣兩種圖形顯示功能。用戶可在指定的屏幕位置上以點為單位或以字節為單位進行圖形顯示。完全兼容一般的圖形點陣模塊。 ③ OCMJ5X10中文液晶顯示模塊可以實現漢字、ASCII 碼、點陣圖形和變化曲線的同屏顯示,并可通過字節點陣圖形方式造字。 ④ OCMJ5X10中文液晶顯示模塊具有上/下/左/右移動當前顯示屏幕及清除屏幕的命令,一改傳統的使用大量的設置命令進行初始化的方法。 OCMJ5X10 中文模塊所有的設置初始化工作都是在上電時自動完成的,實現了“即插即用”;同時,保留了一條專用的復位線供用戶選擇使用,可對工作中的模塊進行軟件或硬件強制復位。規劃整齊的10個用戶接口命令代碼,非常容易記憶。標準用戶硬件接口采用REQ/BUSY 握手協議,簡單可靠。 ⑤ OCMJ5X10中文液晶顯示模塊使用+5V單電源,同時由模塊內部提供顯示驅動負電壓,簡化了系統電源的設計。該模塊還具有LED背光源。 OCMJ5X10中文圖文液晶顯示器的引腳說明如表1所列。 表1 OCMJ5X10引腳說明
3 硬件接口協議及接口時序 OCMJ5X10模塊與CPU的接口除了使用DB0~DB7口8根數據線外,僅使用了REQ和BUSY兩根控制線,構成請求/應答(REQ /BUSY)握手方式,省略了傳統模塊接口方式的片選、讀寫控制、指令/數據選擇、使能控制等控制線,從而使硬件接口及軟件時序變得非常簡單。在硬件資源十分緊張的應用系統中,也可采用REQ單線延時控制方式,從而把硬件資源占用降至最低。接口協議如下:當BUSY線為高電平時(BUSY =1),表示模塊忙于內部處理,不能接收用戶命令;而BUSY為低電平時(BUSY =0),表示模塊空閑,等待接收用戶命令。CPU可在BUSY為低后的任意時刻開始發送命令。首先,把用戶命令的當前字節放到數據線上,接著發送高電平 REQ 信號,通知模塊,請求處理當前數據線上的命令或數據。模塊在收到外部的REQ高電平信號后,立即讀取數據線上的命令或數據,同時將應答線BUSY變為高電平,表明模塊已收到數據并正在忙于對此數據的內部處理。此時,用戶對模塊的寫操作已經完成,可以撤消數據線上的信號并可做模塊顯示以外的其它工作,也可不斷地查詢BUSY是否為低。如果BUSY =0,說明模塊對用戶的寫操作已經執行完畢,可以再送下一個數據。如向模塊發出一個完整的顯示漢字的命令,包括顯示坐標及漢字代碼在內共需5個字節,模塊在接收到最后一個字節后,才開始執行整個命令的內部操作;因此,最后一個字節的應答BUSY 高電平(BUSY =1)持續時間較長。這里以寫入漢字命令的時序為例,給出 圖1所示的OCMJ5X10時序圖,對應的具體時間參數說明如表2所列。 表 2 OCMJ5X10模塊時間參數
4 用戶命令 OCMJ5X10模塊共有3類10條命令,每條命令分為操作碼和操作數兩部分,操作數為十六進制數。下面介紹該模塊的用戶命令。 (1)顯示國標漢字 命令格式 F0 XX YY QQ WW XX:以漢字為單位的屏幕行坐標值。 YY:以漢字為單位的屏幕列坐標值。 QQ WW:坐標位置上要顯示的GB 2312漢字區位碼。 OCMJ5X10模塊由于內部含有中文字庫,因此中文字符的顯示非常簡單,只需給出該漢字的區位碼即可顯示該字。區位碼表可參見GB2312字符集。 (2)顯示8×8 ASCII字符 命令格式 F1 XX YY AS 該命令為4字節命令(最長執行時間為0.8ms,ts2= 0.8ms)。 XX:以ASCII碼為單位的屏幕行坐標值。 YY:以ASCII碼為單位的屏幕列坐標值。 AS:坐標位置上要顯示的ASCII 字符碼。 (3)顯示8×16 ASCII字符 命令格式 F9 XX YY AS 操作數意義同上。 (4)顯示位點陣 命令格式 F2 XX YY 該命令為3字節命令(最長執行時間為0.1ms,ts2= 0.1ms)。 (5)顯示字節點陣 命令格式 F3 XX YY BT 該命令為4字節命令(最長執行時間為0.1ms,ts2= 0.1ms)。 (6)清 屏 命令格式 F4 該命令為單字節命令(最長執行時間為11ms,ts2=11ms),其功能為將屏幕清空。 (7)上 移 命令格式 F5 該命令為單字節命令(最長執行時間為25ms,ts2=25ms),其功能為將屏幕向上移動一個點陣行。 (8)下 移 命令格式 F6 該命令為單字節命令(最長執行時間為30ms,ts2=30ms),其功能為將屏幕向下移動一個點陣行。 (9)左 移 命令格式 F7 該命令為單字節命令(最長執行時間為12ms,ts2=12ms),其功能為將屏幕向左移動一個點陣行。 (10)右 移 命令格式 F8 該命令為單字節命令(最長執行時間為12ms,ts2=12ms),其功能為將屏幕向右移動一個點陣行。 5 具體應用 由于OCMJ5X10內部具有中文字庫,且使用了簡單的兩線握手協議,因而將其應用在嵌入式系統中,可簡化顯示電路的硬件接口設計及軟件編程。雖然模塊與單片機之間數據的傳輸采用并行模式,占用單片機系統的硬件資源相對較多,但是相應顯示軟件的編制卻要比采用串行接口模式的中文字庫液晶模塊相對簡單。尤其是圖形顯示界面設計,利用OCMJ5X10提供的顯示字節點陣命令(線繪圖),可方便、快捷地繪制出顯示圖形。此點在繪圖速度、ROM空間占用等方面優于串行接口模式的液晶模塊。下面給出OCMJ5X10在嵌入式系統中的具體應用,包括硬件接口電路及軟件編程。 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 顯示軟件 下面給出與上述硬件電路配套的顯示子程序。其包括初始化、顯示漢字、顯示8×16點陣ASCII字符、點繪圖及線繪圖子程序。可根據顯示需要在主程序的相應位置調用,即可實現相應的顯示功能。OCMJ5X10內部含有GB 2312一級字庫,可滿足絕大部分應用系統漢字顯示的需要。對于一級國標字庫內所沒有的漢字或需要顯示復雜圖形時,可通過調用繪點及繪線子程序來實現任意復雜漢字或圖形的顯示。 ;位定義 BUSY BIT P3.4 REQ BIT P3.5 ;數據定義 X DATA 30H ;屏幕行坐標緩沖區 Y DATA 31H ;屏幕列坐標緩沖區 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 ;等待數據總線穩定 SETB REQ ;向模塊發請求命令 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 ;寫區位碼高位 MOV A , DATAL ACALL SUB1 ;寫區位碼低位 RET ;寫8×16 ASCII碼程序 ASC2:MOV A , #0F9H ;寫顯示8×16 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中文圖文液晶模塊相對簡單的硬件接口及簡單的用戶命令,可為嵌入式系統設計出顯示信息量大且顯示信息豐富的全中文人機界面,避免了傳統液晶模塊中文圖形顯示界面復雜的硬件接口設計及軟件編程。該模塊為嵌入式系統人機界面設計提供了一種較好的解決方案。 參考文獻 1. 李維諟.郭強 液晶顯示與應用技術 2000 作 者:黑龍江八一農墾大學 孟臣 李敏 來 源:單片機與嵌入式系統應用 2003(12) |