基于CPLD的LCD1602顯示系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
由clk_div時(shí)鐘信號獲取lcd_en及l(fā)cd_flag兩個(gè)時(shí)鐘信號,具體如下:
至此,只需捕獲clk_flag的上升沿,并在該跳變沿處送入指令或數(shù)據(jù)即可。而狀態(tài)之間的轉(zhuǎn)移關(guān)系則需按初始化的正確步驟進(jìn)行,完成初始化后,指定DDRAM的地址,并向lcd_dat送數(shù)據(jù)即可實(shí)現(xiàn)數(shù)據(jù)的寫入操作。
4 仿真結(jié)果及實(shí)現(xiàn)效果
軟件仿真借助了第三方的仿真軟件Modelsim,在QuartusII當(dāng)中利用Test Bench Template Writer建立仿真模板文件,并在模板當(dāng)中給出激勵條件,編譯后即可生成用于仿真測試的vt文件了。初始化部分的仿真結(jié)果如圖3所示。
上圖信號從上到下依次為:clk,rst_n,lcd_dat,lcd_en,lcd_rs,lcd_rw。由圖3可知,由于系統(tǒng)時(shí)鐘頻率較高,clk已顯示為一條粗線,rst_n僅延時(shí)10個(gè)仿真單位,即被拉高為高電平,lcd_dat中出線一段藍(lán)色線條,占lcd_en的3個(gè)周期,即實(shí)現(xiàn)了15ms的延時(shí),緊接著的四個(gè)周期連續(xù)寫入8’h38,然后8’h01等,直到8’h0c完成對LCD1602的初始化。圖4為初始化后向LCD1602寫入的數(shù)據(jù),由于顯示內(nèi)容的編碼與ASCII碼基本一致,可將其設(shè)置為ASCII進(jìn)行觀察。
將Verilog HDL編寫的程序進(jìn)行編譯,并將生的目標(biāo)代碼下載至EPM240T100C5,最終顯示的效果如圖5所示。
5 結(jié)束語
通過對LCD1602時(shí)序進(jìn)行詳細(xì)分析,本文實(shí)現(xiàn)了用CPLD驅(qū)動LCD1602顯示模塊工作的目的。通過仿真及硬件驗(yàn)證,均說明了設(shè)計(jì)的合理性與正確性。另外,采用模塊化設(shè)計(jì),也為后續(xù)系統(tǒng)的大規(guī)模化和可擴(kuò)展性提供了很大方便。相比單片機(jī)實(shí)現(xiàn)過程,利用CPLD實(shí)現(xiàn)顯得更加簡單、方便。另外,CPLD管腳的可配置特點(diǎn)也為CPLD的使用帶來了極大的靈活性。隨著CPLD及FPGA技術(shù)的發(fā)展,數(shù)字系統(tǒng)設(shè)計(jì)也必將發(fā)展到一個(gè)新的階段。
評論