搜索
bottom↓
回复: 12

verilog JM12864F代码

[复制链接]

出0入0汤圆

发表于 2010-1-14 10:10:03 | 显示全部楼层 |阅读模式
自己编的verilog JM12864F代码
之前找了好久,都是VHDL的,自己用verilog写一个,已测试好使,写的不好,见笑!

module lcd12864s(clk,en,rw,rs,data,reset,psb,key1,key2);
input clk;
input reset;
input key1;
input key2;
output [7:0]data;
output rw;
output rs;
output en;
output psb;

reg [7:0]data;
reg [7:0]data1;
reg [50:0]clk_reg;
reg fclk;
reg fclk_reg;
reg [30:0]sum;
reg [30:0]sum1;
reg flag;
reg [7:0]state;
reg [6:0]counter;
reg [6:0]counter1;
reg rw;
reg rs;
wire [6:0]counter2;

always @(posedge clk)
        if(!reset)
                clk_reg<=0;
                else
                        if(clk_reg<500000)
                                clk_reg<=clk_reg+1;
                                        else
                                                begin
                                                        clk_reg<=0;
                                                        fclk<=~fclk;
                                                end

always @(posedge fclk or negedge reset)
        begin
        if(!reset)
                begin
                state<=8'h00;
                flag<=0;
                counter<=0;
                counter1<=0;
                sum<=0;
                sum1<=0;
                end
        else
        begin
                case(state)
                8'h00:
                        begin
                                if(!flag)
                                        begin
                                        flag<=1;
                                        ///counter<=0;
                                        sum<=0;
                                        state<=8'h01;
                                        end
                                else
                                        state<=8'h00;
