打印

LPC2294驱动液晶屏

[复制链接]
1921|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dzxc|  楼主 | 2011-2-12 13:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
zlgsmartarm2200(其中CPU已经更换为LPC2294),液晶屏使用的是金鹏电子的OCM480272T430-1B。当使用IO作驱动的时候,屏能正常工作。其基本代码为:
#define
P_D0
0x00010000
//D0--P2.16

#define
P_D1
0x00020000
//D1--P2.17

#define
P_D2
0x00040000

//D2--P2.18

#define
P_D3
0x00080000
//D3--P2.19

#define
P_D4
0x00100000
//D4--P2.20

#define
P_D5
0x00200000
//D5--P2.21

#define
P_D6
0x00400000

//D6--P2.22

#define
P_D7
0x00800000
//D7--P2.23


#define
P_RD
0x00020000
//--P0.17

#define
P_WR
0x00040000
//--P0.18

#define
P_CS
0x00080000
//--P0.19

#define
P_RS
0x00100000
//--P0.20

#define
P_RST
0x00800000
//--P0.23


将以上IO均设置成GPIO

void wr_shju(unsigned char data)
//
写数据

{

IO2SET = IO2SET |
(data<<16);


IO2CLR = IO2CLR |
(~(data<<16));

}


unsigned char rd_shju(void)
//
读数据

{

uint32
i;

   

i=IO2PIN;


i=i>>16;

   

return ((unsigned char)(i));

}

启动代码使用zlg的代码,屏能正常工作。

将屏的CS端接开发板的Ncs2以后,尝试以总线方式驱动。在代码中做如下修改:
#define
P_TH_ADDR
(*((volatile uint8 *) 0x82000000))
//nCS2
控制下的液晶屏地址




void wr_shju(unsigned char data)
{

//IO2SET = IO2SET |
(data<<16);


//IO2CLR = IO2CLR |
(~(data<<16));


P_TH_ADDR=data<<16;

}


unsigned char rd_shju(void)
{

uint32
i;

   

i=P_TH_ADDR;


i=i>>16;

   

return ((unsigned char)(i));

}

说明:因为我的BANK定义为32位数据总线,屏的D0ARMD16,所以需要移动16

启动代码中设置为:
LDR
R0, =PINSEL2


IF :DEF: EN_CRP


LDR
R1, =0x0f814920


ELSE


LDR
R1, =0x0f814924


ENDIF


STR
R1, [R0]



LDR
R0, =BCFG0


LDR
R1, =0x1000ffef


STR
R1, [R0]



LDR
R0, =BCFG1


LDR
R1, =0x1000ffef


STR
R1, [R0]



LDR
R0, =BCFG2


LDR
R1, =0x2000ffef


STR
R1, [R0]

同时,降低ARM的频率,运行结果为:
NCS2上有正常的波形出现,但是,数据线的D7~D0上数据非常不好(怀疑ARM的数据总线驱动能力弱)。最终的结果是屏不能正常驱动。

想请教各位高人:
我以上的思路有问题吗?如果有问题,还需要修改哪些地方?谢谢!

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

150

帖子

1

粉丝