⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sensor_mega_ov9650.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 3 页
字号:
***************************************************************************/
int OV9650_Set_QVGA(void)
{
    return OV9650_Write( (UINT8 *)ChangeQVGAData, sizeof(ChangeQVGAData) );
}

/**************************************************************************
* 函数描述:  设置sensor 的特效
* 入口参数:  无
* 出口参数:  无
* 返回值:   是否正确
***************************************************************************/
int OV9650_Set_Effect(INT8U nEffect)
{
    UINT8	sensorData[3][2];

    switch (nEffect)
    {
        case SENSOR_EF_NORMAL://EFFECT_NORMAL:
            sensorData[0][0]=0x3a;
            sensorData[0][1]=0x0c;
            sensorData[1][0]=0x67;
            sensorData[1][1]=0x80;
            sensorData[2][0]=0x68;
            sensorData[2][1]=0x80;
            break;
        case SENSOR_EF_GRAY:	//Black/white
            sensorData[0][0]=0x3a;
            sensorData[0][1]=0x1c;
            sensorData[1][0]=0x67;
            sensorData[1][1]=0x80;
            sensorData[2][0]=0x68;
            sensorData[2][1]=0x80;
            break;
        case SENSOR_EF_COOL:	//Bulish
            sensorData[0][0]=0x3a;
            sensorData[0][1]=0x1c;
            sensorData[1][0]=0x67;
            sensorData[1][1]=0xc0;
            sensorData[2][0]=0x68;
            sensorData[2][1]=0x80;
            break;
        case SENSOR_EF_ANTIQUE: //Antique
            sensorData[0][0]=0x3a;
            sensorData[0][1]=0x1c;
            sensorData[1][0]=0x67;
            sensorData[1][1]=0x40;
            sensorData[2][0]=0x68;
            sensorData[2][1]=0xb0;
            break;
        case SENSOR_EF_SEPHIA:	//sepia
            sensorData[0][0]=0x3a;
            sensorData[0][1]=0x1c;
            sensorData[1][0]=0x67;
            sensorData[1][1]=0x40;
            sensorData[2][0]=0x68;
            sensorData[2][1]=0xa0;
            break;
        case SENSOR_EF_NEGATION:	//Negative
            sensorData[0][0]=0x3a;
            sensorData[0][1]=0x2c;
            sensorData[1][0]=0x67;
            sensorData[1][1]=0x80;
            sensorData[2][0]=0x68;
            sensorData[2][1]=0x80;
            break;
            //	<-Ef		Mode->
            /*
            case SENSOR_EF_FOG: //Greenish
            	sensorData[0][0]=0x3a;
            	sensorData[0][1]=0x1c;
            	sensorData[1][0]=0x67;
            	sensorData[1][1]=0x40;
            	sensorData[2][0]=0x68;
            	sensorData[2][1]=0x40;
            	break;
            */
        case SENSOR_EF_WARM:	//Reddish
            sensorData[0][0]=0x3a;
            sensorData[0][1]=0x1c;
            sensorData[1][0]=0x67;
            sensorData[1][1]=0x80;
            sensorData[2][0]=0x68;
            sensorData[2][1]=0xc0;
            break;
            /*
            case 8: //Black/White Negative
            	sensorData[0][0]=0x3a;
            	sensorData[0][1]=0x3c;
            	sensorData[1][0]=0x67;
            	sensorData[1][1]=0x80;
            	sensorData[2][0]=0x68;
            	sensorData[2][1]=0x80;
            	break;
            */
        default:
            return 1;
    }

    return OV9650_Write( (UINT8 *)sensorData, sizeof(sensorData) );
}

/**************************************************************************
* 函数描述:  设置sensor 的亮度
* 入口参数:  nLevel 亮度级别 ( 0 ~ 5 )
* 出口参数:  无
* 返回值:   是否正确
***************************************************************************/
int OV9650_Set_Brightness(INT8U nLevel)
{
    UINT8 nRegCount = 0;
    UINT8* pArrayData = NULL;

    switch (nLevel)
    {
        case 0:
            pArrayData = &Brightness0[0][0];
            nRegCount = sizeof(Brightness0);
            break;

        case 1:
            pArrayData = &Brightness1[0][0];
            nRegCount = sizeof(Brightness1);
            break;

        case 2: //default
            pArrayData = &Brightness2[0][0];
            nRegCount = sizeof(Brightness2);
            break;

        case 3:
            pArrayData = &Brightness3[0][0];
            nRegCount = sizeof(Brightness3);
            break;

        case 4:
            pArrayData = &Brightness4[0][0];
            nRegCount = sizeof(Brightness4);
            break;

        case 5:
            pArrayData = &Brightness5[0][0];
            nRegCount = sizeof(Brightness5);
            break;

        default:
            return 1;
    }

    return OV9650_Write( pArrayData, nRegCount );
}