/*                                        if(sum<'d9999)
                                                begin
                                                sum<=sum+1;
                                                state<=8'h00;
                                                end
                                        else
                                                begin
                                                sum<=0;
                                                state<=8'h00;
                                                end           */
                        end
               
                8'h01:
                        begin
                                rs<=0;
                                rw<=0;
                                data<=8'h30;
                                state<=8'h02;
                        end
                       
                8'h02:
                        begin
                                rs<=0;
                                rw<=0;
                                data<=8'h30;
                                state<=8'h03;
                        end
                       
                8'h03:
                        begin
                                rs<=0;
                                rw<=0;
                                data<=8'h0c;
                                state<=8'h04;
                        end
                       
                8'h04:
                        begin
                                rs<=0;
                                rw<=0;
                                data<=8'h01;
                                state<=8'h05;
                        end
                       
                8'h05:
                        begin
                                rs<=0;
                                rw<=0;
                                data<=8'h06;
                                state<=8'h07;
                        end
                       
                8'h06:
                        begin
                        rs<=0;
                        rw<=0;
                        state<=8'h07;
                        if(counter==7)
                                begin
                                counter<=counter+1;
                                data<=8'h90;
                                end
                                else
                                        if(counter==15)
                                                begin
                                                counter<=counter+1;
                                                data<=8'h88;
                                                end
                                                else
                                                        if(counter==23)
                                                                begin
                                                                counter<=counter+1;
                                                                data<=8'h98;
                                                                end
                        end
                       
            8'h07:
                        begin
                                rs<=1;
                                rw<=0;
                        //        counter1<=counter1+1;
                                data<=data1;
                                counter1<=counter1+1;
                        //        data<=8'hC0;               
                            state<=8'h08;
                        end
                       
                8'h08:
                        begin
                                rs<=1;
                                rw<=0;
                                //data<="吕";
                                //data<=8'hC0+counter;
                        //        counter1<=counter1+1;
                                data<=data1;
                                counter1<=counter1+1;
                                if(counter<7)
                                        begin
                                        counter<=counter+1;
                                        state<=8'h07;
                                        end
                                                else
                                                        if(counter==7)
                                                                begin
                                                                state<=8'h06;
                                                                end
                                                                        else
                                                                                if(counter<15)
                                                                                        begin
                                                                                        state<=8'h07;
                                                                                        counter<=counter+1;
                                                                                        end
                                                                                                else
                                                                                                        if(counter==15)
                                                                                                                begin
                                                                                                                state<=8'h06;
                                                                                                                end
                                                                                                                        else
                                                                                                                                if(counter<23)
                                                                                                                                        begin
                                                                                                                                        state<=8'h07;
                                                                                                                                        counter<=counter+1;
                                                                                                                                        end
                                                                                                                                                else
                                                                                                                                                        if(counter==23)
                                                                                                                                                                begin
                                                                                                                                                                state<=8'h06;
                                                                                                                                                                end
                                                                                                                                                                        else
                                                                                                                                                                                if(counter<31)
                                                                                                                                                                                        begin
                                                                                                                                                                                        state<=8'h07;
                                                                                                                                                                                        counter<=counter+1;
                                                                                                                                                                                        end
                                                                                                                                                                                                else
                                                                                                                                                                                                        state<=8'h09;       
                                                       
                        end
        /*        8'h09:        begin
                                        rs<=0;
                                        rw<=1;
                                        if(sum1<'d9999)
                                                begin
                                                sum1<=sum1+1;
                                                state<=8'h09;
                                                end
                                        else
                                                begin
                                                sum1<=0;
                                                state<=8'h09;
                                                end
                                                end
                                        */
                8'h09:        begin
                                        rs<=0;
                                        rw<=1;
                                        if(key1==0)
                                                begin
                                                rs<=0;
                                            rw<=0;
                                                data<=8'h02;
                                                counter<=0;
                                                counter1<=0;
                                //                counter1<=(counter1-64)>=0?(counter-64):0;
                                                state<=8'h07;
                                                end
                                                else
                                                        if(key2==0)
                                                                begin
                                                                rs<=0;
                                                               rw<=0;
                                                                data<=8'h02;
                                                                counter<=0;
                                                                counter1<='d64;
                                                                state<=8'h07;
                                                                end
                                                                        else
                                                                                if(sum1<'d9999)
                                                                                        begin
                                                                                        sum1<=sum1+1;
                                                                                        state<=8'h09;
                                                                                        end
                                                                                                else
                                                                                                        begin
                                                                                                        sum1<=0;
                                                                                                        state<=8'h09;
                                                                                                        end
                                        end
                                               
                default: state<=8'h00;
               
                endcase
                end
end
assign en=fclk;
assign psb=1;
assign counter2=counter1;

abcd aaa(.da(data1),.ddr(counter2));

endmodule               



quartus ii 6.0版本ourdev_525867.rar(文件大小:543K) (原文件名:lcd12864s.rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2010-1-14 10:11:42 | 显示全部楼层
非常好

出0入0汤圆

发表于 2010-1-14 10:15:11 | 显示全部楼层
很好,急用,多谢,辛苦啦!

出0入0汤圆

发表于 2010-1-14 10:16:48 | 显示全部楼层
太感谢了!

出0入0汤圆

发表于 2010-1-14 10:19:15 | 显示全部楼层
实现了啥功能?

出0入0汤圆

发表于 2010-1-14 10:21:27 | 显示全部楼层
终于有好用的了,很好

出0入4汤圆

发表于 2010-1-14 10:24:05 | 显示全部楼层
mark

出675入8汤圆

发表于 2010-1-14 14:12:12 | 显示全部楼层
可以试下

出0入0汤圆

发表于 2010-3-10 23:06:22 | 显示全部楼层
在用  谢谢啦~

出0入0汤圆

发表于 2010-3-11 11:39:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-14 16:26:54 | 显示全部楼层
能不能跟单片机一样,有个数组把要写的字符都放进去呢

出0入0汤圆

发表于 2012-9-24 23:51:51 | 显示全部楼层
找了好久了

出0入0汤圆

发表于 2013-6-4 16:05:25 | 显示全部楼层
有显示图片的例程吗?verilog编写的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 05:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表