LCD1602顯示控制器設(shè)計_第1頁
LCD1602顯示控制器設(shè)計_第2頁
LCD1602顯示控制器設(shè)計_第3頁
LCD1602顯示控制器設(shè)計_第4頁
LCD1602顯示控制器設(shè)計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、課程設(shè)計說明書 EDA技術(shù) 課 程 設(shè) 計 題 目 LCD1602顯示控制器設(shè)計 系 (部) 班 級 姓 名 學(xué) 號 指導(dǎo)教師 2014 年06 月 30 日至 07 月 06 日 共 1 周2014年07月02日課程設(shè)計成績評定表出勤情況出勤天數(shù) 缺勤天數(shù)成績評定出勤情況及設(shè)計過程表現(xiàn)(20分)課設(shè)答辯(20分)設(shè)計成果(60分)硬件調(diào)試設(shè)計說明書總成績(100分)提問(答辯)問題情況綜合評定 指導(dǎo)教師簽名: 年 月 日目 錄目 錄31 引言42 VHDL/ QuartusII簡介53 系統(tǒng)設(shè)計63.1 整體功能63.2 各模塊功能設(shè)計63.2.1 功能63.2.2 模塊引腳63.2.3 程

2、序73.2.4 仿真圖124 系統(tǒng)調(diào)試及下載135 設(shè)計總結(jié)141 引言通過對LCD1602LCD12864顯示模塊控制時序和指令集的對比分析,利用Verilog HDL描述語言完成了多功能LCD顯示控制模塊的IP核設(shè)計,所設(shè)計的LCD顯示控制器具有很好的可移植性,只需通過端口的使能參數(shù)配置便可以驅(qū)動LCD1602LCD12864模塊實現(xiàn)字符或圖形的實時顯示,并且該多功能LCD控制器的可行性也在Cyclone系列的EP2C5T144C8 FPGA芯片上得到了很好的驗證。基于FPGA設(shè)計 LCD顯示控制器 ,關(guān)鍵在于采用硬件描述語言設(shè)計有限狀態(tài)機(FSM)來控制LCD模塊的跳轉(zhuǎn),文獻中就是使用F

3、SM實現(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)嵌的R

4、OM/RAM單元實現(xiàn),如果使用雙口RAM(存儲器讀寫?yīng)毩?就能實現(xiàn)LCD模塊的動態(tài)實時顯示。2 VHDL/ QuartusII簡介VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,誕生于 1982 年。1987 年底,VHDL被 IEEE 和美國國防部確認為標準硬件描述語言。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風(fēng)格與句法是十分類似于一般的計算機高級語言。VHDL的程序結(jié)構(gòu)特點是將一項工程設(shè)計,或稱設(shè)計實體(可以是一個

5、元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設(shè)計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本點。Quartus II 是Altera公司的綜合性PLD/FPGA開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。Quartus II可以

6、在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計流程外,提供了完善的用戶圖形界面設(shè)計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè)計速度。對第三方EDA工具的良好支持也使用戶可以在設(shè)計流程的各個階段使用熟悉的第三方EDA工具。此外,Quartus II 通過和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集

7、系統(tǒng)級設(shè)計、嵌入式軟件開發(fā)、可編程邏輯設(shè)計于一體,是一種綜合性的開發(fā)平臺。3 系統(tǒng)設(shè)計3.1 整體功能使用VHDL語言通過FPGA實現(xiàn)對LCD1602字符型液晶顯示器的控制。在LCD1602字符型液晶顯示器上面顯示個人信息,包括姓名和學(xué)號。在LCD1602字符型液晶顯示器上面顯示動態(tài)字符,通過按鍵輸入相應(yīng)的數(shù)字和字符。3.2 各模塊功能設(shè)計3.2.1 功能1、分頻模塊 應(yīng)用時鐘分頻,滿足其工作需求。2、鍵盤模塊 輸入字母和數(shù)字用來實現(xiàn)動態(tài)字符,進行動態(tài)顯示。3、消抖模塊 消除抖動,使顯示平穩(wěn)進行。4、LCD模塊 實現(xiàn)靜態(tài)顯示,顯示個人信息。3.2.2 模塊引腳1、分頻模塊引腳如圖所示2、鍵盤模

8、塊引腳如圖所示3、消抖模塊引腳如圖所示4、LCD模塊引腳如圖所示3.2.3 程序1、分頻模塊程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity fenpin is Port ( clk : in std_logic; lcd_clk:out std_logic);end fenpin;architecture bhv of fenpin isbeginprocess(clk)-分頻進程,CLK輸入,CLK_Out輸出,50MHz輸入,125Hz輸出,8ms constant m:integer:=500000; variable cout:int

9、eger range 0 to 50000000:=0; begin if clk'event and clk='0' then cout:=cout+1; if cout<m/2 then lcd_clk<='1' elsif cout<m then lcd_clk<='0' else cout:=0; end if;end if;end process;end bhv;2、鍵盤模塊程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsi

