这是我做12864多功能显示的时候的笔记
# u. t; D. h# p/ Z3 [2 p! ^ b首先,先来介绍下与卷动显示相关的存储器:DDRAM(DataDisplayRam)。DDRAM(DataDisplayRam):数据显示RAM,往里面写啥,屏幕就会显示啥,与GDRAM不同的是,这里存储的是字符的编码。也就是显示字符用的RAM。字符的显示是先到CGROM(存储了中文字库)或HCGROM(存储了ASCII码)找到对应编码的字模,再显示到屏幕上。 笔者使用的这块12864内部有4行×32字节的DDRAM空间。但是任一时刻,屏幕只能显示2行×32字节的空间,那么剩余的这些空间呢?它们可以用于缓存,在实现卷屏显示时这些空间就派上用场了。DDRAM结构如下所示: DDRAM结构如下所示: 80H、81H、82H、83H、84H、85H、86H、87H、88H、89H、8AH、8BH、8CH、8DH、8EH、8FH90H、91H、92H、93H、94H、95H、96H、97H、98H、99H、9AH、9BH、9CH、9DH、9EH、9FHA0H、A1H、A2H、A3H、A4H、A5H、A6H、A7H、A8H、A9H、AAH、ABH、ACH、ADH、AEH、AFHB0H、B1H、B2H、B3H、B4H、B5H、B6H、B7H、B8H、B9H、BAH、BBH、BCH、BDH、BEH、BFH 地址与屏幕显示对应关系如下: 第一行:80H、81H、82H、83H、84H、85H、86H、87H第二行:90H、91H、92H、93H、94H、95H、96H、97H第三行:88H、89H、8AH、8BH、8CH、8DH、8EH、8FH第四行:98H、99H、9AH、9BH、9CH、9DH、9EH、9FH 说明:红色部分的数据归上半屏显示,黑色部分的数据归下半屏显示。一般屏幕的显示用的是上面两行的空间,也就是80H~8FH,90H~9FH,也就是说屏幕显示的内容是存储在80H~8FH,90H~9FH。每个地址的空间是2个字节,也就是1个字,所以DDRAM中可以用于存储字符编码的空间总共是128字节。因为每个汉字的编码是2个字节,所以每个地址需要使用2个字节来存储一个汉字。汉字的编码的高字节和低字节必须连续且要存储在同一个地址中,这样存储的汉字编码才是正确的,才能正常显示,所以一行最多能显示8个汉字,整个屏幕最多能显示32个汉字。当然如果将同一个地址中的2个字节拆开来使用也可以,那就是显示2个半宽字符(数字或字母,就是ASCII码)。这里顺便说明一下:汉字的分辨率是16*16像素,半宽字符分辨率为16*8像素。所以可以认为一个地址管理着屏幕上的16*16个像素点,所以一个地址可显示一个汉字或两个半宽字符。 DDRAM数据的读/写: 所有的数据读/写都是先送地址,然后进行读/写。对DDRAM写数据时,确保在基本指令集下(使用指令0x30开启),然后写入地址,之后连续写入2个字节的数据。读数据时,在基本指令集下先写地址,然后假读(dummy)一次,之后再连续读2个字节的数据。需要说明的是,每次读/写完一个字节数据后,地址指针会自动增加一个字节。所以读/写完一个字节数据后,地址会自动跳到下一个字节处,所以连续读/写两个字节即可完成对字的操作。 这里的假读需要注意,不光是读CGRAM需要假读,读其他的GDRAM、DDRAM都需要先假读一次,之后的读才是真读,假读就是读一次数据,但不存储该数据,也就是说送地址之后第一次读的数据是错误的,之后的数据才是正确的。
2 y6 |4 j* A6 g( j( s完整的word格式文档下载:
0 F5 `, z3 a# {, Q4 e) \) y |