主题 : LCD裸机测试程序——疑问??    请高手指教 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 52095
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
综合积分: 2 分
注册时间: 2011-07-12
最后登录: 2011-08-26
楼主  发表于: 2011-07-12 16:40

 LCD裸机测试程序——疑问??    请高手指教

管理提醒: 本帖被 qq2440 从 micro2440技术交流专区 移动到本区(2013-11-18)
LCD裸机测试程序中:
  在LCD屏幕上指定坐标点画一个指定大小的图片
**************************************************************/
static void Paint_Bmp(int x0,int y0,int h,int l,const unsigned char *bmp)
{
    int x,y;
    U32 c;
    int p = 0;
    
    for( y = 0 ; y < l ; y++ )
    {
       for( x = 0 ; x < h ; x++ )
         {                    
           c = bmp[p+1] | (bmp[p]<<8) ;---------------------------------------
          if ( ( (x0+x) < SCR_XSIZE) && ( (y0+y) < SCR_YSIZE) )
          LCD_BUFFER[y0+y][x0+x] = c ;
          p = p + 2 ;
        }
    }
}



疑问:
    c = bmp[p+1] | (bmp[p]<<8) ;
   1.在送数据的时候,为什么要把bmp[p] 取的数据放在高8位?

   2.我的LCD屏是统宝3.5,  硬件接口是
    R0~R5:    LCD_VD18~LCD_VD23
        G0~G5:    LCD_VD11~LCD_VD15
       B0~B5:    LCD_VD2~LCD_VD7
      
       但在送数据的时候却是,好象是把数据送到LCD_VD0~LCD_VD15,  程序如下,   请教高手,这是什么问题?

    Lcd_ClearScr( (0x1f<<11) | (0x00<<5) | (0x00) );

        static void Lcd_ClearScr( U16 c)
{
unsigned int x,y ;        
    for( y = 0 ; y < SCR_YSIZE ; y++ )
    {
    for( x = 0 ; x < SCR_XSIZE ; x++ )
        {
        LCD_BUFFER[y][x] = c ;
        }
    }
}