液晶 16032 (兼容12864) verilog 控制代码
http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_382756.jpg(原文件名:图片 001.jpg)
module LCD(clk, rs, rw, en,dat);
input clk;
output dat;
outputrs,rw,en;
//tri en;
reg e;
reg dat;
reg rs;
reg counter;
reg current,next;
reg clkr;
reg cnt;
parameterset0=4'h0;
parameterset1=4'h1;
parameterset2=4'h2;
parameterset3=4'h3;
parameterdat0=4'h4;
parameterdat1=4'h5;
parameterdat2=4'h6;
parameterdat3=4'h7;
parameterdat4=4'h8;
parameterdat5=4'h9;
parameternul=4'ha;
always @(posedge clk) //da de shi zhong pinlv
begin
counter=counter+1;
if(counter==16'h000f)
clkr=~clkr;
end
always @(posedge clkr)
begin
current=next;
case(current)
set0: beginrs<=0; dat<=8'h30; next<=set1; end
set1: beginrs<=0; dat<=8'h0c; next<=set2; end
set2: beginrs<=0; dat<=8'h6; next<=set3; end
set3: beginrs<=0; dat<=8'h1; next<=dat0; end
dat0: beginrs<=1; dat<=8'hb0; next<=dat1; end
dat1: beginrs<=1; dat<=8'ha1; next<=dat2; end
dat2: beginrs<=1; dat<="F"; next<=dat3; end
dat3: beginrs<=1; dat<="P"; next<=dat4; end
dat4: beginrs<=1; dat<="G"; next<=dat5; end
dat5: beginrs<=1; dat<="A"; 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
我在网上找了很久没有发现有价值的东西,所以自己花了点时间写了一个 很简单
献给大家多提意见共同进步
不只为什么 最后的控制en输出的时候与门不行,后来换成或门可以了
点击此处下载 ourdev_382757.rar(文件大小:195K) (原文件名:LCD.rar) ku 顶一下!! 谢谢分享! 学习一下 mark mark 顶一下吧 看看!
不过我只用VHDL Verilog看了点。 mark ,改天来搞搞 好,推崇DIY。 thanks mark 弓虽。
已验证。@1602 / @12864(st7920) 学习 学习 MARK 学习,谢谢 请教楼主 为什么我把你的程序COPY过来烧进去12864一点反应都没有呢?望楼主不吝赐教! 学习,借鉴 MARK mark 好的在这儿学习了!!! mark 1602/12864顶 mark 谢谢 mark!
页:
[1]