a. 芯片包括2个8位寄存器,一个是指令寄存器(instruction register,简称 IR),另一个是数据寄存器(data register,简称 DR)
b. IR存储指令,例如“清屏”指令,“光标移动”指令等,除此之外,IR还存储用于显示数据的地址信息,这里的“地址”指的是“显示数据随机存储器(DDRAM)”或者“字符生成随机存储器(CGRAM)”中存储的地址信息,DDRAM和CGRAM在后面介绍
c. DR存储数据,当需要传输数据到显示模块时,数据是需要传送给MCU中的DDRAM或者CGRAM这样的存储器中,在这个过程中,数据先存储在DR当中,在传送到DDRAM或者CGRAM中。同理,从显示模块的MCU中读取数据时,也需要使用DR充当中转站,需要注意的是,DR和DDRAM或者CGRAM的传输是自动完成的。另外,既然写入和读取都与DDRAM或者CGRAM有关系,那么如何知道数据写入或者读取DDRAM或者CGRAM中的哪个位置呢,这就要用到IR中存储的相关地址信息。还有一点需要说明,在进行读取操作时,当前一个地址中的数据读取完毕后,位于DDRAM或者CGRAM中的下一个地址中的数据会被自动发送到DR中等待MCU的下一次读取。想一想,写入数据时候,地址会不会自动转移到下一位呢?
d. MCU设置了“寄存器选择标志 (Register Selector)”来判断应该使用哪个寄存器,使用者需要设置RS的电平用以实现相关寄存器的选择。
a. DDRAM可以被认为是“显存”,存储在其中的内容就会被显示屏显示,DDRAM是随机存储器,意味着我们可以向其中写入信息,写入什么信息就显示什么信息,但断电后DDRAM中的信息就被“释放”了。其中一共可以存储并显示80个字符,每个字符有一个地址,这个地址用8位二进制数表示。其中有几点需要注意。
b. 第一点:显示屏上能够显示的字符不足80个,1602显示模块每行最多能显示16个字符,其余的字符是无法同时在屏幕上显示的,为何要设置如此多的又不能同时显示的字符呢,其实是为了能做到“滚屏”,在此不做展开,请自行想象。而不同的芯片显示的字符长度是不同的,使用时需要查看数据手册。1602可以设置成同时显示2行,每行16个字符,地址如下图,发现其中第一行最后一个字符的地址和第二行第一字符的地址并不连续,使用时需要注意。
c. 第二点:你会发现在使用DDRAM地址的时候,指令格式的范例中都是7位,不是8位吗?怎么变成7位了呢,原因是HD4478U芯片中设置了最多80个字符,也就意味着最多有80个地址,最大地址用十六进制表示为4F,用二进制表示就是1001111,所以最大就是7位二进制数,那么第8位即最高位用做什么呢?在设置DDRAM地址的时候第8位要预先设定为1,这一点后面还会提及。
d. 第三点:当设置了“滚屏”功能时,显示屏可以显示DDRAM中被隐藏的其他储存单元中的字符,而显示内容按照储存单元“首尾相接”的顺序进行排布,并且两行同时滚动。例如上、下两行显示完最后两个字符(上图中地址27和67),滚动后接着显示的就是第一个字符(上图中地址00和40)。
字符生成只读存储器(Character Generator ROM,简称CGROM)
a. CGROM存储了240个已经被定义好的字符,其中包括208个5X8点阵的字符,32个5X10点阵的字符。
b. CGROM其实就是一个“字符表”,每个字符都有一个标识,以二进制表示的8位数字表示,这个标识被称为 Character Codes,即“字符码”,想要显示哪个字符直接向DDRAM中写入这个“字符码”就可以了。
c. CGROM为只读存储器,不能修改。
字符生成随机存储器(Character Generator RAM,简称CGRAM)
a. CGRAM是随机存储器,意味着可以写入和修改信息,但是在断电后就CGRAM中的内容就释放了。我们可以用CGRAM编写CGROM中没有的字符。
b. 对于5X8点阵显示方式,可以编写总共8个自定义字符,对于5X10点阵显示方式,可以编写总共4个自定义字符。
c. 与CGROM的设计相同,CGRAM中的每个“自定义”字符也有一个标识,以二进制表示的8位数字表示,与CGROM中的字符的“字符码”不同的是,CGRAM中的每一个字符的字符码其高4位二进制数值都是0,低4位二进制数值的前三位即第0、1、2位用来表示不同的字符,对于5X8点阵显示方式,这三位的字符码从“000”到“111”。低4位的第4位是“无效”位,意思是可以被设置为0,也可以被设置为1。
d. 与每个字符码相对应的是字符的“地址码”,地址码由6位二进制(0~5)表示,对于不同的显示方式,设定是不同的。对于5X8点阵显示方式,这个6位地址码的高3位与“字符码”的第三位相同,而低3位则表示8个不同的字节单元的地址(000~111)。这8个字节是用来构建字符形状的,这也就“点阵”概念的具体实现方式,还记得5X8吗?这8个字节就代表了点阵中的8行。那么5又是什么呢?5就是点阵中一行内的每个点,也就是对应每个字节的各个位,由于每个字节是8位,所以在设置的时候每个字节只用其中的低5位,即0~4,高3位即5~7是无效位,一般置0。在设置时,8个字节的最后一个字节是光标位置,可以置0或者1。通过这种方法组成的字形被称为“字模”(Character Pattern)。5X10显示方式稍有不同,顾名思义,其用到11个字节表示字形,而其地址码仍然由6位组成,所以必须用低4位表示不同的字节单元地址(0000~1010),高2位与“字符码”的低2位相同以表示不同的字符码,同样,地址的最后一位地址即1010对应的字节是光标位置。5X10显示方式的字符码同样是8位的,但第0位和3位是无效位。两种显示方式的字模表如下图
a. 芯片包括2个8位寄存器,一个是指令寄存器(instruction register,简称 IR),另一个是数据寄存器(data register,简称 DR)
b. IR存储指令,例如“清屏”指令,“光标移动”指令等,除此之外,IR还存储用于显示数据的地址信息,这里的“地址”指的是“显示数据随机存储器(DDRAM)”或者“字符生成随机存储器(CGRAM)”中存储的地址信息,DDRAM和CGRAM在后面介绍
c. DR存储数据,当需要传输数据到显示模块时,数据是需要传送给MCU中的DDRAM或者CGRAM这样的存储器中,在这个过程中,数据先存储在DR当中,在传送到DDRAM或者CGRAM中。同理,从显示模块的MCU中读取数据时,也需要使用DR充当中转站,需要注意的是,DR和DDRAM或者CGRAM的传输是自动完成的。另外,既然写入和读取都与DDRAM或者CGRAM有关系,那么如何知道数据写入或者读取DDRAM或者CGRAM中的哪个位置呢,这就要用到IR中存储的相关地址信息。还有一点需要说明,在进行读取操作时,当前一个地址中的数据读取完毕后,位于DDRAM或者CGRAM中的下一个地址中的数据会被自动发送到DR中等待MCU的下一次读取。想一想,写入数据时候,地址会不会自动转移到下一位呢?
d. MCU设置了“寄存器选择标志 (Register Selector)”来判断应该使用哪个寄存器,使用者需要设置RS的电平用以实现相关寄存器的选择。
a. DDRAM可以被认为是“显存”,存储在其中的内容就会被显示屏显示,DDRAM是随机存储器,意味着我们可以向其中写入信息,写入什么信息就显示什么信息,但断电后DDRAM中的信息就被“释放”了。其中一共可以存储并显示80个字符,每个字符有一个地址,这个地址用8位二进制数表示。其中有几点需要注意。
b. 第一点:显示屏上能够显示的字符不足80个,1602显示模块每行最多能显示16个字符,其余的字符是无法同时在屏幕上显示的,为何要设置如此多的又不能同时显示的字符呢,其实是为了能做到“滚屏”,在此不做展开,请自行想象。而不同的芯片显示的字符长度是不同的,使用时需要查看数据手册。1602可以设置成同时显示2行,每行16个字符,地址如下图,发现其中第一行最后一个字符的地址和第二行第一字符的地址并不连续,使用时需要注意。
c. 第二点:你会发现在使用DDRAM地址的时候,指令格式的范例中都是7位,不是8位吗?怎么变成7位了呢,原因是HD4478U芯片中设置了最多80个字符,也就意味着最多有80个地址,最大地址用十六进制表示为4F,用二进制表示就是1001111,所以最大就是7位二进制数,那么第8位即最高位用做什么呢?在设置DDRAM地址的时候第8位要预先设定为1,这一点后面还会提及。
d. 第三点:当设置了“滚屏”功能时,显示屏可以显示DDRAM中被隐藏的其他储存单元中的字符,而显示内容按照储存单元“首尾相接”的顺序进行排布,并且两行同时滚动。例如上、下两行显示完最后两个字符(上图中地址27和67),滚动后接着显示的就是第一个字符(上图中地址00和40)。
字符生成只读存储器(Character Generator ROM,简称CGROM)
a. CGROM存储了240个已经被定义好的字符,其中包括208个5X8点阵的字符,32个5X10点阵的字符。
b. CGROM其实就是一个“字符表”,每个字符都有一个标识,以二进制表示的8位数字表示,这个标识被称为 Character Codes,即“字符码”,想要显示哪个字符直接向DDRAM中写入这个“字符码”就可以了。
c. CGROM为只读存储器,不能修改。
字符生成随机存储器(Character Generator RAM,简称CGRAM)
a. CGRAM是随机存储器,意味着可以写入和修改信息,但是在断电后就CGRAM中的内容就释放了。我们可以用CGRAM编写CGROM中没有的字符。
b. 对于5X8点阵显示方式,可以编写总共8个自定义字符,对于5X10点阵显示方式,可以编写总共4个自定义字符。
c. 与CGROM的设计相同,CGRAM中的每个“自定义”字符也有一个标识,以二进制表示的8位数字表示,与CGROM中的字符的“字符码”不同的是,CGRAM中的每一个字符的字符码其高4位二进制数值都是0,低4位二进制数值的前三位即第0、1、2位用来表示不同的字符,对于5X8点阵显示方式,这三位的字符码从“000”到“111”。低4位的第4位是“无效”位,意思是可以被设置为0,也可以被设置为1。
d. 与每个字符码相对应的是字符的“地址码”,地址码由6位二进制(0~5)表示,对于不同的显示方式,设定是不同的。对于5X8点阵显示方式,这个6位地址码的高3位与“字符码”的第三位相同,而低3位则表示8个不同的字节单元的地址(000~111)。这8个字节是用来构建字符形状的,这也就“点阵”概念的具体实现方式,还记得5X8吗?这8个字节就代表了点阵中的8行。那么5又是什么呢?5就是点阵中一行内的每个点,也就是对应每个字节的各个位,由于每个字节是8位,所以在设置的时候每个字节只用其中的低5位,即0~4,高3位即5~7是无效位,一般置0。在设置时,8个字节的最后一个字节是光标位置,可以置0或者1。通过这种方法组成的字形被称为“字模”(Character Pattern)。5X10显示方式稍有不同,顾名思义,其用到11个字节表示字形,而其地址码仍然由6位组成,所以必须用低4位表示不同的字节单元地址(0000~1010),高2位与“字符码”的低2位相同以表示不同的字符码,同样,地址的最后一位地址即1010对应的字节是光标位置。5X10显示方式的字符码同样是8位的,但第0位和3位是无效位。两种显示方式的字模表如下图