项目名称
基于FPGA的lcd1602液晶显示
具体要求
第一行显示今天的日期2020-07-01日,第二行显示笔者最终做完的具体时间吧
设计说明
笔者采用的是50mm*30mm的mini型lcd1602,体积小,可以同时显示16*2,即32个字符(16列*2行)。
lcd1602主要有两个操作,即读操作和写操作,一般不会用到读操作,要注意lcd的驱动频率,不然由于fpga写入速度快,会让lcd无法响应,lcd的驱动模式采用8bit模式,设计简单,操作方便。lcd初始化如下
(1)延时15ms,等待lcd上电稳定 |
(2) 功能配置,主要配置lcd是8bit还是4bit的显示模式,显示行数 为2行还是1行,字符是以5*11还是5*8显示(38H) |
(3) 为了显示模式的配置,首先需要关闭lcd1602 |
lcd1602液晶显示屏指令
code | RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
0 | 0 | 0 | 0 | 1 | DL | N | F | X | X |
X表示取1或者0都可以。 DL设置数据接口位数,=1,代表8位数据接口(D7-D0);=0,代表4位数据接口(D4-D0),这里选择8bit。N=0,一行显示;=1,两行显示。 F=0,5*8点阵字符;=1,5*10点阵字符。 由于是写指令字,RS与RW全是0。LCD1602仅仅能用并行方式驱动,并不允许使用串行方式驱动。而并行方式又可以选择8位数据接口或4位数据接口。这里我们选择8位数据接口,两行显示,5×8点阵,即0b00111000也就是0x38。
显示开关控制 | RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B |
D显示功能关(0),开(1);C有(1)无(0)光标;B光标闪烁(1),不闪烁(0)。设置为08H。
(4)重置DDRAM地址
清除显示 | RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
设置为01H