/**************************************************************************
* 函数描述:  设置sensor 的饱和度
* 入口参数:  nLevel 饱和度级别 ( 0 ~ 5 )
* 出口参数:  无
* 返回值:	是否正确
***************************************************************************/
int OV9650_Set_Saturation(INT8U nLevel)
{
    UINT8* pArrayData = NULL;
    UINT8 nRegCount = 0;

    switch (nLevel)
    {
        case 0:
            pArrayData = &Saturation0[0][0];
            nRegCount = sizeof(Saturation0);
            break;
        case 1:
            pArrayData = &Saturation1[0][0];
            nRegCount = sizeof(Saturation1);
            break;
        case 2:
            pArrayData = &Saturation2[0][0];
            nRegCount = sizeof(Saturation2);
            break;
        case 3:
            pArrayData = &Saturation3[0][0];
            nRegCount = sizeof(Saturation3);
            break;
        case 4:
            pArrayData = &Saturation4[0][0];
            nRegCount = sizeof(Saturation4);
            break;
        case 5:
            pArrayData = &Saturation5[0][0];
            nRegCount = sizeof(Saturation5);
            break;
        default:
            return	1;
    }

    return OV9650_Write( pArrayData, nRegCount );
}

/**************************************************************************
* 函数描述:  设置sensor 的对比度
* 入口参数:  nLevel 对比度级别 ( 0 ~ 6 )
* 出口参数:  无
* 返回值:	是否正确
***************************************************************************/
int OV9650_Set_Contrast(INT8U nLevel)
{
    UINT8* pArrayData = NULL;
    UINT8  nRegCount = 0;

    switch (nLevel)
    {
        case 0:
            pArrayData = &Contrast0[0][0];
            nRegCount = sizeof(Contrast0);
            break;
        case 1:
            pArrayData = &Contrast1[0][0];
            nRegCount = sizeof(Contrast1);
            break;
        case 2:
            pArrayData = &Contrast2[0][0];
            nRegCount = sizeof(Contrast2);
            break;
        case 3:
            pArrayData = &Contrast3[0][0];
            nRegCount = sizeof(Contrast3);
            break;
        case 4:
            pArrayData = &Contrast4[0][0];
            nRegCount = sizeof(Contrast4);
            break;
        case 5:
            pArrayData = &Contrast5[0][0];
            nRegCount = sizeof(Contrast5);
            break;
        case 6:
            pArrayData = &Contrast6[0][0];
            nRegCount = sizeof(Contrast6);
            break;

        default:
            return 1;
    }

    return OV9650_Write( pArrayData, nRegCount );
}


int OV9650_Set_VgaZoom(INT8U nLevel)
{
    UINT8* pArrayData = NULL;
    UINT8  nRegCount = 0;

    switch (nLevel)
    {
        case 0:
            pArrayData = &ZoomVgaLevel1[0][0];
            nRegCount = sizeof(ZoomVgaLevel1);
            break;
        case 1:
            pArrayData = &ZoomVgaLevel2[0][0];
            nRegCount = sizeof(ZoomVgaLevel2);
            break;
        case 2:
            pArrayData = &ZoomVgaLevel3[0][0];
            nRegCount = sizeof(ZoomVgaLevel3);
            break;
        case 3:
            pArrayData = &ZoomVgaLevel4[0][0];
            nRegCount = sizeof(ZoomVgaLevel4);
            break;
        default:
            return 1;
    }

    return OV9650_Write( pArrayData, nRegCount );
}

int OV9650_SetZoom( INT8U level )
{
    int ret;

    switch (level)
    {
        case 0:
            return OV9650_Set_QVGA( );
        case 1:
        case 2:
            ret = OV9650_Set_VGA( );
            if ( !ret )
                ret = OV9650_Set_VgaZoom(level-1);
            return ret;
        default:
            return 1;
    }
}
/**************************************************************************
* 函数描述:  设置sensor 的旋转模式
* 入口参数:  nRotation 见 ImgRotationType
* 出口参数:  无
* 返回值:	是否正确
***************************************************************************/
int OV9650_SetRot( INT8U rotate )
{
    UINT8 SensorData[2][2];
    UINT8 nRegCount = 1;

    switch (rotate)
    {
        case RT_NORMAL:
            SensorData[0][0]=0x1e;
            SensorData[0][1]=0x04;
            break;

        case RT_180:
            SensorData[0][0]=0x1e;
            SensorData[0][1]=0x34;
            break;

        case RT_HFLIP:
            SensorData[0][0]=0x1e;
            SensorData[0][1]=0x24;
            break;

        case RT_VFLIP:
            SensorData[0][0]=0x1e;
            SensorData[0][1]=0x14;
            break;

        case RT_90:
        case RT_270:
            return 0;
        default:
            return 1;
    }

    return OV9650_Write( (UINT8 *)SensorData, nRegCount );
}


