//FOR ADC
#define rADCCON (*(volatile unsigned *)0x58000000) //ADC control
#define rADCTSC (*(volatile unsigned *)0x58000004) //ADC touch screen control
#define rADCDLY (*(volatile unsigned *)0x58000008) //ADC start or Interval Delay
#define rADCDAT0 (*(volatile unsigned *)0x5800000c) //ADC conversion data 0
#define rADCDAT1 (*(volatile unsigned *)0x58000010) //ADC conversion data 1
#define rADCUPDN (*(volatile unsigned *)0x58000014) //Stylus Up/Down interrupt status
//FOR LCD
#define U32 unsigned int
#define M5D(n) ((n) & 0x1fffff) //用于设置显示缓存区时,取低21位地址
#define rGPCCON (*(volatile unsigned *)0x56000020) //Port C control
#define rGPCDAT (*(volatile unsigned *)0x56000024) //Port C data
#define rGPCUP (*(volatile unsigned *)0x56000028) //Pull-up control C
#define rGPDCON (*(volatile unsigned *)0x56000030) //Port D control
#define rGPDDAT (*(volatile unsigned *)0x56000034) //Port D data
#define rGPDUP (*(volatile unsigned *)0x56000038) //Pull-up control D
#define rGPGCON (*(volatile unsigned *)0x56000060) //Port G control
#define rGPGDAT (*(volatile unsigned *)0x56000064) //Port G data
#define rGPGUP (*(volatile unsigned *)0x56000068) //Pull-up control G
#define rLCDCON1 (*(volatile unsigned *)0x4d000000) //LCD control 1
#define rLCDCON2 (*(volatile unsigned *)0x4d000004) //LCD control 2
#define rLCDCON3 (*(volatile unsigned *)0x4d000008) //LCD control 3
#define rLCDCON4 (*(volatile unsigned *)0x4d00000c) //LCD control 4
#define rLCDCON5 (*(volatile unsigned *)0x4d000010) //LCD control 5
#define rLCDSADDR1 (*(volatile unsigned *)0x4d000014) //STN/TFT Frame buffer start address 1
#define rLCDSADDR2 (*(volatile unsigned *)0x4d000018) //STN/TFT Frame buffer start address 2
#define rLCDSADDR3 (*(volatile unsigned *)0x4d00001c) //STN/TFT Virtual screen address set
#define rLCDINTMSK (*(volatile unsigned *)0x4d00005c) //LCD Interrupt mask
#define rTCONSEL (*(volatile unsigned *)0x4d000060) //LPC3600 Control --- edited by junon
#define LCD_WIDTH 240 //屏幕的宽
#define LCD_HEIGHT 320 //屏幕的高
//垂直同步信号的脉宽、后肩和前肩
#define VSPW ((6-1)&0x3f)
#define VBPD ((2-1)&0xff)
#define VFPD ((2-1)&0xff)
//水平同步信号的脉宽、后肩和前肩
#define HSPW ((4-1)&0xff)
#define HBPD ((8-1)&0x7f)
#define HFPD (20-1)
//显示尺寸
#define LINEVAL (LCD_HEIGHT-1)
#define HOZVAL (LCD_WIDTH-1)
#define U16 unsigned short
//for LCDCON1
#define CLKVAL_TFT 6 //设置时钟信号
#define MVAL_USED 0 //
#define PNRMODE_TFT 3 //TFT型LCD
#define BPPMODE_TFT 12 //16位TFT型LCD
//for LCDCON5
#define BPP24BL 0 //32位数据表示24位颜色值时,低位数据有效,高8位无效
#define INVVCLK 0 //像素值在VCLK下降沿有效
#define INVVLINE 1 //翻转HSYNC信号
#define INVVFRAME 1 //翻转VSYNC信号
#define INVVD 0 //正常VD信号极性
#define INVVDEN 0 //正常VDEN信号极性
#define PWREN 1 //使能PWREN信号
#define BSWP 0 //颜色数据字节不交换
#define HWSWP 0 //颜色数据半字不交换
//定义显示缓存区
volatile unsigned short LCD_BUFFER[320][240];
extern unsigned char xyx_240_320[]; //宽240,高320
extern unsigned char ARM[];
extern unsigned char TQ_LOGO_240320[];
void Paint_Bmp(int x0,int y0,int h,int l,unsigned char bmp[])
{
int x,y,k=0;
U32 c;
int p = 0;
for( y = y0 ; y < l ; y++ )
{
for( x = x0 ; x< h ; x++ )
{
c = bmp[p+1] | (bmp[p]<<8) ;
//c=0xd000;
if ( ( (x0+x) < LCD_WIDTH) && ( (y0+y) <LCD_HEIGHT) )
LCD_BUFFER[y0+y][x0+x] =c;
//LCD_BUFFER[y*240+x] = c;
p = p + 2 ;
}
//c++;
}
}
//16色tft
void tft_16bit_init()
{
rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(PNRMODE_TFT<<5)|(BPPMODE_TFT<<1)|0;
rLCDCON2=(VBPD<<24)|(LINEVAL<<14)|(VFPD<<6)|(VSPW);
rLCDCON3=(HBPD<<19)|(HOZVAL<<8)|(HFPD);
rLCDCON4=(HSPW);
// rLCDCON5 = (BPP24BL<<12) | (INVVCLK<<10) | (INVVLINE<<9) | (INVVFRAME<<8) | (0<<7) | (INVVDEN<<6) | (PWREN<<3) |(BSWP<<1) | (HWSWP);
rLCDCON5=(1<<11)|(0<<9)|(0<<8)|(0<<6)|(BSWP<<1)|(HWSWP);
rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);//帧缓存器的起始地址
rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(LCD_WIDTH*LCD_HEIGHT*2))>>1 );
}
void main(void)
{
//配置LCD相关引脚
rGPCUP = 0x00000000;
rGPCCON = 0xaaaa02a9;
rGPDUP = 0x00000000;
rGPDCON=0xaaaaaaaa;
rLCDINTMSK|=(3); // 屏蔽LCD中断
rTCONSEL = 0; //无效LPC3480
tft_16bit_init();
//rLPCSEL&=(~7); // Disable LPC3600
//rTPAL=0; // Disable Temp Palette
rGPGUP=rGPGUP&(~(1<<4))|(1<<4); //GPG4上拉电阻无效
rGPGCON=rGPGCON&(~(3<<8))|(3<<8); //设置GPG4为LCD_PWREN
rGPGDAT = rGPGDAT | (1<<4) ; //GPG4置1
rLCDCON1|=1; //LCD开启
Paint_Bmp(0,0,240,320,ARM);
}
}
这是一个lcd程序,大家帮忙看一下究竟是哪里的问题,屏幕就是不会亮!!!! 我是2440的片子