主要是看懂它CGROM CGRAM的存储空间图,和工作原理
用户直接操作DDRAM,DDRAM有80个字节,其位置与1602的显示位置有对应关系,基本思想是向指定的DDRAM地址中写入字符对应的ASCII码,其实是指针,DDRAM通过这个指针在CGROM中找到它对应的字模数组,然后显示在屏幕上。
用户看起来是对DDRAM的操作,实则是通过DDRAM调用了CGROM中的字模数组,显示在LCD上。
图1
其奥妙在于它的ASCII码、字符点阵地址、行地址的对应关系上
图2(没有复制完整)
DDRAM的地址对应LCD上的一个位,其内容是一个指针,指向了点阵中的数组。
以00H为例,(写地址的时候要写成0X80,因为指令规定了高位要为1 ,见DDRAM地址设置指令)向00H中写一个01100010则LCD的处理器会视01100010为指针,然后通过CGROM找到它对应的一组字模代码,如下图,这个指针对应的是一个存储空间,这个存储空间就是8行5列,对应下面的行地址0000到0111.这就是行地址的意思,也就是字模码的行。
,第8行对应的是光标,就是我们在LCD上看到一最后一行,如果是光标闪烁的话,那一闪闪的就是第8行的位在不断的置0置1的结果。
如下图3示
行、列描述的是存储空间,字模码的行列就是8行5列的;还有个行地址批的是CGROM 的行,CGROM中的低4位就是行,共16行16列,如图2 示
图3
下面提用户自定的的解释
CGRAM其实是CGROM中的一部分,这部分是没有被写进字模码的存储空间。
前8位没有用到,可以让用户自己写字模码。
用户最多写8个,CGROM中对应行0000行到0111行,当然对就的是第0列。
第个CGRAM对应一个8行5列的存储空间,如下图4示
因此写自定义字模时要先设定好这个CGRAM的地址,如00000000,然后要在这个地址中写入8行的数据,如图4示,第一个地址代表字符标号,也就是行DDRAM中写的指针,下面的字符码的低3位,现时也是CGRAM的高3位,位5 4 3。
自定义进就是这样写的
程序也是按这个思想写的。
之前用1602都是简单的用它的字库中的内容,最近给别人做一个东西,要用到特定的字符,上升符号、下降符号,当然也有简单的汉字。
也只好再复习以前学的的东西了。
正在调试程序中。
网上也有很多的例程,基本思想都一样,只要会写数据、会写命令就行了,1602是最基本的液晶模块,应该深入理解。
不要想当然的被别人的“1602显示汉字就是鸡肋,显示汉字没有用、不用自己写CGRAM等等”,所同化。
要知道用户让你显示一个字库中不存在的符号是,这与显汉字是雷同的。
最权威的是1602通用手册。