日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【小月电子】ALTERA FPGA开发板系统学习教程-LESSON8 LCD1602液晶显示

發布時間:2023/12/16 windows 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON8 LCD1602液晶显示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

串口通信例程講解

若要觀看該博客配套的視頻教程,可點擊此鏈接

開發板實物圖

圖1.FPGA設計流程 根據多年工作經驗,總結出的FPGA的設計流程,概括起來總共有以上12步,其中根據項目難易度可省去其中一些步驟。比如非常簡單的項目,我們可以省去虛線框里面的步驟,但是我們的入門級課程,即使再簡單,也按照這12個步驟來進行講解。

1. 需求解讀

1.1 需求

在液晶屏第一行顯示“HELLO FPGA 1234!”

1.2 知識背景

1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。
LCD1602是指顯示的內容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數字)。一般來說,LCD1602有16條引腳,據說還有14條引腳的,與16腳的相比缺少了背光電源A(15腳)和地線K(16腳)。實物如下圖所示:

引腳定義如下:

說明:

  • VSS接電源地。
  • VDD接+5V。
  • VO是液晶顯示的偏壓信號,可接10K的電位器用于調節顯示效果。
  • RS是命令/數據選擇引腳,當RS為低電平時,選擇命令;當RS為高電平時,選擇數據。
  • RW是讀/寫選擇引腳,當RW為低電平時,向LCD1602寫入命令或數據;當RW為高電 平時,從LCD1602讀取狀態或數據。如果不需要進行讀取操作,可以直接將其接VSS。
  • E,執行命令的使能引腳。
  • D0—D7,并行數據輸入/輸出引腳 。
  • A背光正極,與VDD相連接。
  • K背光負極,接VSS。
  • 寫操作時序

    時序參數

    1.3 硬件設計

    有源晶振,與E1管腳相連

    液晶接口電路圖

    FPGA管腳映射圖

    PCB板上管腳標注

    LCD1602液晶與開發板管腳連接圖

    1.4 接口說明

    信號名方向FPGA管腳號說明
    CLK50M輸入E1時鐘信號,50MHZ
    LCD_RS輸出J6命令/數據選擇引腳,當RS為低電平時,選擇命令;當RS為高電平時,選擇數據
    LCD_RW輸出F5是讀/寫選擇引腳,當RW為低電平時,向LCD1602寫入命令或數據;當RW為高電平時,從LCD1602讀取狀態或數據
    LCD_CLK輸出E5執行命令的使能引腳
    LCD_DB0輸出D4并行數據輸入/輸出引腳
    LCD_DB1輸出G5并行數據輸入/輸出引腳
    LCD_DB2輸出D1并行數據輸入/輸出引腳
    LCD_DB3輸出C2并行數據輸入/輸出引腳
    LCD_DB4輸出B1并行數據輸入/輸出引腳
    LCD_DB5輸出B7并行數據輸入/輸出引腳
    LCD_DB6輸出B4并行數據輸入/輸出引腳
    LCD_DB7輸出B3并行數據輸入/輸出引腳

    2. 繪制理論波形圖

    理論波形圖

    3.新建QuartusII 工程

    為了讓工程看起來整潔,同時方便工程移植。我們新建4個文件夾,分別是Project,Source,Sim,Doc。
    Project — 工程文件夾,里面放的QuartusII工程
    Source — 源代碼文件夾,里面放的工程源碼(.v文件或.vhd文件)
    Sim — 仿真文件夾,里面放的仿真相關的文件
    Doc — 存放相關資料,比如數據手冊,需求文檔等

    4.編寫代碼

    /// //QQ:3181961725 //TEL/WX:13540738439 //作者:Mr Wang //模塊介紹:LCD1602顯示驅動 /// module lcd ( input clk ,//系統時鐘輸入50Minput rst_n ,//復位,低電平有效output reg [7:0] dat ,//LCD的8位數據口output reg rs ,//數據命令選擇信號,高電平表示數據,低電平表示命令output rw ,//讀寫標志,高電平表示讀,低電平表示寫,該程序我們只對液晶屏進行寫操作output en //LCD的控制腳);reg [15:0] counter ; reg [ 5:0] current ; reg clkr ; reg e ;//定義了LCD狀態機需要的狀態。parameter set0 =6'd0; parameter set1 =6'd1; parameter set2 =6'd2; parameter set3 =6'd3; parameter set4 =6'd4; parameter dat0 =6'd5; parameter dat1 =6'd6; parameter dat2 =6'd7; parameter dat3 =6'd8; parameter dat4 =6'd9; parameter dat5 =6'd10;parameter dat6 =6'd11; parameter dat7 =6'd12; parameter dat8 =6'd13; parameter dat9 =6'd14;parameter dat10=6'd15; parameter dat11=6'd16;parameter dat12=6'd17; parameter dat13=6'd18; parameter dat14=6'd19; parameter dat15=6'd20; parameter fini=6'hF1; always @(posedge clk or negedge rst_n) //da de data_w1 zhong pinlv begin if(!rst_n)begincounter<=0;clkr<=0;endelsebegincounter<=counter+1; if(counter==16'h000f) clkr<=~clkr; else;end end always @(posedge clkr or negedge rst_n) begin if(!rst_n)begincurrent<=set0;dat<=0;rs<=0;e<=1;endelsebegincase(current) set0: begin e<=0;rs<=0; dat<=8'h38; current<=set1; end //*設置8位格式,2行,5*7*set1: begin e<=0;rs<=0; dat<=8'h0C; current<=set2; end //*整體顯示,關光標,不閃爍*/ set2: begin e<=0;rs<=0; dat<=8'h06; current<=set3; end //*設定輸入方式,增量不移位*/ set3: begin e<=0;rs<=0; dat<=8'h01; current<=set4; end //*清除顯示*/ set4: begin e<=0;rs<=0; dat<=8'h80; current<=dat0; end //設置顯示第一行dat0: begin e<=0;rs<=1; dat<="H"; current<=dat1; end dat1: begin e<=0;rs<=1; dat<="E"; current<=dat2; end dat2: begin e<=0;rs<=1; dat<="L"; current<=dat3; end dat3: begin e<=0;rs<=1; dat<="L"; current<=dat4; end dat4: begin e<=0;rs<=1; dat<="O"; current<=dat5; end dat5: begin e<=0;rs<=1; dat<=" "; current<=dat6; end dat6: begin e<=0;rs<=1; dat<="F"; current<=dat7; end dat7: begin e<=0;rs<=1; dat<="P"; current<=dat8; end dat8: begin e<=0;rs<=1; dat<="G"; current<=dat9; end dat9: begin e<=0;rs<=1; dat<="A"; current<=dat10 ; end dat10: begin e<=0;rs<=1; dat<="!"; current<=dat11; end dat11: begin e<=0;rs<=1; dat<="1"; current<=dat12; end dat12: begin e<=0;rs<=1; dat<="2"; current<=dat13; end dat13: begin e<=0;rs<=1; dat<="3"; current<=dat14; end dat14: begin e<=0;rs<=1; dat<="4"; current<=dat15; end dat15: begin e<=0;rs<=1; dat<="6"; current<=fini; end fini: begin e<=1;rs<=0; dat<=8'h00; enddefault: current<=set0; endcase endend assign en=clkr|e; assign rw=0; endmodule

    5.編寫仿真測試激勵文件

    `timescale 1ns/1ns module lcd1602_tb;reg clk ;reg rst_n ; initial beginclk = 0;rst_n=0;#1000rst_n=1; end always #10 clk=~clk; lcd Ulcd( .clk (clk),//系統時鐘輸入50M.rst_n (rst_n),//復位,低電平有效.dat (),//LCD的8位數據口.rs (),//數據命令選擇信號,高電平表示數據,低電平表示命令.rw (),//讀寫標志,高電平表示讀,低電平表示寫,該程序我們只對液晶屏進行寫操作.en ()//LCD的控制腳); endmodule

    6.Modelsim仿真

    Modelsim仿真一般有兩種方法

  • 圖形化界面仿真,即所有的操作都是在Modelsim軟件界面上來完成,該方式的優點是,簡單易學,適用于簡單的項目,缺點是操作步驟繁瑣。

  • 批處理仿真,這種方式在仿真前需要編寫相應的腳本文件,該方式的優點是,一鍵即可完成仿真,省時省力,缺點是前期需要編寫腳本文件。前兩講采用的是圖形化界面仿真的方式;為了更貼近工程實際,從第三講開始,我們就采用批處理方式仿真。具體操作步驟可參考我們的視頻教程
    仿真出的波形如下圖所示:

  • 7.對比波形圖

    將第二步繪制的理論波形圖與第六步Modelsim仿真出來的波形圖進行對比,結果一致,說明我們的邏輯設計是正確的。如果發現比對結果不一致,就需要找到不一致的原因,最終要保證對比結果一致。通過對比,理論波形與仿真波形一致,說明功能符合設計要求。

    8.編譯綜合

    9.綁定管腳

    當工程編譯成功后,即可進行管腳分配(需要參考開發板的原理圖)。我們店鋪的開發板和模塊在PCB板上均標注了信號名,在綁定管腳時也可以直接參照實物的連接關系。

    管腳映射關系如下所示:

    10.再次編譯綜合

    11 下載SOF文件

    再次編譯綜合成功后便可以將生成的SOF文件下載到開發板


    下載成功后,便可以觀察到開發板上的實驗現象,如果實驗現象與設計需求相符,那說明我們的設計是沒有問題的,即可進行下一步固化JIC文件操作

    12 生成并固化JIC文件

    FPGA有一個特性,就是掉電后配置信息會丟失,所以我們需要將配置信息存儲在配置芯片(FLASH)中,待開發板上電后,FPGA便會讀取配置芯片中的配置信息,這樣開發板掉電再上電后同樣可正常工作。要將程序固化到配置芯片,需要先生成JIC文件。SOF文件轉換成JIC文件步驟如下:

    12.1 file–>Convert Programming File…

    12.2 選擇JIC文件以及配置芯片的型號,FPGA的型號

    標號1:選擇生成文件的格式,我們選擇JIC文件
    標號2:選擇配置芯片的型號,我們選擇EPCS16
    標號3:修改生成JIC文件的名字以及存放路徑
    標號4:鼠標左鍵點擊Flash Loader
    標號5:選擇FPGA的型號,我們開發板用的是EP4CE6F17C8這款FPGA,所以我們也應該選這個型號,如下圖所示:

    12.3 選擇SOF文件


    標號1:鼠標左鍵點擊SOF Data
    標號2:添加SOF文件,選中我們工程生成的SOF文件,如下圖:

    12.3 生成JIC文件


    到此,JIC文件生成好,可以進行固化操作了。

    12.4 固化JIC文件


    固化好以后,掉電程序也不會丟失了!

    實驗現象

    與設計需求吻合,設計完成!

    總結

    以上是生活随笔為你收集整理的【小月电子】ALTERA FPGA开发板系统学习教程-LESSON8 LCD1602液晶显示的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。