这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » FPGA 实验连载(十一、LCD1602实验源码)

共6条 1/1 1 跳转至

FPGA 实验连载(十一、LCD1602实验源码)

专家
2012-11-05 20:25:43     打赏

//本实验是用LCD1602显示英文。(LCD带字库,不带字库的代码不一样)
module lcd1602(clk, rs, rw, en,dat); 
input clk; 
 output [7:0] dat;
 output  rs,rw,en;
 //tri en;
 reg e;
 reg [7:0] dat;
 reg rs;  
 reg  [15:0] counter;
 reg [4:0] current,next;
 reg clkr;
 reg [1:0] cnt;
 parameter  set0=4'h0;
 parameter  set1=4'h1;
 parameter  set2=4'h2;
 parameter  set3=4'h3;
 parameter  dat0=4'h4;
 parameter  dat1=4'h5;
 parameter  dat2=4'h6;
 parameter  dat3=4'h7;
 parameter  dat4=4'h8;
 parameter  dat5=4'h9;

 parameter  dat6=4'hA;
 parameter  dat7=4'hB;
 parameter  dat8=4'hC;
 parameter  dat9=4'hD;
 parameter  dat10=4'hE;
 parameter  dat11=5'h10;
 parameter  nul=4'hF;
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
    set1:   begin  rs<=0; dat<=8'h0c; next<=set2; end
    set2:   begin  rs<=0; dat<=8'h6; next<=set3; end
    set3:   begin  rs<=0; dat<=8'h1; next<=dat0; end
    dat0:   begin  rs<=1; dat<=8'h3C; next<=dat1; end
    dat1:   begin  rs<=1; dat<="F"; next<=dat2; end
    dat2:   begin  rs<=1; dat<="P"; next<=dat3; end
    dat3:   begin  rs<=1; dat<="G"; next<=dat4; end
    dat4:   begin  rs<=1; dat<="A"; next<=dat5; end
    dat5:   begin  rs<=1; dat<=8'h3E; next<=dat6; end

    dat6:   begin  rs<=1; dat<="G"; next<=dat7; end
    dat7:   begin  rs<=1; dat<="O"; next<=dat8; end
    dat8:   begin  rs<=1; dat<="O"; next<=dat9; end
    dat9:   begin  rs<=1; dat<="D"; next<=dat10; end
    dat10:   begin  rs<=1; dat<="!"; next<=dat11; end
    dat11:   begin  rs<=1; dat<="!"; next<=nul; end
     nul:   begin rs<=0;  dat<=8'h00;                    //行一遍 然后 把液晶的E 脚 拉高
              if(cnt!=2'h2) 
                  begin 
                       e<=0;next<=set0;cnt<=cnt+1; 
                  end 
                   else 
                     begin next<=nul; e<=1;
                    end   
              end
   default:   next=set0;
    endcase
 end
assign en=clkr|e;
assign rw=0;
endmodule 




关键词: 实验     连载     十一     LCD1602     源码     param    

院士
2012-11-05 20:31:28     打赏
2楼
~~~~~

专家
2012-11-05 20:33:46     打赏
3楼
老王回复还挺快!!我刚发的!!

专家
2012-11-05 21:00:00     打赏
4楼
!!!不错

专家
2012-11-05 21:07:18     打赏
5楼
多谢鼓励!

高工
2012-11-06 09:11:59     打赏
6楼
不错,1602有不带字库的吗,还没有见过

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]