Verilog HDL 之 LCD1602英文显示

   从即日起,开始将自己变成一名真正的程序猿……

  今天开始使用Verilog HDL进行建模,首先真是的是LCD1602英文显示部分的代码,具体代码如下:

  

 1 module lcd1602 (clock, reset, rw, en,data);  
 2     input     clock;               //系统时钟输入50M
 3     output     [7:0] data;           //LCD的8位数据口
 4     output      reset,rw,en;       //LCD的控制脚
 5  
 6  wire e; 
 7  wire [7:0] data; 
 8  wire clkr; 
 9  wire reset;   
10  //reg  [15:0] counter; 
11 
12 
13     clock_dev    u1    (
14         .clock(clock),
15         .clk_out(clkr));
16         
17     display        u2(
18         .clkr(clkr),
19         .data(data),
20         .reset(reset),
21         .e(e));    
22 assign en=clkr|e; 
23 assign rw=0; 
24 endmodule  
Top_Module

 

 4 module lcd1602 (clock, reset, rw, en,data);  
 5     input     clock;               //系统时钟输入50M
 6     output     [7:0] data;         //LCD的8位数据口
 7     output      reset,rw,en;       //LCD的控制脚
 8  
 9  wire e; 
10  wire [7:0] data; 
11  wire clkr; 
12  wire reset;   
13  //reg  [15:0] counter; 
14 
15 
16     clock_dev    u1    (
17         .clock(clock),
18         .clk_out(clkr));
19         
20     display        u2(
21         .clkr(clkr),
22         .data(data),
23         .reset(reset),
24         .e(e));    
25 assign en=clkr|e; 
26 assign rw=0; 
27 endmodule  
View Code

 

  采用分层设计原理,这是顶层部分,底层还有始终分频模快和具体显示控制模块,

 1 module clock_dev(clock,clk_out);
 2     input        clock;
 3     output    reg    clk_out;
 4     
 5     reg    [31:0]    counter;
 6     
 7     always    @    (posedge clock)
 8     begin
 9         if (counter<32'hfffe)
10         counter=counter+32'd1;
11         else
12         counter=32'd0;
13     end
14     
15     always    @ (posedge clock )
16     begin
17         if (counter==32'hff)
18         clk_out=~clk_out;
19         
20     end 
21 
22     endmodule
23     

  最后是显示控制模块:

 

 

posted @ 2013-05-29 11:30  philips_lu  阅读(463)  评论(0编辑  收藏  举报