LCD12864屏显示中文实验cylone4e FPGA(EP4CE6)Verilog例程quartus11.0工程源码,可以做为你的学习设计参考。
module LCD12864 (clk, rs, rw, en,dat);
input clk; //系统时钟输入50M
output [7:0] dat; //LCD的8位数据口
output rs,rw,en; //LCD的控制脚
reg e;
reg [7:0] dat;
reg rs;
reg [15:0] counter;
reg [6:0] current,next;
reg clkr;
reg [1:0] cnt;
//定义的一些状态机。
parameter set0=6'h0;
parameter set1=6'h1;
parameter set2=6'h2;
parameter set3=6'h3;
parameter set4=6'h4;
parameter set5=6'h5;
parameter set6=6'h6;
parameter dat0=6'h7;
parameter dat1=6'h8;
parameter dat2=6'h9;
parameter dat3=6'hA;
parameter dat4=6'hB;
parameter dat5=6'hC;
parameter dat6=6'hD;
parameter dat7=6'hE;
parameter dat8=6'hF;
parameter dat9=6'h10;
parameter dat10=6'h11;
parameter dat11=6'h12;
parameter dat12=6'h13;
parameter dat13=6'h14;
parameter dat14=6'h15;
parameter dat15=6'h16;
parameter dat16=6'h17;
parameter dat17=6'h18;
parameter dat18=6'h19;
parameter dat19=6'h1A;
parameter dat20=6'h1B;
parameter dat21=6'h1C;
parameter dat22=6'h1D;
parameter dat23=6'h1E;
parameter dat24=6'h1F;
parameter dat25=6'h20;
parameter dat26=6'h21;
parameter dat27=6'h22;
parameter dat28=6'h23;
parameter dat29=6'h24;
parameter dat30=6'h25;
parameter dat31=6'h26;
parameter dat32=6'h27;
parameter dat33=6'h28;
parameter dat34=6'h29;
parameter dat35=6'h2A;
parameter dat36=6'h2B;
parameter dat37=6'h2C;
parameter dat38=6'h2D;
parameter dat39=6'h2E;
parameter dat40=6'h3F;
parameter nul=6'h35;
always @(posedge clk) //
begin
counter=counter+1;
if(counter==16'h000f)
clkr=~clkr;
end
always @(posedge clkr)
begin
current=next;
case(current)
set0: begin rs<=0; dat<=8'h31; next<=set1; end //*设置8位格式,*
set1: begin rs<=0; dat<=8'h0C; next<=set2; end //*整体显示,关光标,不闪烁*/
set2: begin rs<=0; dat<=8'h06; next<=set3; end //*设定输入方式,增量不移位*/
set3: begin rs<=0;