我用的是LPC2388芯片,现已实现IO驱动LCD屏的功能,背光点亮,背景颜色,都可以实现。
我现在想用总线方式把LCD背我驱亮。但却未能实现 ,我是这样设计的。
P3.0到P3.7接的是D0到D7
P4.0接的是LCD RS,当RS为1时是指令,为0时是数据
P4.2接的是LCD RST 是LCD复位
P4.24接的是LCD RD 为LCD读信号
P4.25接的是LCD WR 为LCD写信号
P4.30接的是LCD CS 为LCD的片选
EMC的A[15:0] 接的是P4.0到P4.15
EMC的D[7:0]接的是P3.0到P3.7
EMC的BLS0接的是P4.25
EMC的OE接的是P4.24
EMC的CS0 、CS1接的是P4.30和P4.31
Memory bank selection
Chip Select Pin Address Range Memory Type Size of Range
CS0 0x8000 0000 - 0x8000 FFFF Static 64 kB
CS1 0x8100 0000 - 0x8100 FFFF Static 64 kB
我的C代码是这样写的。
#define LCD_CMD_ADDR (*(volatile unsigned long *)(0x80000001))
#define LCD_DATA_ADDR (*(volatile unsigned long *)(0x80000000))
void EMC_init()
{
uint32 temp=0x0;
PCONP = PCONP | 0x00000800;
EMC_CTRL = 0x00000001;
PINSEL6 = 0X00005555;//D0-D7
PINSEL8 = 0X55555555;//A0-A15
temp = PINSEL9;
temp &=0xFF0FFFF;
PINSEL9 =temp | 0x50090000;//RD、 WR、 CS0、 CS1
//EMS write
EMC_STA_CFG1 = 0x00000100;//禁止页模式
EMC_STA_WAITWEN1 = 0x00000008;//写使能延时为1cclk
EMC_STA_WAITWR1 = 0x0000001f;//延时33cclk写
// //EMS read
EMC_STA_WAITOEN1 = 0x00000008;//输出使能延时为1cclk
EMC_STA_WAITRD1 = 0x0000001f;//延时为33cclk读
EMC_STA_WAITPAGE1 = 0x00000008;//页读模式延时为1cclk
EMC_STA_WAITTURN1 = 0x00000008;//总线空闲为1cclk
// EMC_STA_EXT_WAIT = 0x0000000f;//延长等待时间
}
void lcd_write_cmd(uint8 cmd)
{
LCD_CMD_ADDR = cmd;//写指令
}
void lcd_write_data(uint8 data)
{
LCD_DATA_ADDR = data;//写数据
}
void lcd_init()
{
os_dly_wait(200); //wait board power on
EMC_init();//EMC初始化
lcd_reset(); //LCD复位
lcd_initial();//LCD初始化
}
LCD的初始化是没有问题的,因为我已经用IO口成功把LCD屏背光点亮,现在想用总线驱亮,却不能成功,我已经找了好几天的原因,都没有找到,请各位高手,指教,我的原因出在哪 里。谢谢。
|