首先我们需要了解LCD1602液晶显示器的驱动原理以及LCD1602指令。
以下借用百度文库的LCD1602指令文档
了解完LCD1602的驱动和指令,我们就可以尝试用verilog硬件描述语言编写LCD1602液晶屏的封装。
下面是用verilog硬件描述语言编写的LCD1602液晶显示屏的封装。本人能力有限,只能写到这样了,高手勿喷!
//lcd显示模块
module lcd_IP_model(clk,rst,data_buf,lcd_e,lcd_rw,lcd_rs,lcd_data);
input clk;
input rst;
input [255:0]data_buf; //数据接口
output lcd_e;
output lcd_rw;
output lcd_rs;
output [7:0]lcd_data;
//---------------------------------------------------------------
//分频得到clk_800Hz
reg [16:0]cnt;
reg clk_lcd;
always @(posedge clk or negedge rst)
if(!rst)
cnt <= 1'b0;
else
begin
cnt <= cnt + 1'b1;
if( cnt == 17'd31249)
begin
cnt <= 1'b0;
clk_lcd <= ~clk_lcd;
end
end
//----------------------------------------