国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

QuartusLCD1602液晶驅(qū)動顯示控制verilog代碼青創(chuàng)QC-FPGA開發(fā)板

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

2-231220104600324.doc

共1個文件

名稱:QuartusLCD1602液晶驅(qū)動顯示控制verilog代碼青創(chuàng)QC-FPGA開發(fā)板

軟件:Quartus

語言:Verilog

代碼功能:

LCD1602液晶驅(qū)動顯示控制,第一行顯示"HUAWEI NOVA7",?第二行顯示"5Gshouji"。

顯示內(nèi)容可以直接修改以下代碼實現(xiàn):

parameter? ?Data_First =? "? HUAWEI NOVA7 ",? ? ? ? ? ? ? ? ?//液晶顯示的第一行的數(shù)據(jù)

Data_Second = "? ? 5Gshouji? ?";? ? ? ? ? ? ? ?//液晶顯示的第二行的數(shù)據(jù)

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

本代碼已在青創(chuàng)QC-FPGA開發(fā)板驗證,青創(chuàng)QC-FPGA開發(fā)板如下,其他開發(fā)板可以修改管腳適配:青創(chuàng)QC-FPGA開發(fā)板.png

演示視頻:

設(shè)計文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. RTL圖

5. 仿真文件

6. 仿真圖

部分代碼展示:

