FPGA学习之LCD1602基本知识(控制,显示,时序)(一) | 您所在的位置:网站首页 › lcd1602怎么显示 › FPGA学习之LCD1602基本知识(控制,显示,时序)(一) |
FPGA学习之LCD1602基本知识(控制,显示,时序)
前言
LCD1602顾名思义就是显示两行,每行16个字符。如下图所示: (1)RS:数据/指令选择端,当RS = 0时,写指令,当RS = 1时,写数据 (2)RW:读/写选择端,当RW = 0时,写指令/数据,当RW = 1时,读状态/数据 (3)EN:使能端,下降沿使指令/数据生效 (4)data[7:0]:8根并行数据口 那LCD1602总共引出的接口信号线如下图所示: 不论是什么LCD的控制显示都内置了字符显示RAM缓冲区(DDRAM)。 字符显示是通过将字符显示编码写入该字符显示RAM实现。根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库),HCGROM(ASCII码字库)及CGRAM(自定义字形)的内容。 其实就是DDRAM是用来使液晶显示的,CGROM是液晶屏可显示的内容(在CGROM表中查看),CGRAM是用来扩展液晶屏可以显示的内容的。 LCD1602内置了DDRAM,CGROM和CGRAM,其中要让LCD显示就是需要在DDRAM的相应地址写入数据。 其中DDRAM地址和液晶显示位置的对应关系如下图所示 例如我们在第一行最左边显示字母A,该如何进行操作呢? 首先我们需要找到第一行最左边对应DDRAM的地址是什么?查看上图可知是00H。 第二步我们需要知道字母A对应的字符代码是多少?最直接的方法就是查找ASCII表。 另一种就是我们知道LCD1602是一种字符点阵显示器,为了显示一种字符的字形,必须要有这个字符的字模数据,什么叫字符的字模数据呢?例如下图的字符“A”的字模数据就知道了。
从上面图中可以看出字符“A”的高四位是0100,低四位是0001,合在一起就是01000001b,即41H,恰好与ASCII码一致。 由上图可以看出10H-1FH和80H-9FH是空白没有使用的。 因此总结得出如果想在LCD左上角显示字符“A”,那么就把字符“A”的字符代码41H写入DDRAM的00H地址处即可。 那如何实现任意地址显示任意字母和数字呢?这个是接着字符“A”显示的总结来说,具体一点就是:“在LCD中我要在某一行某个位置显示任意字母或数字,就在对应的DDRAM的地址上写入该字母或数字的字符代码”。 什么意思呢? 就是说,比如我想要显示“1”这个数字,对应LCD上就不是在对应上真的写入01H就能显示数字“1”,而是把数据“1”当做一个图案,而这个图案对应的字符代码是31H,因此需要显示数字“1”,就需要在LCD的数据总线上写入31H即可。 以此类推,例如我们需要显示“2020 year”,因此我们输入给LCD的数据字符代码顺序是:32H,30H,32H,30H,20H(空格),79H,65H,61H,72H。 那如果需要显示汉字怎么办?上面解决了任意位置显示任意字母或数字的问题,但在我们看出汉字在图中找不到,例如上面显示的“2020 year”要改成显示“2020年”怎么办? 在讲到字符“A”提到的字符的字模数据是怎么产生的? 借助于字模软件,如下图所示,可以得出汉字“年”的字模数据。 然后我们就需要将这个8个8位数据写入CGRAM中去,写CGRAM的的指令如下
下篇文章将介绍如何在FPGA实现LCD1602驱动,由于手上没有LCD1602液晶模块,将选用其他液晶显示模块来展示如何在FPGA中实现液晶驱动,以及后续学习如何制作在实际应用的的IP封装核。 |
CopyRight 2018-2019 实验室设备网 版权所有 |