|
module lcd_1602(
output reg rs, //数据命令选择端(H/L)
output rw, //读写选择端(H/L)
output e, //使能信号
output reg[8:1] data, //数据信号
output led_on, //背光,高电平开,与vga_vs共用
input rst_n,clk //复位,25MHz时钟
);
assign rw=1'b0; //始终为写状态
assign e=lcd_clk; //使能高脉冲
assign led_on=1'b1; //开背光
//******时钟模块*********
// *******分频********
reg[15:1] cnt;
always@(posedge clk) begin
if(!rst_n) cnt<=1'b0;
// else if(cnt==15'h7fff) cnt<=15'd0;
else cnt<=cnt+1'b1;
end
wire lcd_clk = cnt[15]; // (2^15 / 25M) = 1.31ms
parameter idle =4'b0000; //空闲状态
//*********初始化**********
parameter disp =4'b0001; //显示模式设置
parameter disp_clr=4'b0011; //清屏
parameter cursor_set1=4'b0010; //光标设置
parameter cursor_set2=4'b0110; //光标设置
parameter write_add =4'b0111; //起始地址
//***********写数据***********
parameter write=4'b0101;
parameter write2_add=4'b1101;
parameter write1=4'b1111;
reg[128:1] zifu1_r=" I LOVE YOU ";
reg[128:1] zifu2_r=" FOREVER ";
reg[4:1] current,next;
reg[5:1] n,m;
always@(posedge lcd_clk,negedge rst_n) begin
if(!rst_n) current<=idle;
else current<=next;
end
always begin
case(current)
idle: next=disp;
disp: next=disp_clr;
disp_clr: next=cursor_set1;
cursor_set1: next=cursor_set2;
cursor_set2: next=write_add;
write_add: next=write;
write: begin
if(n==15) next=write2_add;
else next=write;
end
write2_add: next=write1;
write1: begin
if(m==15) next=write_add;
else next=write1;
end
endcase
end
always@(posedge lcd_clk,negedge rst_n) begin
if(!rst_n) begin
rs <= 0; // 写指令
data <= 8'hxx;
end
else begin
case(current)
idle,disp,cursor_set1,cursor_set2,write_add,write2_add:rs<=1'b0; //写指令
write,write1:rs<=1'b1;
endcase
case(current)
//*********初始化**********
disp: data<=8'h38; //显示开
disp_clr: data<=8'h01; //清屏指令
cursor_set1: data<=8'h0f; //显示开,光标闪烁
cursor_set2: data<=8'h06; //地址指针加1,整屏不移动
write_add: data<=8'h80; // 起始地址
write: begin
data<=zifu1_r[128:121];
zifu1_r<={zifu1_r[120:1],zifu1_r[128:121]};
n<=n+1'b1;
end
write2_add:data<=8'h80+8'h40;
write1:begin
data<=zifu2_r[128:121];
zifu2_r<={zifu2_r[120:1],zifu2_r[128:121]};
m<=m+1'b1;
end
idle: data<=8'hxx;
endcase
end
end
endmodule |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|