/**************************************************************************
* 函数描述:  set frame rate for different resolution when encode MPEG4
* 入口参数:  nRate : frame rate
* 出口参数:  无
* 返回值:	是否正确
***************************************************************************/
int OV9650_SetRate(INT8U nRate)
{
    /*
    switch(nRate)
    	{
    	case 0://MPEG_RATE_CIF:
    	case 1://MPEG_RATE_QVGA:// about 12.5fps
    		mv3I2CWrite(0xff, 0xb0);
    		mv3I2CWrite(0xf8, 0x01);
    		mv3I2CWrite(0x2a, 0x00);
    		mv3I2CWrite(0x2b, 0x70);
    		mv3I2CWrite(0x2d ,0x50);
    		mv3I2CWrite(0x2e ,0x00);
    		break;
    	case 2://MPEG_RATE_QCIF:

    	case 3://MPEG_RATE_LCDSIZE:

    	case 4://MPEG_RATE_SubQCIF:// about 15.0fps
    		mv3I2CWrite(0xff, 0xb0);
    		mv3I2CWrite(0xf8, 0x01);
    		mv3I2CWrite(0x2a, 0x00);
    		mv3I2CWrite(0x2b, 0x08);
    		mv3I2CWrite(0x2d ,0x08);
    		mv3I2CWrite(0x2e ,0x00);
    	break;
    	default:
    		return FALSE;
    	}
    */
    return 0;
}

/**************************************************************************
* 函数描述:  设置sensor 的锐度
* 入口参数:  nLevel : 锐度参数
* 出口参数:  无
* 返回值:	是否正确
***************************************************************************/
int OV9650_SetSharpness(INT8U nLevel)
{
    return 0;
}

/**************************************************************************
* 函数描述:  设置sensor 的白平衡模式
* 入口参数:  mode : sensor 的白平衡模式参数
* 出口参数:  无
* 返回值:	是否正确
***************************************************************************/
int OV9650_SetWhiteBlanceMode(INT8U mode)
{
    return 0;
}

/**************************************************************************
* 函数描述:  设置sensor 的风景模式
* 入口参数:  mode : sensor 的风景模式参数
* 出口参数:  无
* 返回值:	是否正确
***************************************************************************/
int OV9650_SetSceneryMode(INT8U mode)
{
    return 1;
}

/**************************************************************************
* 函数描述:  设置sensor 的曝光补偿
* 入口参数:  value :sensor 的曝光补偿参数
* 出口参数:  无
* 返回值:	是否正确
***************************************************************************/
int OV9650_SetrExposureCompensate(INT8U value)
{
    return 1;
}

/**************************************************************************
* 函数描述:  设置sensor 的拍照模式
* 入口参数:
* 出口参数:  无
* 返回值:	是否正确
***************************************************************************/
int OV9650_Set_Capture(INT8U level)
{
#if 0
    switch (level)
    {
        case 0:
            return OV9650_Set_QVGA( );
        case 1:
            return OV9650_Set_VGA( );
        case 2:
            return OV9650_Set_Mega( );
        default:
            return 1;
    }
#endif
    return 0;
}

/**************************************************************************
* 函数描述:  设置sensor 的拍照模式
* 入口参数:
* 出口参数:  无
* 返回值:	是否正确
***************************************************************************/
int OV9650_Set_Preveiw(void)
{
    return OV9650_Set_QVGA( );
}

/**************************************************************************
* 函数描述:  注册sensor,模块初始化调用,添加的每个sensor必须要这个接口
* 入口参数:  无
* 出口参数:  sif:获得的sensor功能接口
* 返回值:	无
***************************************************************************/
void SensorGetDriver(SENSOR_INTERFACE * sif )
{
    sif->Sensor_Init = OV9650_Init;
    sif->Sensor_CheckId = OV9650_CheckID;
    sif->Sensor_Set_SXGA = OV9650_Set_Mega;
    sif->Sensor_Set_VGA = OV9650_Set_VGA;
    sif->Sensor_Set_CIF = OV9650_Set_CIF;
    sif->Sensor_Set_QVGA = OV9650_Set_QVGA;
    sif->Sensor_Set_Effect = OV9650_Set_Effect;
    sif->Sensor_Set_Brightness = OV9650_Set_Brightness;
    sif->Sensor_Set_Saturation = OV9650_Set_Saturation;
    sif->Sensor_Set_Contrast = OV9650_Set_Contrast;
    sif->Sensor_Set_Rot = OV9650_SetRot;
    sif->Sensor_Set_Rate = OV9650_SetRate;
    sif->Sensor_Set_Sharpness = OV9650_SetSharpness;
    sif->Sensor_Set_WhiteBlanceMode = OV9650_SetWhiteBlanceMode;
    sif->Sensor_Set_SceneryMode = OV9650_SetSceneryMode;
    sif->Sensor_Set_Zoom = OV9650_SetZoom;
    sif->Sensor_Set_ExposureCompensate = OV9650_SetrExposureCompensate;
    sif->Sensor_Set_Preview = OV9650_Set_Preveiw;
    sif->Sensor_Set_Capture = OV9650_Set_Capture;
    sif->Sensor_Reset = OV9650_Reset;
    sif->Sensor_PowerOn = OV9650_PowerOn;
    sif->Sensor_PowerDown = OV9650_PowerDown;
}

#endif


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -