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