我用原子的代码跑了一下摄像头的程序,现在可以显示图像了,可是感觉这色彩不太好。想确定一个红色彩点。总是过滤不出来。给点意见啊!
代码
void camera_refresh(void)
{
u32 j;
u16 color;
u8 r;
u8 g;
u8 b;
if(ov_sta==2)
{
LCD_Scan_Dir(U2D_L2R); //从上到下,从左到右
LCD_SetCursor(0x00,0x0000); //设置光标位置
LCD_WriteRAM_Prepare(); //开始写入GRAM
OV7670_RRST=0; //开始复位读指针
OV7670_RCK=0;
OV7670_RCK=1;
OV7670_RCK=0;
OV7670_RRST=1; //复位读指针结束
OV7670_RCK=1;
for(j=0;j<76800;j++)
{
OV7670_RCK=0;
color=GPIOC->IDR&0XFF; //读数据
OV7670_RCK=1;
color<<=8;
OV7670_RCK=0;
color|=GPIOC->IDR&0XFF; //读数据
OV7670_RCK=1;
r=color&0xf800>>11; //提取出RGB
g=color&0x07e0>>5;
b=color&0x001f>>0;
if(r<30 && g<60 && b<30) //过滤出白光,不是白光的变黑色
color=0x0000;
if(r>20 && g<5 && b<5) //过滤红光
color=0xf800;
LCD->LCD_RAM=color;
}
EXTI->  R=1<<8; //清除LINE8上的中断标志位
ov_sta=0; //开始下一次采集
ov_frame++;
LCD_Scan_Dir(DFT_SCAN_DIR); //恢复默认扫描方向
}
}只改了图像更新的函数 |