描述:
<<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 这个定义是
根据什么确定的?