本博文介绍如何向开发板上集成的LCD显示器写数据以显示。
一、实验效果
1、LCD显示器可以显示
Created by 和 clear lcd
lulipeng lulipeng
2、通过滑动开关SW0(L13)和SW1(L14)可以在两种显示之间任意切换。
二、设计过程
1、LCD的控制器内部有DD RAM(显示字符存储器),用户就是向其中写入要显示的字符编码的(ASCII码)。
CG ROM内部已存储了字符集,每个字符的索引也就是其ASCII码。比如u的索引就是0111 0101。
2、在写之前就要把数据都存放到指定的位置。也就是要用户指定存储地址存储字符以便将来写。
3、LCD加电后其初始化是有一定的过程的。
初始化的第一步骤是建立FPGA与LCD的4位的数据接口,具体如下:
A:等待15ms或更长,尽管FPGA完成配置后显示屏一般处于准备就绪状态。在50MHz时,15ms时间等于750000时钟周期。
B:写SF_D<11:8>=0x3,LCD_E保持高电平12时钟周期。
C:等待4.1ms或更长,即在50MHz时,205000时钟周期。
D:写SF_D<11:8>=0x3,LCD_E保持高电平12时钟周期。
E:等待100us或更长,即在50MHz时,5000时钟周期。
F:写SF_D<11:8>=0x3,LCD_E保持高电平12时钟周期。
G:等待40us或更长,即在50MHz时,2000时钟周期。
H:写SF_D<11:8>=0x2,LCD_E保持高电平12时钟周期。
I:等待40us或更长,即在50MHz时,2000时钟周期。
4、初始化之后要配置显示屏
上电初始化完成后,4位的数据接口就建立了。下一步就是配置显示屏了:
A:发一个功能设置命令,0x28,配置显示屏。
B:发一个进入模式命令,0X06,设置显示屏自动增地址指针。
C:发一个显示开/断命令,0x0c,开显示屏并失能指针和光标。
D:最后,发清屏命令,此后等待至少1.64ms(82000时钟周期)。
5、此外,还要设置字符是否滚动显示,还是静止。大家可以参考用户指导手册自行决定。
三、代码集锦
1、verilog源码
module lcd_display(CLK, RST, LCD_E, LCD_RS, LCD_RW, SF_CE0, LCD_D