如果是VGA输出的话, 宏定义 #define SET_WINDOW_AGAIN 1
如果是QVGA输出的话, 宏定义 #define SET_WINDOW_AGAIN 2
//QVGA调用函数 OV7670_Window_Set(184,10,320,240);
//VGA调用函数 OV7670_Window_Set(184,10,640,480);
void OV7670_Window_Set(u16 sx,u16 sy,u16 width,u16 height)
{
u16 endx;
u16 endy;
u8 temp;
//SET_WINDOW_AGAIN: VGA是1 QVGA是2
endx=(sx+width*SET_WINDOW_AGAIN)%784; // sx:HSTART endx:HSTOP
endy=sy+height*SET_WINDOW_AGAIN; // sy:VSTRT endy:VSTOP
//设置HREF
OV_ReadReg(0X32,&temp); //读取Href之前的值
temp&=0XC0;
temp|=((endx&0X07)<<3)|(sx&0X07);
OV_WriteReg(0X32,temp);
OV_WriteReg(0X17,(sx&0x7f8)>>3); //设置Href的start高8位
OV_WriteReg(0X18,(endx&0x7f8)>>3); //设置Href的end的高8位
//设置VREF
OV_ReadReg(0X03,&temp); //读取Vref之前的值
temp&=0XF0;
temp|=((endy&0X03)<<2)|(sy&0X03);
OV_WriteReg(0X03,temp); //设置Vref的start和end的最低2位
OV_WriteReg(0X19,(sy&0x3fc)>>2); //设置Vref的start高8位
OV_WriteReg(0X1A,(endy&0x3fc)>>2); //设置Vref的end的高8位
} |