點陣式液晶接口簡單,能以點陣或圖形方式顯示出各種信息,因此在各種電子設計中得到廣泛應用。但是,它的接口必須遵循一定的硬件和時序規范,根據不同的液晶驅動器,可能需要發出不同的命令進行控制才能顯示數據。而且命令的執行需要耗費一定時間,在系統大量的實時數據的情況下,如果直接控制液晶顯示,可能會消耗過多的時間,從而影響數據的處理。因此,由于某種需要必須采用不同的液晶模塊,這就需要修改軟件。為了解決這些問題,文提出采用內存接口的液晶顯示模塊,在現有點陣式液晶顯示屏上附加一個MCU(Micro-Controller Unit微處理器)及相關器件,利用內存與外部控制器進行接口,從而解決了統一接口和顯示速度的問題。 1 系統設計 1.1 設計思想 我們知道,人眼有視覺暫留現象,每0.1秒時間內變化一次的影像看上去會認為是連續的,而且只在0.1秒之內變化的影像人眼很難察覺到。根據這一物理現象,我們采用內存與外部控制器接口設計一種液晶接口模塊,外部控制器將欲顯示的數據直接寫入接口內存,根據接口刷新液晶的顯示。刷新率在每秒10次以上,就可達到連續顯示的目的。當然,刷新率越高人眼就越能感覺圖像變化的連續與流暢。 1.2 硬件設計 采用內存與外部控制器接口,具有統一的硬件接口規范。因為外部控制器和模塊內的MCU需要同時讀寫內存,接口內存采用帶有BUSY線的2K雙RAM IDT 7132,MCU選用常用的AT89C51,液晶模塊為市面普及的采用HITACHI公司HD61202液晶控制器的單5V供電的128×64點陣液晶。液晶顯示模塊的設計必須具備很強的通用性,可以被廣泛應用到各種系統中。目前系統一般為3V電平或5V電平系統,因此液晶顯示模塊的設計也必須同時考慮應用于這兩種系統。液晶顯示模塊硬件結構框圖如圖1所示。外部控制器將欲顯示的數據寫入雙口RAM,MCU則不斷掃描內存,根據內存中的數據進行相應的處理,不斷刷新液晶顯示屏上的顯示。綜合考慮液晶和系統操作的時序,AT89C51單片機運行在12MHz時鐘下,設計系統的刷新率達到每秒18次。 外部控制器的數據、地址、控制總線通過接插件引入液晶顯示模塊。因為雙口RAM IDT7132的輸入輸出為TTL電平,BUSY信號為開漏極輸出,因此無論是3V還是5V的系統,地址和控制總線可以直接引入。而數據總線因為是雙向系統,如果直接與雙口RAM連接,在雙口RAM輸出數據的時候可能會對3V系統造成損害,因此設計一個總線驅動器,采用74LVC245進行總線電平轉換。 74LVC245在3V供電時,輸入5V的電壓信號這樣就實現了與3V和5V電平系統的接口。 雙口RAM的BUSY信號是用來標示雙口RAM的兩個口同時在訪問相同的內存單元,而且至少有一個口處于寫該單元狀態。雙口RAM通過仲裁邏輯使后訪問該單元的BUSY信號有效,并屏蔽該口的操作,直到沒有訪問,競爭BUSY信號才變為無效。通過檢測BUSY信號可有效地確保內存讀寫的安全。 模塊內采用27C040保存16×8的256個ASCII字符點陣的16×16點陣的漢字庫,方便用戶使用。 考慮到液晶背光電流較大,加入了液晶背光的控制,可根據需要開關背光。 1.3 軟件設計 軟件部分涉及接口操作、點陣操作及液晶操作等,這里僅對接口有關部分進行介紹。 1.3.1 接口內存分配 接口內存的分配如表1所示。 表1 接口內存分配表 液晶屏幕上共有128×64=8192點,每個點用內存中的一位為0或1來表示點亮或熄滅。在雙口RAM中分配0000H~03FFH的內存用來直接與屏幕上的點相對應,稱為直接顯示映射區。這樣,用戶只需將欲顯示的點陣寫入內存中的指定地址,就可在屏幕上指定位置直接顯示出來。 另外,為方便使用,還設計了簡單的命令接口,分配0400~0507H的空間作為命令接口的內存,具體分配詳見表1。其中,0400H~04FEH的內存也作為字符顯示映射區,在設置了顯示模式后,將欲顯示的字符寫入該區域的指定地址,即可在屏幕指定位置顯示出該字符。 1.3.2 命令接口簡介 外部控制器將命令按照預定格式寫入命令接口的內存。顯示模塊的單片機檢測到有命令時,首先將命令讀出,將命令字地址內容變為00H,并將該命令字最高位置為 1寫入命令結果地址內,表示該命令正在被執行。當命令執行完后,命令執行的結果(規定最高位為0)寫入命令結果地址。這樣,外部控制器可以通過檢測命令字地址的內容和命令執行結果來確認顯示模塊當前的工作狀態,發布命令。基本命令字如表2所示,當然根據具體應用還可增加如繪制各種圖形、填充等的命令字。 表2 命令字及其參數 1.3.3 接口模塊工作方式 設計了兩種顯示模式:顯示模式1和顯示模式2。在顯示模式1時,MCU不斷掃描顯示映射區并檢查雙口RAM中用戶寫入的命令。在顯示模式2時,MCU不斷監測字符顯示映射區的變化,將用戶寫入的字符轉化成點陣,寫入直接顯示映射區,然后掃描顯示映射區進行顯示。此時MCU只執行改變顯示模式或初始化命令。其它的命令一概忽略。這樣外部控制器就不需要了解具體的液晶操作,操作液晶像讀寫內存一樣簡單快捷,因此外部控制器可以處理大量的實時數據,并進行實時顯示。 2 應用實例 液晶顯示模塊在我們設計的一套藍牙系統中得到了成功應用,藍牙模塊采用Ericsson Rok 101,主控制器采用TI公司的MSP430F149。通過藍牙傳送的動畫和所有控制信息均在液晶顯示模塊上顯示,效果很流暢,達到了設計要求。 本文提出的液晶顯示模塊采用內存和外部控制器進行接口,具有統一的接口規范。外部控制器將欲顯示的內容直接寫入液晶顯示模塊提供的內存接口即可實現顯示,不需要直接進行繁復費時的液晶控制和點陣處理操作,有利于控制器對大量數據進行實時處理。目前市面上有大屏幕的彩色液晶采用了類似方案,但價格昂貴。對一般應用來說,本文提出的液晶顯示模塊具有很強的通用性,而且增加的硬件成本不到單獨購買一塊點陣式液晶的20%,因此可廣泛應用。 |