主题 : 求一个NEC3.5寸屏24BPP的裸机实验,主要是初始化部分 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 1222
精华: 0
发帖: 49
金钱: 490 两
威望: 391 点
综合积分: 98 分
注册时间: 2008-08-04
最后登录: 2010-11-24
楼主  发表于: 2009-02-12 13:20

 求一个NEC3.5寸屏24BPP的裸机实验,主要是初始化部分

本人用嵌入式LINXU开发手册一书的程序烧到板子里可以正常运行
然后按步骤更改至24BPP时烧紧板子问题就出现

本人用的是NEC3.5原配的屏

那位高人可以给我一个LCD的初始化在24BPP下的程序吗?!
[ 此帖被luotiancheng在2009-02-12 14:20重新编辑 ]
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2009-02-12 13:51
我看了很久, 还是这几个字, 不知道你在干什么, 怎么干的
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 3792
精华: 0
发帖: 12
金钱: 115 两
威望: 111 点
综合积分: 24 分
注册时间: 2009-02-09
最后登录: 2010-12-06
2楼  发表于: 2009-02-13 00:33
首先要明白NEC3.5屏的硬件参数,你可以查看DATASHEET,它最大支持的颜色数是262144色,二进制是19位,十六进制是0x40000,没有达到24位色.在写屏的COLOR时你不可能写入24位数据. 裸机跑,没有问题!但是最多你可以写入262144颜色值,因为硬件通信中他就只接收20位,0xfffff,多一位都不行.下面代码是QQ2440V3(MINI2440通用)光盘中UCOSII的代码,写入颜色值是16位的(16BPP),你可以自已改成20位的。其实我觉得没多大意思,16位和19位在视觉上能差多少呢?



此程序来自QQ2440的UCOSII示例LCD.c中一部分

#define M5D(n) ((n) & 0x1fffff)    // To get lower 21bits


unsigned short LCD_BUFFER[SCR_YSIZE_TFT][SCR_XSIZE_TFT];

/**************************************************************
320×240 16Bpp TFT LCD功能模块初始化
**************************************************************/
static void Lcd_PowerEnable(int invpwren,int pwren);
static void Lcd_Init(void)
{
    rGPCUP  = 0x00000000;
     rGPCCON = 0xaaaa02a9;
    
//    rGPDUP=0xffffffff; // Disable Pull-up register
     rGPDUP  = 0x00000000;
   rGPDCON=0xaaaaaaaa; //Initialize VD[15:8]

    rLCDCON1=(CLKVAL_TFT<<8)
             |(MVAL_USED<<7)
             |(3<<5)
             |(12<<1)
             |0;
        // TFT LCD panel,16bpp TFT,ENVID=off
    rLCDCON2=(VBPD<<24)
             |(LINEVAL_TFT<<14)
             |(VFPD<<6)
             |(VSPW);
    rLCDCON3=(HBPD<<19)
             |(HOZVAL_TFT<<8)
             |(HFPD);
    rLCDCON4=(MVAL<<8)
             |(HSPW);
    rLCDCON5=(1<<11)
             | (1<<10)
             | (1<<9)
             | (1<<8)
             | (0<<7)
             | (0<<6)
             | (1<<3)  
             |(BSWP<<1)
             | (HWSWP);
             //5:6:5 VCLK posedge BSWP=0,HWSWP=1;

    rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)
               |M5D((U32)LCD_BUFFER>>1);


    rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_TFT_YSIZE*2))>>1 );//最后还要写入0xfffff以内的数据(2.5字节)


    rLCDSADDR3=(((SCR_XSIZE_TFT-LCD_TFT_XSIZE)/1)<<11)
               |(LCD_TFT_XSIZE/1);
    rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
    rTCONSEL &= (~7) ;     // Disable LPC3480
    rTPAL=0; // Disable Temp Palette
}

应用:
#define RGB(r,g,b)   (unsigned int)( (r << 16) + (g << 8) + b )

Lcd_printf(0,15,RGB( 0xFF,0xFF,0xFF),RGB( 0x00,0x00,0x00),0,"%4d-%02d-%02d 星期%d      中国移动\n",  
级别: 新手上路
UID: 2459
精华: 0
发帖: 21
金钱: 155 两
威望: 111 点
综合积分: 42 分
注册时间: 2008-11-18
最后登录: 2019-02-17
3楼  发表于: 2009-02-13 10:19