集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1773|回复: 3

1602控制程序

[复制链接]
jc5471 发表于 2010-11-5 16:22:12 | 显示全部楼层 |阅读模式
刚调出来的,下载了就能用!
module lcd(clk,reset,rs,rw,en,dat);
input clk,reset;//
output rs,rw,en;
output[7:0] dat;
reg rs,rw;
wire en;
reg[7:0] dat;
reg[7:0] dats;
reg[3:0] state;
reg[3:0] count_cnt;
reg[5:0] counter;
reg[5:0] address;
reg[19:0] div_cnt;
wire cnt;
reg flag;
reg clkr;
reg tc_clk;
parameter
        init=4'b0000,
        setbase1=4'b0001,
        setbase2=4'b0010,
        setmode1=4'b0011,
        setmode2=4'b0100,
        moveleft=4'b0101,
        setddram=4'b0110,
        writeram=4'b0111;
assign en=clkr;
assign cnt=(div_cnt==20'h8ffff);
always @(posedge clk or negedge reset)
begin
   
    if(!reset)
               div_cnt=20'd0;
        else
               div_cnt=div_cnt+1'b1;
               
end
always @(posedge clk or negedge reset)
begin
        if(!reset)
           tc_clk<=0;
        else if(cnt)
              tc_clk=~tc_clk;

end

always @(posedge tc_clk or negedge reset)
begin
  if(!reset)
    clkr<=0;
  else
    clkr=~clkr;
end

always @(posedge clkr or negedge reset)
begin
    if(!reset)
    begin
      count_cnt<=0;
      counter<=0;
      state<=init;
      flag<=0;  
    end       
    else
    begin
    case(state)
    init:
        if(flag==0)
        begin
             state<=setbase1;
         counter<=0;
         count_cnt<=0;
         flag<=1'b1;        
        end
       else
         if(count_cnt<='b1100)
         begin
              count_cnt<=count_cnt+1'b1;
          state<=init;
         end
         else
          begin
          state<=moveleft;
          count_cnt<=0;
          end

    setbase1:state<=setbase2;
    setbase2:state<=setmode1;
    setmode1:state<=setmode2;
    setmode2:state<=writeram;
  
    moveleft:state<=init;
    setddram:state<=writeram;
    writeram:
             begin
               if(counter<='d10)
                begin
                state<=writeram;
                counter<=counter+1'b1;
                end
               else
                if(counter<='d25)
                begin
                 if(counter==11)
                  begin
                  state<=setddram;
                  counter<=counter+1'b1;
                  end
                 else
                  begin
                  state<=writeram;
                  counter<=counter+1'b1;
                  end
                end
                else
                  
                  state<=moveleft;
             end
         
    default:state<=init;
    endcase
    end
end
always @(counter)
begin
   case(counter)
   6'b00_0000:dats<="M";
   6'b00_0001:dats<="e";
   6'b00_0010:dats<="n";
   6'b00_0011:dats<="g";
   6'b00_0100:dats<=" ";
   6'b00_0101:dats<="m";
   6'b00_0110:dats<="e";
   6'b00_0111:dats<="n";
   6'b00_1000:dats<="g";
   6'b00_1001:dats<=" ";
   6'b00_1010:dats<=1110_0001;
   6'b00_1011:dats<=1110_0001;
   6'b00_1100:dats<="F";
   6'b00_1101:dats<="o";
   6'b00_1110:dats<="r";
   6'b00_1111:dats<="e";
   6'b01_0000:dats<="v";
   6'b01_0001:dats<="e";
   6'b01_0010:dats<="r";
   6'b01_0011:dats<=" ";
   6'b01_0100:dats<="B";
   6'b01_0101:dats<="r";
   6'b01_0110:dats<="o";
   6'b01_0111:dats<="t";
   6'b01_1000:dats<="h";
   6'b01_1001:dats<="e";
   6'b01_1010:dats<="r";
   default:    dats<=8'd32;
  endcase
end

always@(posedge clkr)
begin
    rs<=((state==writeram))?1:0;
    rw<=1'b0;
   case(state)
    setbase1:dat<='h38;
    setbase2:dat<='h0f;
    setmode1:dat<='h01;
    setmode2:dat<='h06;
    //setcur1:dat<='h0f;
    moveleft:dat<='h18;  
    setddram:
             if(counter==0)
             dat<=8'h80;
             else dat<=8'hc0;
    writeram: dat<=dats;     
    default:dat<=8'bzzzz_zzzz;
    endcase
end

endmodule
FPGA_aihaozhe 发表于 2011-2-6 02:08:19 | 显示全部楼层
学习了!!!!!!!!!!!!!!
fsouth 发表于 2014-3-26 13:06:27 | 显示全部楼层
请问您个问题 我把您那个程序拷贝了后
下载到1602的过程中,屏幕有字符&#160; &#160;但是下载完成后就没有了   这是怎么回事呢??????    楼主       求指点
雷1314521景 发表于 2023-4-19 10:03:04 | 显示全部楼层
1602控制程序
http://www.fpgaw.com/forum.php?m ... 8&fromuid=59831
(出处: 集成电路技术分享)
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-16 19:34 , Processed in 0.099343 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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