基于FPGA的多功能LCD顯示控制器是如何實現(xiàn)的
在許多嵌入式系統(tǒng)應(yīng)用領(lǐng)域,都需要友好的人機信息界面,傳統(tǒng)的數(shù)碼管或者發(fā)光二極管顯示方式已經(jīng)不能滿足實際的顯示需求,而LCD1602/LCD12864液晶顯示模塊具有低壓微功耗、壽命長、顯示信息量大、超薄等顯著優(yōu)點,被廣泛應(yīng)用于智能儀器、儀表等各種便攜式電子信息產(chǎn)品上來實現(xiàn)數(shù)字、字符和圖形的可視化信息顯示。目前,針對 LCD1602/LCD12864 液晶模塊的顯控技術(shù)主要有兩種方式,首先是基
于各種微處理器 (8051/ARM/NoisⅡ/SPCE061) 的微程序控制方式,這種軟件組態(tài)的LCD模塊控制技術(shù)應(yīng)用廣泛,但是這種控制方式會占用處理器資源、速度慢、實時顯示性能較差。其次,就是使用CPLD/FPGA開發(fā)的獨立顯示控制器,這種純硬件結(jié)構(gòu)的獨立顯示控制器,速度快、實時顯示性能好;但是這種獨立顯示控制器可移植性差、功能單一,很難適應(yīng)不同類型的液晶屏及不同的顯示模式。
因此,文中就提出了一個基于FPGA的多功能LCD顯示控制器設(shè)計方案,只需通過端口的使能參數(shù)配置便可以驅(qū)動LCD1602模塊顯示字符、LCD12864模塊實現(xiàn)字符或圖形的實時顯示,并在FPGA開發(fā)板(EP2C5T144C8)上進行了該設(shè)計的可行性驗證。
1 多功能顯示控制器的端口設(shè)計
要設(shè)計能夠驅(qū)動 LCD1602/LCD12864 兩種液晶模塊的多功能顯示控制器,就必須同時兼顧這二者的封裝端口引腳和用途;對多功能顯示控制器的端口做出兼容性設(shè)計。
LCD1602液晶模塊是一款最常用、最便宜的工業(yè)字符型液晶顯示屏,它可以顯示16x2個、5x7的點陣字符,模塊的字模存儲器CGROM(Chara cter Generator ROM)中固化192個常用字符的字模,另外還有8個允許用戶自定義的字符存儲器CGRAM(Character Generator RAM)。可以用于少量的自定義圖形顯示(如漢字)。由于顯示單元位間隔和行間隔的存在而導致顯示效果不好,因此LCD1602模塊主要用于西文、ASCII碼字符的顯示,該模塊擁有1個16引腳的單排插針外接端口。
目前,常用的LCD12864模塊是一種內(nèi)部含有國標一級、二級簡體中文字庫的點陣型圖形液晶顯示模塊;具有串/并多種接口方式,內(nèi)置了8 192個16x16點漢字和 128個16x8點ASCⅡ字符集 ,它在字符顯示模式下可以顯示8x4個16x16點陣的漢字或16x4個16x8點陣的西文(ASCH)字符;它也可以在圖形工作模式下顯示分辨率為128x64的二值化圖形,該模塊擁有1個20引腳的單排插針外接端口,端口的功能定義與LCD1602的對比如表1所示。
通過表1所示的LCD12864和LCD1602兩種液晶模塊的端口對比可以看出,它們的端口定義基本相同,LCD12864模塊只比LCD16021模塊多了PSB(串并選擇)和RST(復(fù)位端)端口,因此;可以完全按照LCD12864的端口要求來設(shè)計多功能LCD顯示控制器的端口;PSB和RST端口在驅(qū)動LCD 1602模塊時閑置或懸空(也可以用來充當某些特殊LCD1602屏的電源開關(guān)和背光開關(guān)信號)。
2 多功能顯示控制器的操作時序
如果LCD12864液晶模塊工作在并口的數(shù)據(jù)傳輸模式(PSB=1、RST=1)下,就和LCD1602液晶模塊具有完全相同的控制時序,這就要求多功能控制器產(chǎn)生的E、RW、RS控制信號具有正確的時序,LED模塊的讀/寫操作時序由使能信號E完成:對讀/寫操作的識別是判斷RW信號上的電平狀態(tài);RS信號用于識別數(shù)據(jù)總線DB0~DB7上的數(shù)據(jù)是指令代碼還是屬于顯示數(shù)據(jù),LCD模塊都給出了關(guān)鍵時間參數(shù)(不同廠商產(chǎn)品有差異),一般要求數(shù)據(jù)讀寫周期TC≥13μs;使能脈沖寬度TPW≥1.5 μs;數(shù)據(jù)建立時間TDSW≥1μs;數(shù)據(jù)保持時間TH≥20 ns;地址建立和保持時間(TAS和TAH)不得小于1.5μs,因此在多功能LCD顯示控制器IP核的設(shè)計中,必須設(shè)置有延時配置參數(shù)以滿足控制器的多種模塊驅(qū)動調(diào)試。
LCD12864和LCD1602液晶模塊都有自己一套嚴格用戶指令集,用戶就是通過這些指令來初始化液晶模塊來選擇顯示模式,這就要求多功能的LCD顯示驅(qū)動器同時包含多種顯示模式的用戶配置指令, LCD12864 和LCD1602 液晶模塊字符 、 圖形顯示模式 的初始化指令如表2所示,對于指令的解釋在此不再詳述。
3 多功能顯示控制器的狀態(tài)機設(shè)計
基于FPGA設(shè)計 LCD顯示控制器 ,關(guān)鍵在于采用硬件描述語言設(shè)計有限狀態(tài)機(FSM)來控制LCD模塊的跳轉(zhuǎn),文獻中就是使用FSM實現(xiàn)了對LCD模塊的顯示控制,但是它們都是針對一種類型LCD模塊的某種顯示模式,不具有多模式的顯示控制能力。因此,多功能LCD顯示控制器的有限狀態(tài)機就需要設(shè)置更多的條件轉(zhuǎn)換,來實現(xiàn)多種控制模式。系統(tǒng)上電后,首先完成持續(xù)大約0.1 s(根據(jù)時鐘頻率配置)的自動復(fù)位,然后才根據(jù)模塊的端口參數(shù)選擇不同顯示模式所對應(yīng)的初始化命令,在狀態(tài)機中設(shè)置有初始化命令、起始行地址和屏顯示數(shù)據(jù)3條轉(zhuǎn)換路徑來適應(yīng)LCD屏的工作狀態(tài),同時也在關(guān)鍵轉(zhuǎn)換路徑上設(shè)置有可以配置的延時循環(huán),這樣既能方便LCD模塊的工作調(diào)試,又能使LCD模塊一直工作在寫屏模式(RW=0)。對于LCD屏的顯示數(shù)據(jù)存儲可以完全采用FPGA內(nèi)嵌的ROM/RAM單元實現(xiàn),如果使用雙口RAM(存儲器讀寫?yīng)毩ⅲ┚湍軐崿F(xiàn)LCD模塊的動態(tài)實時顯示。
4 多功能顯示控制器的設(shè)計驗證
使用康芯KX7C5T FPGA開發(fā)板(Altera CycleⅡEP2C5T144C8)、KBl2864KZK、RT1602C和4x4鍵盤組成多功能LCD控制器的硬件測試平臺;設(shè)計項目經(jīng)過QuartusⅡ9.1開發(fā)工具的工程編譯和芯片下載配置后得到的實際顯示效果圖如圖3所示,其中圖3(a)是LCD1602模塊的字符顯示效果圖;屏的第1行顯示靜態(tài)字符,第2行實時顯示鍵盤輸入鍵值。圖3(b)是LCD12864模塊的中西文混合字符顯示效果圖,第4行也是實時顯示鍵盤輸入鍵值。圖3(c)是LCD12864模塊的靜態(tài)圖片顯示效果圖(ROM存儲);圖3(d)是LCD12864模塊的實時動態(tài)圖形顯示效果圖(雙口RAM存儲),這是用多功能LCD顯示控制器實現(xiàn)的邏輯分析儀界面。
5 結(jié)論
文中設(shè)計的多功能 LCD 顯示控制器,在FPGA開發(fā)板上的驗證結(jié)果表明,它完全具有能夠驅(qū)動 LCD1602模塊 顯示字符、 LCD12864模塊 顯示字符和實時顯示圖形的功能;并能夠通過端口參數(shù)配置而實現(xiàn)控制器的系統(tǒng)移植。