初级会员

- 积分
- 58
- 金钱
- 58
- 注册时间
- 2015-1-26
- 在线时间
- 6 小时
|
2金钱
OV7670程序中写入LCD_GRAM中的color值,想对其进行拆分,拆分为RGB三色值,然后转换为灰度,为什么做出来这几个值波动特别大,特别不稳定?求助,下面是我拆分的代码:
void camera_refresh(void)
{
u32 j;
u16 color,red,green,blue,grey;
if(ov_sta)//óDÖ¡ÖD¶Ï¸üD£¿
{
LCD_Scan_Dir(U2D_L2R); //′óéÏμ½ÏÂ,′ó×óμ½óò
if(lcddev.id==0X1963)LCD_Set_Window((lcddev.width-240)/2,(lcddev.height-320)/2,240,320);//½«ÏÔê¾ÇøóòéèÖÃμ½ÆáÄ»ÖDÑë
else if(lcddev.id==0X5510||lcddev.id==0X5310)LCD_Set_Window((lcddev.width-320)/2,(lcddev.height-240)/2,320,240);//½«ÏÔê¾ÇøóòéèÖÃμ½ÆáÄ»ÖDÑë
LCD_WriteRAM_Prepare(); //¿aê¼D′èëGRAM
OV7670_RRST=0; //¿a꼸′λ¶áÖ¸Õë
OV7670_RCK_L;
OV7670_RCK_H;
OV7670_RCK_L;
OV7670_RRST=1; //¸′λ¶áÖ¸Õë½áêø
OV7670_RCK_H;
for(j=0;j<76800;j++)
{
OV7670_RCK_L;
color=GPIOC->IDR&0XFF; //¶áêy¾Y
OV7670_RCK_H;
color<<=8;
OV7670_RCK_L;
color|=GPIOC->IDR&0XFF; //¶áêy¾Y
OV7670_RCK_H;
LCD->LCD_RAM=color;
red=color&0xF800;
red=red>>8;
green=color&0x07E0;
green=green>>3;
blue=color&0x001F;
blue=blue<<3;
grey=(red*38+green*75+blue*15)>>7;
}
|
|