野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 856|回复: 2

新手求解,LCD读像素经转换后全表示黑色,十分感谢

[复制链接]
回帖奖励 10 火花 回复本帖可获得 1 火花奖励! 每人限 2 次(中奖概率 90%)
发表于 2024-4-10 21:35:03 | 显示全部楼层 |阅读模式

static uint16_t ILI9806G_Read_PixelData ( void )       
{       
        uint16_t usR=0, usG=0, usB=0 ;

       
        ILI9806G_Write_Cmd ( 0x2E );   /* 读数据 */
       
        usR = ILI9806G_Read_Data ();         /*FIRST READ OUT DUMMY DATA*/
       
        usR = ILI9806G_Read_Data ();          /*READ OUT RED DATA  */
        usB = ILI9806G_Read_Data ();          /*READ OUT BLUE DATA*/
        usG = ILI9806G_Read_Data ();          /*READ OUT GREEN DATA*/       
       
  return ( ( ( usR >> 11 ) << 11 ) | ( ( usG >> 10 ) << 5 ) | ( usB >> 11 ) );
       
}


uint16_t ILI9806G_GetPointPixel ( uint16_t usX, uint16_t usY )
{
        uint16_t usPixelData;

       
        ILI9806G_SetCursor ( usX, usY );
       
        usPixelData = ILI9806G_Read_PixelData ();
       
        return usPixelData;
       
}

static void ReadColor(unsigned int x,unsigned int y,COLOR_RGB *Rgb)
        {
                unsigned short C16;

                //读某点颜色,返回的就是16位颜色数据
                C16 = ILI9806G_GetPointPixel(x,y);     

                //将16位RGB转换为24位存储
                Rgb->red   =         (unsigned char)((C16&0xf800)>>8);
                Rgb->green =         (unsigned char)((C16&0x07e0)>>3);
                Rgb->blue  =   (unsigned char)((C16&0x001f)<<3);
        }







储存的24位RGB值

储存的24位RGB值
回复

使用道具 举报

 楼主| 发表于 2024-4-10 21:37:00 | 显示全部楼层
是在读取摄像头传到LCD上的数据,本来应该是红色
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-11 10:00:31 | 显示全部楼层
问题的原因好像是摄像头采集到的像素数据不准确(OV2640),RGB数据会跳动变化,即使把阈值条件放宽也一般。
请问一下大家有类似的情况吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 12:00 , Processed in 0.118122 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表