首页 > 其他 > 详细

lcd_1602

时间:2017-01-15 22:30:00      阅读:166      评论:0      收藏:0      [点我收藏+]
module lcd_pdf(
        clk,lcd_data,
        lcd_rw,lcd_rs,
        lcd_en,rst_n
);

input                        clk;
input                        rst_n;
output    reg    [7:0]    lcd_data;
output    reg            lcd_rw;  // wirte      L
output    reg            lcd_en; 
output    reg            lcd_rs;

//clock 分频
reg    [24:0]    cnt;
reg                clk_10;
always @(posedge clk or negedge rst_n)
    if(!rst_n)begin
        cnt <= 25d0;
        clk_10 <= 1b0;
    end
    else begin
        if(cnt == 5)begin
            clk_10 =~ clk_10;
            cnt <= cnt + 1b1;
        end
    end
        
//shixu
always @(posedge clk_10 or negedge rst_n)
    if(!rst_n)begin
        lcd_rw <= 1b0;
        lcd_en <= 1b0;
    end
    else begin
        case(cnt)
        100000:begin
                lcd_en <= 1b0;
                lcd_data <= 8h30;
                lcd_rw <= 1b0;
                lcd_rs <= 1b0;
            end
        100001:begin    
                lcd_en <= 1b1;
            end
        100010:begin
                lcd_en <= 1b0;
                lcd_data <= 8h0c;
                lcd_rw <= 1b0;
                lcd_rs <= 1b0;
            end
        100011:begin
                lcd_en <= 1b1;
            end
        100020:begin
                lcd_en <= 1b0;
                lcd_data <= 8h01;
                lcd_rw <= 1b0;
                lcd_rs <= 1b0;
            end
        100021:begin
                lcd_en <= 1b1;
            end
        100030:begin                
                lcd_en <= 1b0;
                lcd_data <= 8h80;
                lcd_rw <= 1b0;
                lcd_rs <= 1b0;
            end
        100031:begin
                lcd_en <= 1b1;
            end
        100040:begin
                lcd_en <= 1b0;
                lcd_data <= 8h30;//字符0
                lcd_rw <= 1b0;
                lcd_rs <= 1b1;
            end        
        100041:begin
                lcd_en <= 1b1;
            end
        default:lcd_en <= 1b0;
        endcase
    end
endmodule
            
                
                
        
                
        
            

主要还是按照时序图的时间顺序一步步的写,没有上机验证 而且tb在处理很大的数的时候不知道具体咋弄,留下以后解决

lcd_1602

原文:http://www.cnblogs.com/bixiaopengblog/p/6287938.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!