//?LCD_Driver.v
//功能簡述:在1602液晶模塊上顯示字符串
module?LCD_Driver(clk_LCD,rst,LCD_EN,RS,RW,DB8);
input???clk_LCD,rst;????????//rst為全局復(fù)位信號高電平有效)
output??LCD_EN,RS,RW;
//LCD_EN為LCD模塊的使能信號(下降沿觸發(fā))
//RS=0時為寫指令;RS=1時為寫數(shù)據(jù)
//RW=0時對LCD模塊執(zhí)行寫操作;RW=1時對LCD模塊執(zhí)行讀操作
output??[7:0]?DB8;??????????//8位指令或數(shù)據(jù)總線
reg?????[7:0]?DB8;
reg?????[111:0]?Data_First_Buf,Data_Second_Buf;?????//液晶顯示的數(shù)據(jù)緩存
reg?????RS,LCD_EN_Sel;
reg?????[3:0]?disp_count;
reg?????[3:0]?state;
parameter???Clear_Lcd?=?4'b0000,????????????????????????????//清屏并光標復(fù)位
????????????Set_Disp_Mode?=?4'b0001,????????????????????????//設(shè)置顯示模式:8位2行5x7點陣??
????????????Disp_On?=?4'b0010,??????????????????????????????//顯示器開、光標不顯示、光標不允許閃爍
????????????Shift_Down?=?4'b0011,???????????????????????????//文字不動,光標自動右移
????????????Write_Addr?=?4'b0100,???????????????????????????//寫入顯示起始地址
????????????Write_Data_First?=?4'b0101,?????????????????????//寫入第一行顯示的數(shù)據(jù)
????????????Write_Data_Second?=?4'b0110,????????????????????//寫入第二行顯示的數(shù)據(jù)
????????????Idel?=?4'b0111;?????????????????????????????????//空閑狀態(tài)
parameter???Data_First?=??"??HUAWEI?NOVA7?",?????????????????//液晶顯示的第一行的數(shù)據(jù)
????????????Data_Second?=?"????5Gshouji???";???????????????//液晶顯示的第二行的數(shù)據(jù)???
assign??RW?=?1'b0;?????????????????????//RW=0時對LCD模塊執(zhí)行寫操作
assign??LCD_EN?=?LCD_EN_Sel???clk_LCD?:?1'b0;
//通過LCD_EN_Sel信號來控制LCD_EN的開啟與關(guān)閉
always?@(posedge?clk_LCD?or?negedge?rst)
begin
???if(!rst)
??????begin
??????????state?<=?Clear_Lcd;???????????????????????????????//復(fù)位:清屏并光標復(fù)位??
??????????RS?<=?1'b0;???????????????????????????????????????//復(fù)位:RS=0時為寫指令;??????????????????????
??????????DB8?<=?8'b0;??????????????????????????????????????//復(fù)位:使DB8總線輸出全0
??????????LCD_EN_Sel?<=?1'b1;???????????????????????????????//復(fù)位:開啟夜晶使能信號
??????????//Data_First_Buf?<=?Data_First;
??????????//Data_Second_Buf?<=?Data_Second;
??????????disp_count?<=?4'b0;
??????end
???else
??????case(state)???????????????????????????????????????????//初始化LCD模塊
??????Clear_Lcd:
?????????????begin
????????????????state?<=?Set_Disp_Mode;
????????????????DB8?<=?8'b00000001;?????????????????????????//清屏并光標復(fù)位??
?????????????end
??????Set_Disp_Mode:
?????????????begin
????????????????state?<=?Disp_On;
????????????????DB8?<=?8'b00111000;?????????????????????????//設(shè)置顯示模式:8位2行5x8點陣????????
?????????????end
??????Disp_On:
?????????????begin
????????????????state?<=?Shift_Down;
????????????????DB8?<=?8'b00001100;?????????????????????????//顯示器開、光標不顯示、光標不允許閃爍???
?????????????end
??????Shift_Down:
????????????begin
????????????????state?<=?Write_Addr;
????????????????DB8?<=?8'b00000110;?????????????????????????//文字不動,光標自動右移???
????????????end
??????Write_Addr:
????????????begin
????????????????state?<=?Write_Data_First;
????????????????DB8?<=?8'b10000001;?????????????????????????//寫入第一行顯示起始地址:第一行第二個位置???
????????????????Data_First_Buf?<=?Data_First;???????????????//將第一行顯示的數(shù)據(jù)賦給Data_First_Buf?
????????????end
??????Write_Data_First:?????????????????????????????????????//寫第一行數(shù)據(jù)
????????????begin
????????????????if(disp_count?==?14)????????????????????????//disp_count等于14時表示第一行數(shù)據(jù)已寫完
????????????????????begin
????????????????????????DB8?<=?8'b11000001;?????????????????//送入寫第二行的指令
????????????????????????RS?<=?1'b0;
????????????????????????disp_count?<=?4'b0;
????????????????????????Data_Second_Buf?<=?Data_Second;
????????????????????????state?<=?Write_Data_Second;?????????//寫完第一行進入寫第二行狀態(tài)
????????????????????end
????????????????else
????????????????????begin
????????????????????????DB8?<=?Data_First_Buf[111:104];
??????????????????????
????????????????????????RS?<=?1'b1;?????????????????????????//RS=1表示寫數(shù)據(jù)
????????????????????????disp_count?<=?disp_count?+?1'b1;
????????????????????????Data_First_Buf?<=?(Data_First_Buf?<<?8);
????????????????????????state?<=?Write_Data_First;
????????????????????end
????????????end
??????Write_Data_Second:????????????????????????????????????//寫第二行數(shù)據(jù)
????????????begin
????????????????if(disp_count?==?14)
????????????????????begin
????????????????????????LCD_EN_Sel?<=?1'b0;
????????????????????????RS?<=?1'b0;
????????????????????????disp_count?<=?4'b0;
????????????????????????state?<=?Idel;??????????????????????//寫完進入空閑狀態(tài)
????????????????????end
????????????????else
????????????????????begin
????????????????????????DB8?<=?Data_Second_Buf[111:104];
?????????????????????
????????????????????????RS?<=?1'b1;
????????????????????????disp_count?<=?disp_count?+?1'b1;
????????????????????????Data_Second_Buf?<=?(Data_Second_Buf?<<?8);
????????????????????????state?<=?Write_Data_Second;
????????????????????end?????????????
????????????end
??????Idel:????
????????????begin
????????????????state?<=??Idel;?????????????????????????????//在Idel狀態(tài)循環(huán)?
????????????end
??????default:??state?<=?Clear_Lcd;?????????????????????????//若state為其他值,則將state置為Clear_Lcd
??????endcase
end
endmodule

點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=376

  • 2-231220104600324.doc
    下載

相關(guān)推薦