LCD端口寻址:
/**********************************************************/
//LCD端口寻址:nCS2与A7或运算后求非作为E信号
//ADR1 : R/S (1:高选择数据寄存器,0:低选择指令寄存器)
//ADR2 : R/W (高选择读,低选择写)
//ADR3 : CS1 (高有效,选择LCD左半部分)
//ADR4 : CS2 (高有些,选择LCD右半部分)
/**********************************************************/
#define LcdCmdAddr_L (*(volatile int8u *)0x82800068) //液晶左半部分命令写入
#define LcdCmdAddr_R (*(volatile int8u *)0x82800070) //液晶右半部分命令写入
#define LcdStatusAddr_L (*(volatile int8u *)0x8280006c) //液晶左半部分状态读出
#define LcdStatusAddr_R (*(volatile int8u *)0x82800074) //液晶右半部分状态读出
#define LcdDatWriteAddr_L (*(volatile int8u *)0x8280006a) //液晶左半部分数据写入
#define LcdDatWriteAddr_R (*(volatile int8u *)0x82800072) //液晶右半部分数据写入
#define LcdDatReadAddr_L (*(volatile int8u *)0x8280006e) //液晶左半部分数据读出
#define LcdDatReadAddr_R (*(volatile int8u *)0x82800076) //液晶右半部分数据读出
#define LCDL 0 //;对左边模块进行操作
#define LCDR 1 //;对右模块操作
对LCD端口的指令操作表:
YM12864I内部驱动芯片为KS0108B兼容芯片,内部显存为64×64×2bit,可显示8行(每行16个)的8×8点阵英文字符、或4行(每行16个)的16×8的英文字符、或4行(每行8个)的汉字点阵字符、或分辨率小于128×64的任意图像,字符及图像数据必须纵向取模、字节倒序。
对显存的寻址分为行地址(即页地址X)和列地址(Y),X取值为0-7,Y取值为0-63,一个(X,Y)有序对结合CS1、CS2片选信号可以唯一确定显存地址(8bit),见下图:
向显存对应的bit写入1则点亮相应的像素点,显存中的bit与LCD面板上的像素点的对应关系为: