VERILOG控制液晶显示屏显示字符
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
控制液晶显示屏显示字符Spartan—3e
VERILOG
正确无误
module lcd_control(clk,reset,lcd_rs,lcd_rw,lcd_e,lcd_d,flash_ce); input clk;
input reset;
output lcd_rs;
output lcd_rw;
output lcd_e;
output flash_ce;
output[3:0]lcd_d;
reg lcd_rs,lcd_e;
reg [3:0]lcd_d;
assign flash_ce = 1;
assign lcd_rw = 0;
reg [19:0] delay_count;
reg [19:0] num_count;
parameter state1 =6'd1;
parameter state2 =6'd2;
parameter state3 =6'd3;
parameter state4 =6'd4;
parameter state5 =6'd5;
parameter state6 =6'd6;
parameter state7 =6'd7;
parameter state8 =6'd8;
parameter state9 =6'd9;
parameter state10=6'd10;
parameter state11 =6'd11;
parameter state12 =6'd12;
parameter state13 =6'd13;
parameter state14 =6'd14;
parameter state15 =6'd15;
parameter state16 =6'd16;
parameter state17 =6'd17;
parameter state18 =6'd18;
parameter state19 =6'd19;
parameter state20 =6'd20; parameter state21 =6'd21; parameter state22 =6'd22; parameter state23 =6'd23; parameter state24 =6'd24; parameter state25 =6'd25; parameter state26 =6'd26; parameter state27 =6'd27; parameter state28 =6'd28; parameter state29 =6'd29; parameter state30 =6'd30; parameter state31=6'd31; parameter state32 =6'd32; parameter state33 =6'd33; parameter state34 =6'd34; parameter state35=6'd35; parameter state36 =6'd36; parameter state37 =6'd37; parameter state38 =6'd38; parameter state39 =6'd39; parameter state40 =6'd40; parameter state41 =6'd41; parameter state42 =6'd42; parameter state43 =6'd43; parameter state44=6'd44; parameter state45 =6'd45; parameter state46=6'd46; parameter state47 =6'd47; parameter state48 =6'd48; parameter state49=6'd49; parameter state50 =6'd50; parameter state51=6'd51; parameter state52 =6'd52; parameter state53 =6'd53;
reg [5:0] state;
reg state_change;
always @(posedge clk,posedge reset) if(reset)
begin
state_change<=1'b0;
delay_count<=1'b1;
end
else if (delay_count==num_count-1)
begin
state_change<=1'b1;
delay_count<=1'b1;
end
else
begin
state_change<=1'b0;
delay_count<=delay_count+1'b1;
end
always @ (posedge state_change or posedge reset) if(reset)
begin
state<=state1;
num_count<=20'd750000;
end
else
case(state)
state1: begin
state<=state2;
num_count<=20'd4;
lcd_rs<=1'b0;
lcd_e<=1'b0;
lcd_d<=4'h3;
end
state2: begin
state<=state3;
num_count<=20'd12;
lcd_e<=1'b1;
end
state3: begin
state<=state4;
num_count<=20'd205_000;
lcd_e<=1'b0;
end
state4:// 重复写入功能设置指令4'h3;
begin