查看: 1197|回复: 0

【小脚丫Step FPGA】LCD1602显示----微风细雨

[复制链接]
  • TA的每日心情
    郁闷
    2017-12-4 18:33
  • 签到天数: 94 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2015-12-11 13:36:25 | 显示全部楼层 |阅读模式
    分享到:
    本节使用的LCD1602模块,但控制模块是精简版,或者简单版更恰当。因为舍去了LCD1602的读操作,利用慢显示原理,只对LCD1602进行写操作。
          1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)
          市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
    管脚功能如下表所示:
    引脚符号功能说明
    1
    VSS
    一般接地
    2
    VDD
    接电源(+5V或+3.3V)
    3
    V0
    液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
    4
    RS
    RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
    5
    R/W
    R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
    6
    E
    E(或EN)端为使能(enable)端,
    写操作时,下降沿使能。
    读操作时,E高电平有效
    7
    DB0
    低4位三态、 双向数据总线 0位(最低位)
    8
    DB1
    低4位三态、 双向数据总线 1位
    9
    DB2
    低4位三态、 双向数据总线 2位
    10
    DB3
    低4位三态、 双向数据总线 3位
    11
    DB4
    高4位三态、 双向数据总线 4位
    12
    DB5
    高4位三态、 双向数据总线 5位
    13
    DB6
    高4位三态、 双向数据总线 6位
    14
    DB7
    高4位三态、 双向数据总线 7位(最高位)(也是busy flag)
    15
    BLA
    背光电源正极
    16
    BLK
    背光 电源负极

    寄存器选择控制表:
    RS
    R/W
    操作说明
    0
    0
    写入指令寄存器(清除屏等)
    0
    1
    读busy flag(DB7),以及读取位址计数器(DB0~DB6)值
    1
    0
    写入数据寄存器(显示各字型等)
    1
    1
    从数据寄存器读取数据
    注:关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0.LCD 1602在使用前首先需要进行初始化。
    本节初始化内容有:
    1、功能设置:Mode_Set = 8'h38 // 设置16*2显示,5*7点阵,8位数据接口
    2、显示设置:Cursor_Set = 8'h0c // 开显示,不显示光标
    3、地址设置:Address_Set = 8'h06 // 地址加1,当写入数据的时候光标右移
    4、清屏:      Clear_Set = 8'h01 // 清楚屏幕显示
    代码如下:
    //-------------------init_state---------------------8'd0 : begin        data_buf = Data;        lcd_rs <= 1'b0;        lcd_en <= 1'b1;        lcd_data <= Mode_Set;        state <= state + 1'b1;end8'd1 : begin        lcd_en <= 1'b0;        state <= state + 1'b1;end8'd2 : begin        lcd_rs <= 1'b0;        lcd_en <= 1'b1;        lcd_data <= Cursor_Set;        state <= state + 1'b1;end8'd3 : begin        lcd_en <= 1'b0;        state <= state + 1'b1;end8'd4 : begin        lcd_rs <= 1'b0;        lcd_en <= 1'b1;        lcd_data <= Address_Set;        state <= state + 1'b1;end8'd5 : begin        lcd_en <= 1'b0;        state <= state + 1'b1;end8'd6 : begin        lcd_rs <= 1'b0;        lcd_en <= 1'b1;        lcd_data <= Clear_Set;        state <= state + 1'b1;end8'd7 : begin        lcd_en <= 1'b0;        state <= state + 1'b1;end显示内容:
    1、写地址
    2、写数据
    主要代码如下:
    8'd8 : begin        lcd_rs <= 1'b0;        lcd_en <= 1'b1;        lcd_data <= addr1;        state <= state + 1'b1;end8'd9 : begin        lcd_en <= 1'b0;        state <= state + 1'b1;end8'd10 : begin        lcd_rs <= 1'b1;        lcd_en <= 1'b1;        lcd_data <= data_buf[255:248];        state <= state + 1'b1;end8'd11 : begin        lcd_en <= 1'b0;        data_buf <= {data_buf[247:0],data_buf[255:248]};        Address <= Address + 1'b1;        if(Address == 15)                state <= state + 1'b1;        else                state <= 10;end连好线就可以显示啦!!!
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 07:35 , Processed in 0.140668 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.