描述:
<<ARM CPU S3C44B0X在水表智能抄表系统中的应用 >>http://www.shuibiao.com.cn/zixun/show.asp?newsid=866
中提到:
2.3 3C44B0X与LCD TCM-A0902的连接
3C44B0X自带LCD控制模块,但它并不支持所有点阵形式的LCD。为了充分利用该芯片,可以选它所支持的LCD。
但如果一定要用其他的LCD,这也没关系,因为对LCD的操作就象对其他的存储器操作一样简单。本系统选用的
是EPSON公司的TCM-A0902、单色、320×200。直接使用3C44B0X的BANK4来控制。由于3C44B0X是高速处理器,
因此在对LCD操作时加入了软延时。
LCD显示满屏的程序如下:
#define LCDCMD volatile unsigned char 0x8000000
#define LCDDATA volatile unsigned char 0x8000001
void Lcd_Displayfull void //显示满屏
 int j;
U8 I k;
LCDCMD=PASET; //页面设置,page0
LCDDATA=0x0;
LCDCMD=CASET; //列设置, column0
LCDDATA=0x0;
LCDDATA=0x0;
For i=0i<25 I++ //从第0页到24页
 for j=0j<320j++ //从第0列到319列
 LCDCMD=MWRITE; //写命令
LCDDATA =1cd_disp I j; //写数据
For k=0k<3k++; //软延时
 
LCDCMD=RETURN; //换页
--------------------------------------------------------------------------------------------
在 <<S3C44B0X 中文资料>> 中关于LCD的介绍如下
 
LCD寄存器
1	LCD控制寄存器1
LCDCON1    0x01F00000   R/W    LCD控制寄存器1  初始值 0x00000000
2	LCD控制寄存器1
LCDCON2    0x01F00004   R/W    LCD控制寄存器2  初始值 0x00000000
3	LCD控制寄存器3
LCDCON3      0x01F00040  R/W    LCD控制寄存器3  初始值 0x00
位名称           BIT        描述
Reserved       [2:1]        保留
SELFREF       [0]         LCD刷新模式允许位
0 : LCD self refresh mode disable
1 : LCD self refresh mode enable
4	帧缓冲区开始地址1
LCDSADDR1      0x01F00008   R/W    帧缓冲区开始地址1寄存器  初始值 0x000000
LCDSADDR2     0x01F0000C   R/W    帧缓冲区开始地址2寄存器  初始值 0x000000
LCDSADDR3     0x01F00010   R/W    虚拟屏幕地址设置  初始值 0x000000
8	绿色查找表寄存器
GREENLUT     0x01F00018   R/W   绿色查找表寄存器  初始值 0x00000000
9	蓝色查找表寄存器
BLUELUT     0x01F0001C   R/W   蓝色查找表寄存器  初始值 0x0000
DITHMODE  0x01F00044    R/W   抖动模式寄存器               初始值 0x00000
-------------------------------------------------------------------------------
为什么在<<ARM CPU S3C44B0X在水表智能抄表系统中的应用 >>
那篇应用的文章中对控制寄存器跟数据寄存器的定义是这样的:
#define LCDCMD volatile unsigned char 0x8000000
#define LCDDATA volatile unsigned char 0x8000001
而<<S3C44B0X中文资料>> 中lcd的定义为
/* LCD */
#define rLCDCON1	(*(volatile unsigned *)0x1f00000)
#define rLCDCON2	(*(volatile unsigned *)0x1f00004)
#define rLCDCON3	(*(volatile unsigned *)0x1f00040)
同一种芯片为什么会出现寄存器定义的地址不一样?
#define LCDCMD volatile unsigned char 0x8000000
#define LCDDATA volatile unsigned char 0x8000001 这个定义是
根据什么确定的? 