10、gned.all;entity jianpan isport(clk:in std_logic; reset:in std_logic; col:in std_logic_vector(3 downto 0); row:out std_logic_vector(3 downto 0); key_code:out std_logic_vector(7 downto 0);end jianpan;architecture bhv of jianpan issignal cnt: std_logic_vector(1 downto 0);signal key: std_logic;beginkey

11、<= col(3) and col(2) and col(1) and col(0);p2:process(clk) begin if clk'event and clk='1' then if key = '1' then cnt <= cnt + 1; end if; end if; end process;P3:process(col, cnt,reset) begin if reset='0' then row<="1111" elsif cnt <= "00" th

12、en row <= "1110" case col is when "1110" => key_code <= "11101110" when "1101" => key_code <= "11011110" when "1011" => key_code <= "10111110" when "0111" => key_code <= "01111110" wh

13、en others => key_code <= "11111111" end case; elsif cnt <= "01" then row <= "1101" case col is when "1110" => key_code <= "11101101" when "1101" => key_code <= "11011101" when "1011" => key_cod

14、e <= "10111101" when "0111" => key_code <= "01111101" when others => key_code <= "11111111" end case; elsif cnt <= "10" then row <= "1011" case col is when "1110" => key_code <= "11101011" when

15、 "1101" => key_code <= "11011011" when "1011" => key_code <= "10111011" when "0111" => key_code <= "01111011" when others => key_code <= "11111111" end case; elsif cnt <= "11" then row <= &q

16、uot;0111" case col is when "1110" => key_code <= "11100111" when "1101" => key_code <= "11010111" when "1011" => key_code <= "10110111" when "0111" => key_code <= "01110111" when others =>

17、 key_code <= "11111111" end case;end if;end process;end architecture;3、消抖模塊程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity xiaodou isport(clk:in std_logic; reset:in std_logic; din:in std_logic_vector(7 downto 0); dout:out std_logic_vector(7 downto 0);end x

18、iaodou;architecture bhv of xiaodou isbeginprocess(clk,reset,din)variable cnt:integer range 0 to 2;variable store:std_logic_vector(7 downto 0);variable d1,d2,d3:std_logic:='1'begin if reset='0'then dout<="11111111" elsif clk'event and clk='1'then case cnt is w

19、hen 0=>store:=din; cnt:=cnt+1; when 1=> if din=store then cnt:=cnt+1; else store:=din; cnt:=0; end if; when 2=> if din=store then dout<=store; d1:=store(7) and store(6) and store(5) and store(4); d2:=store(3) and store(2) and store(1) and store(0); d3:=d1 or d2; if d3='0' then en

20、d if; else store:=din; cnt:=0; end if; end case; end if; end process;end bhv;4、LCD模塊程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lcd isport( lcd_clk : in std_logic; dout:in std_logic_vector(7 downto 0); rs: out std_logic; -寄存器選擇信號 rw : out std_logic; -液晶讀寫信號 en:

21、out std_logic; -液晶時鐘信號data: out std_logic_vector(7 downto 0); -液晶數(shù)據(jù)信號end lcd;architecture bhv of lcd istape states is (set_function,set_cursor,set_display,clear_display,set_ddram1,write_data1);signal state:states;beginprocess(lcd_clk,state) -狀態(tài)機控制顯示beginif lcd_clk'event and lcd_clk='1' t

22、hen case state is when set_function=> data<="00111000"-/*設(shè)置8位格式,2行,5*7*/ rs<='0' state<=set_display; when set_display=> data<="00001100" -/*整體顯示,關(guān)光標,不閃爍*/ rs<='0' state<=clear_display; when clear_display=> data<="00000001" r

23、s<='0' state<=set_cursor; when set_cursor=> data<="00000110" -/*顯示移動格式,看最后兩位,10表示光標右移 rs<='0' state<=set_ddram1; when set_ddram1=> data<="10000000" rs<='0' state<=write_data1; when write_data1=> rs<='1'data<=d

24、out; end case; end if; end process;end bhv;3.2.4 仿真圖4 系統(tǒng)調(diào)試及下載程序編寫完,仿真成功后,引腳設(shè)置對應(yīng)好,在實驗箱上連接好線,最后可以進行下載了,然后就可以在實驗箱上觀察實驗結(jié)果了。5 設(shè)計總結(jié)這次EDA課程設(shè)計歷時一周,學(xué)到很多很多的東西,不僅可以鞏固以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次設(shè)計,進一步加深了對EDA的了解,讓我對它有了更加濃厚的興趣。特別是當每一個子模塊編寫調(diào)試成功時,心里特別的開心。但是在編寫頂層文件的程序時,遇到了不少問題,可以說是錯誤百出,系統(tǒng)不停報錯,特別是各元件之間的連接,以及信號的定義,總是有錯誤,在細心的檢查和請教同學(xué)后,終于找出了錯誤和警告,排除困難后,程序編譯就通過了,心里終于舒了一口氣。其次,在連接各個模塊的時候一定要注意各個輸入、輸出引腳的線寬,因為每個線寬是不一樣的,只要讓各個線寬互相匹配,才能得出正確的結(jié)果,否則,出現(xiàn)任何一點小的誤差就會導(dǎo)致整個文件系統(tǒng)的編譯出現(xiàn)錯誤提示,在器件的選擇上也有一定的技巧,只有選擇了合適當前電路所適合的器件,編譯才能得到完滿成功。通過這次課程設(shè)計使

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論