陳海峰,丁麗麗
(1.華南農(nóng)業(yè)大學 珠江學院,廣東 廣州510900;2.廣州城建職業(yè)學院,廣東 廣州510900)
基于CPLD的LCD1602顯示系統(tǒng)設計與實現(xiàn)
陳海峰1,丁麗麗2
(1.華南農(nóng)業(yè)大學 珠江學院,廣東 廣州510900;2.廣州城建職業(yè)學院,廣東 廣州510900)
為了提高LCD1602顯示效果,增強抗擾能力,文章基于TOP2812開發(fā)板,依據(jù)LCD1602操作時序要求,在開發(fā)板CPLD部分實現(xiàn)了LCD1602顯示系統(tǒng)的設計。文中對LCD1602時序進行了詳細分析,并在Quartus II平臺下采用Verilog HDL編寫了test bench測試文件和驅動程序,經(jīng)仿真和實際測試表明,顯示效果較好,達到了設計要求。
CPLD;LCD1602;顯示系統(tǒng);時序;Verilog HDL
隨著技術的發(fā)展,社會數(shù)字化的程度顯得越來越明顯,集成電路在社會當中的應用也越來越廣泛。傳統(tǒng)的ASIC曾在數(shù)字領域扮演重要角色,雖種類繁多,但功能固定、管腳有限,應用范圍也相對較窄,因此在一定程度上限制了人們對其的使用。如今,隨著現(xiàn)場可編程技術的發(fā)展,F(xiàn)PGA及CPLD[1]技術已不再是傳統(tǒng)ASCI技術領域的一個點綴與補充,其顯然已成為電子應用領域廣受歡迎的實用化技術,為數(shù)字系統(tǒng)的科研實驗、樣機試制、小批量產(chǎn)品的即時實現(xiàn)等提供了最佳途徑[2-3]。EPM240T100C5是Altera公司生產(chǎn)的MaxII系列CPLD,其功耗低、價格廉、配置靈活、資源豐富,具有較高的市場性價比,因而備受青睞。
在顯示輸出方面,目前主要采用3種方式,即:圖形、數(shù)字或專用符號,在嵌入式領域,顯示常采用LED、數(shù)碼管及液晶顯示器[4]。前兩種雖然實現(xiàn)簡單,但顯示內容不夠豐富。LCD1602具有體積小、功耗低、顯示容量大、接口簡單,操作方便,能夠顯示字符、數(shù)字及符號等優(yōu)點,因此被廣泛應用于日常生活當中。
該文以EPM2405100C5為控制核心,在Quartus II平臺下采用Verilog HDL編寫LCD1602顯示驅動程序,并生成相應目標文件,最終下載至目標芯片,實現(xiàn)LCD1602的顯示設計功能。
將EPM240T100C5的I/O口與LCD1602的數(shù)據(jù)管腳及控制管腳進行接口,利用Verilog HDL編寫軟件程序,使CPLD輸出滿足LCD1602的操作時序。由于LCD1602屬慢顯示設備,而CPLD往往時鐘頻率較高,為此需要對CPLD主時鐘進行分頻,從而產(chǎn)生合適的時鐘信號供LCD1602使用。在讀/寫數(shù)據(jù)時,需要對LCD1602的忙標志進行檢測,只有在忙標志位為0的情況下,才能完成對數(shù)據(jù)或指令的讀取與寫入。此外,為方便對LCD1602模塊進行操作,其內部控制器為該模塊提供了11條控制指令,通過寫入相應的控制指令,可定制該模塊的顯示模式。LCD1602為用戶提供的存儲空間分3部分:DDRAM、CGRAM和CGROM。DDRAM共有80個存儲空間,對應屏幕的兩行,每行40個,但每行可顯示的地址只有16個,其他地址所寫入的數(shù)據(jù)可通過移屏進行顯示。CGRAM為用戶自定義字符圖形RAM,用戶可以定制特定的圖形。CGROM為字符發(fā)生ROM,其內部已存儲160個不同點陣字符圖形,由于其編碼與ASCII碼基本一致,因此在進入寫操作時,也可直接寫入對應字符,如寫8’h41,可顯示字符A,直接寫入“A”,也可達到同樣的顯示效果。
LCD1602的初始化主要用于完成字符顯示模式、光標顯示模式、寫入數(shù)據(jù)后地址指針變化的設置、清屏及開顯示等操作。該模塊若要成功地被驅動,除了正確的初始化步驟以外,還必須依賴于準確的操作時序,因此分析其操作時序也就顯得尤為重要。
操作時序為IC芯片的工作提供了正確的節(jié)拍,如果節(jié)拍錯了,那么芯片將不可能正常工作。LCD1602的寫操作時序圖[5]如圖1所示。
圖1 LCD1602寫操作時序圖Fig.1 Write timing of LCD1602
由圖1可知,若要寫入正確的數(shù)據(jù),必須在E的上升沿到來之前建立RS及R/W電平,同時完成數(shù)據(jù)的寫入操作,在E處于高電平期間,寫入的數(shù)據(jù)才能有效。圖1中,tsp1即為RS、R/W的建立時間,tsp2為數(shù)據(jù)的建立時間,若要正確完成寫入操作,必須使各建立時間滿足時序要求。數(shù)據(jù)在E的高電平期間有效,即持續(xù)一個脈沖寬度tpw。圖1中具體參數(shù)的時間要求如表1所示。
為方便建立E信號的波形,可取tpw=tc/2,即將E的波形設計為方波,只要保證tc>400 ns,,則其高、低電平所維持的時間都將不小于200 ns,而如果將RS、R/W及數(shù)據(jù)變化的時間都取在E信號低電平的中間位置,則地址及數(shù)據(jù)的建立時間和地址及數(shù)據(jù)的保持時間都將大于100 ns,對比表1的時序參數(shù)要求,顯然按這種方法設計出的時序是完全滿足LCD1602寫操作時序要求的。
因此,只需選取一個合適的tc,也就基本確定寫操作時序了。由于LCD1602初始化時需要延時5 ms來完成對顯示模式的設定,因此可選取5 ms作為tc的取值,從而簡化顯示模塊的初始化操作。
表1 LCD1602時序參數(shù)要求Tab.1 Tim ing parameters of LCD1602
文中設計采用Verilog HDL實現(xiàn),模塊程序的接口如下所示:
由于LCD1602初始化需要按特定步驟寫入不同的控制指令,其可顯示的數(shù)據(jù)地址在空間上是兩個獨立的固定區(qū)域,因此可借用有限狀態(tài)機的設計思想進行設計系統(tǒng)。狀態(tài)采用一位獨熱碼[6]進行編碼。所定義狀態(tài)如下:
在Quartus II平臺下,經(jīng)綜合所得的狀態(tài)轉移關系如圖2所示。
圖2 狀態(tài)轉移圖Fig.2 State transition diagram
要想實現(xiàn)狀態(tài)的轉移,需構建LCD1602顯示模塊所必需的時鐘,在時序分析過程中已確定將E信號的周期設計為5ms,而數(shù)據(jù)的寫入以及RS、R/W電平的變化總是在E信號低電平的中間發(fā)生,因此可重新建立一個時鐘,使其在該位置發(fā)生跳變,可以是上升沿也可以是下降沿,其周期與E信號周期相等,為便于設計,也將該時鐘設計成脈寬為50%的方波信號。這里設E信號的時鐘為lcd_en,在E信號低電平中間位置跳變的時鐘為clk_flag。若選擇clk_flag的上升沿觸發(fā)RS、R/W電平的改變及數(shù)據(jù)的寫入操作,則顯然clk_flag高電平要超前clk_div高電平90°。為得到相位上互差90°的兩個時鐘,可以通過對系統(tǒng)時鐘分頻,構建一個周期為2.5 ms的時鐘clk_div,使得clk_flag總是在clk_div的上升沿翻轉,而lcd_en總是在clk_div的下降沿翻轉,由此即可得到相位上互差90°的兩個時鐘信號了。由于主時鐘為30 Mhz,因此需對其進行 37 500分頻,即可得到周期為 2.5 ms的clk_div。其軟件實現(xiàn)如下:
由clk_div時鐘信號獲取lcd_en及l(fā)cd_flag兩個時鐘信號,具體如下:
至此,只需捕獲clk_flag的上升沿,并在該跳變沿處送入指令或數(shù)據(jù)即可。而狀態(tài)之間的轉移關系則需按初始化的正確步驟進行,完成初始化后,指定DDRAM的地址,并向lcd_dat送數(shù)據(jù)即可實現(xiàn)數(shù)據(jù)的寫入操作。
軟件仿真借助了第三方的仿真軟件Modelsim,在Quartus II當中利用Test Bench Template Writer建立仿真模板文件,并在模板當中給出激勵條件,編譯后即可生成用于仿真測試的vt文件了。初始化部分的仿真結果如圖3所示。
圖3 初始化部分仿真結果Fig.3 The simulation result of initialization
上圖信號從上到下依次為:clk,rst_n,lcd_dat,lcd_en,lcd_rs,lcd_rw。由圖3可知,由于系統(tǒng)時鐘頻率較高,clk已顯示為一條粗線,rst_n僅延時10個仿真單位,即被拉高為高電平,lcd_dat中出線一段藍色線條,占lcd_en的3個周期,即實現(xiàn)了15ms的延時,緊接著的四個周期連續(xù)寫入8’h38,然后8’h01等,直到8’h0c完成對LCD1602的初始化。圖4為初始化后向 LCD1602寫入的數(shù)據(jù),由于顯示內容的編碼與ASCII碼基本一致,可將其設置為ASCII進行觀察。
將Verilog HDL編寫的程序進行編譯,并將生的目標代碼下載至EPM240T100C5,最終顯示的效果如圖5所示。
圖5 LCD1602顯示效果圖Fig.5 Display effort of LCD1602
通過對LCD1602時序進行詳細分析,本文實現(xiàn)了用CPLD驅動LCD1602顯示模塊工作的目的。通過仿真及硬件驗證,均說明了設計的合理性與正確性。另外,采用模塊化設計,也為后續(xù)系統(tǒng)的大規(guī)模化和可擴展性提供了很大方便。相比單片機實現(xiàn)過程,利用CPLD實現(xiàn)顯得更加簡單、方便。另外,CPLD管腳的可配置特點也為CPLD的使用帶來了極大的靈活性。隨著CPLD及FPGA技術的發(fā)展,數(shù)字系統(tǒng)設計也必將發(fā)展到一個新的階段。
[1]宋萬杰.CPLD技術及應用[M].西安:西安電子科技大學出版社,2004.
[2]尚明.FPGA技術的應用與發(fā)展趨勢[J].科技資訊,2007(14): 10-12.SHANG Ming.Application and development trend of FPGA technology[J].Science and Technology Information,2007(14): 10-12.
[3]孫明星.FPGA模擬IIC接口的Verilog HDL設計[D].蘇州:常熟理工學院,2008.
[4]黃杰勇.基于CPLD實現(xiàn)LCD1602顯示設計[J].科技創(chuàng)新導報,2013(4):83,85.HANG Jie-yong.The achievement of LCD1602 display design based on CPLD[J].Science and Technology Innovation Herald,2013(4):83,85.
[5]長沙太陽人電子有限公司[S].SMC1602 LCM使用說明書.
[6]夏宇聞.Verilog數(shù)字系統(tǒng)設計教程[M].北京:北京航空航天大學出版社,2008.
Design and im plementation of LCD1602 display system based on CPLD
CHEN Hai-feng1,DING Li-li2
(1.Zhujiang College of South China Agricultural University,Guangzhou 510900,China; 2.Guangzhou City Construction College,Guangzhou 510900,China)
In order to improve the display effort and enhance anti-disturbance capability of LCD1602,in this paper,the LCD1602 display system was designed according to the timing diagram of LCD1602 based on CPLD which is part of TOP2812 development kits.The timing diagram of LCD1602 display system was analyzed in detail.The driver and test bench file were programmed in Verilog HDL on the platform of Quartus II.The simulation and actual test shown good display effort,which reached the design requirements.
CPLD;LCD1602;display system;timing;Verilog HDL
TN46
A
1674-6236(2015)10-0182-04
2014-08-24 稿件編號:201408134
陳海峰(1985—),男,河南洛陽人,碩士研究生。研究方向:工業(yè)控制及嵌入式系統(tǒng)。