/**
  *****************************************************************************
  * 						OV5640ʼ
  *****************************************************************************
  *
  * @File   : OV5640.c
  * @By     : Sun
  * @Version: V1.2
  * @Date   : 2021 / 11 / 04
  * @Shop	: https://xiaomeige.taobao.com/
  *
  *****************************************************************************
**/

#include "Camera.h"

XIicPs SCCB;//SCCB豸

uint8_t OV5640_Check = 0,OV2640_Check = 0,NO_Camera = 0;

void Camera_check()
{
	uint16_t ID = 0;

	ID  = SCCB_Read(0x300b);       //0x40
	ID |= SCCB_Read(0x300a) << 8;  //0x56
	if(ID == OV5640_ID)  //ȡȷIDOV5640
		OV5640_Check = 1;
	else {
		OV5640_Check = 0;

		SCCB_Write_REG8(0xff,0x01);//ѡDSP Address
//		SCCB_Write_REG8(0x12,0x80);
		usleep(50000);
		//OV2640ͷID
		ID=SCCB_Read_REG8(0x1c);	//ȡID ߰λ
		ID<<=8;
		ID|=SCCB_Read_REG8(0x1d);	//ȡID Ͱλ

		if(ID == OV2640_ID)  //ȡȷIDOV2640
			OV2640_Check = 1;
		else
		{
			OV2640_Check = 0;
			NO_Camera = 1;
		}
	}
}

void Camera_Init()
{
    if(OV5640_Check)  //ȡȷIDOV5640
    {
		//ȶԼĴλʹĴָʼֵ
		//ĴλҪʱ1msĴ
		SCCB_Write(0x3008,0x82); //Bit[7]:λ Bit[6]:Դ

		//ʱ1ms
		usleep(1000);

		SCCB_Write(0x3103,0x11); // system clock from pad, bit[1]
		SCCB_Write(0x3008,0x82); // software reset, bit[7]
		//delay 5ms
		SCCB_Write(0x3008,0x42); // software power down, bit[6]
		SCCB_Write(0x3103,0x03); // system clock from PLL, bit[1]
		SCCB_Write(0x3017,0xff); // FREX, Vsync, HREF, PCLK, D[9:6] output enable
		SCCB_Write(0x3018,0xff); // D[5:0], GPIO[1:0] output enable
		SCCB_Write(0x3034,0x1a); // MIPI 10-bit
		SCCB_Write(0x3037,0x13); // PLL root divider, bit[4], PLL pre-divider, bit[3:0]
		SCCB_Write(0x3108,0x01); // PCLK root divider, bit[5:4], SCLK2x root divider, bit[3:2]
		SCCB_Write(0x3630,0x36); // SCLK root divider, bit[1:0]
		SCCB_Write(0x3631,0x0e);
		SCCB_Write(0x3632,0xe2);
		SCCB_Write(0x3633,0x12);
		SCCB_Write(0x3621,0xe0);
		SCCB_Write(0x3704,0xa0);
		SCCB_Write(0x3703,0x5a);
		SCCB_Write(0x3715,0x78);
		SCCB_Write(0x3717,0x01);
		SCCB_Write(0x370b,0x60);
		SCCB_Write(0x3705,0x1a);
		SCCB_Write(0x3905,0x02);
		SCCB_Write(0x3906,0x10);
		SCCB_Write(0x3901,0x0a);
		SCCB_Write(0x3731,0x12);
		SCCB_Write(0x3600,0x08); // VCM control
		SCCB_Write(0x3601,0x33); // VCM control
		SCCB_Write(0x302d,0x60); // system control
		SCCB_Write(0x3620,0x52);
		SCCB_Write(0x371b,0x20);
		SCCB_Write(0x471c,0x50);
		SCCB_Write(0x3a13,0x43); // pre-gain = 1.047x
		SCCB_Write(0x3a18,0x00); // gain ceiling
		SCCB_Write(0x3a19,0xf8); // gain ceiling = 15.5x
		SCCB_Write(0x3635,0x13);
		SCCB_Write(0x3636,0x03);
		SCCB_Write(0x3634,0x40);
		SCCB_Write(0x3622,0x01);
		// 50/60Hz detection 50/60Hz ƹƹ
		SCCB_Write(0x3c01,0x34); // Band auto, bit[7]
		SCCB_Write(0x3c04,0x28); // threshold low sum
		SCCB_Write(0x3c05,0x98); // threshold high sum
		SCCB_Write(0x3c06,0x00); // light meter 1 threshold[15:8]
		SCCB_Write(0x3c07,0x08); // light meter 1 threshold[7:0]
		SCCB_Write(0x3c08,0x00); // light meter 2 threshold[15:8]
		SCCB_Write(0x3c09,0x1c); // light meter 2 threshold[7:0]
		SCCB_Write(0x3c0a,0x9c); // sample number[15:8]
		SCCB_Write(0x3c0b,0x40); // sample number[7:0]
		SCCB_Write(0x3810,0x00); // Timing Hoffset[11:8]
		SCCB_Write(0x3811,0xff); // Timing Hoffset[7:0]
		SCCB_Write(0x3812,0x00); // Timing Voffset[10:8]
		SCCB_Write(0x3813,0xfa); // timing V offset
		SCCB_Write(0x3708,0x64);
		SCCB_Write(0x4001,0x02); // BLC start from line 2
		SCCB_Write(0x4005,0x1a); // BLC always update
		SCCB_Write(0x3000,0x00); // enable blocks
		SCCB_Write(0x3004,0xff); // enable clocks
		SCCB_Write(0x300e,0x58); // MIPI power down, DVP enable
		SCCB_Write(0x302e,0x00);
		SCCB_Write(0x4300,0x61); // RGB565   //h4300_6f(ǧģʽ)--------------------------------------------------------
		SCCB_Write(0x501f,0x01); // RGB565
		SCCB_Write(0x440e,0x00);
		SCCB_Write(0x5000,0xa7); // Lenc on, raw gamma on, BPC on, WPC on, CIP on
		// AEC target Զع
		SCCB_Write(0x3a0f,0x30); // stable range in high
		SCCB_Write(0x3a10,0x28); // stable range in low
		SCCB_Write(0x3a1b,0x30); // stable range out high
		SCCB_Write(0x3a1e,0x26); // stable range out low
		SCCB_Write(0x3a11,0x60); // fast zone high
		SCCB_Write(0x3a1f,0x14); // fast zone low
		// Lens correction for ? ͷ
		SCCB_Write(0x5800,0x23);
		SCCB_Write(0x5801,0x14);
		SCCB_Write(0x5802,0x0f);
		SCCB_Write(0x5803,0x0f);
		SCCB_Write(0x5804,0x12);
		SCCB_Write(0x5805,0x26);
		SCCB_Write(0x5806,0x0c);
		SCCB_Write(0x5807,0x08);
		SCCB_Write(0x5808,0x05);
		SCCB_Write(0x5809,0x05);
		SCCB_Write(0x580a,0x08);
		SCCB_Write(0x580b,0x0d);
		SCCB_Write(0x580c,0x08);
		SCCB_Write(0x580d,0x03);
		SCCB_Write(0x580e,0x00);
		SCCB_Write(0x580f,0x00);
		SCCB_Write(0x5810,0x03);
		SCCB_Write(0x5811,0x09);
		SCCB_Write(0x5812,0x07);
		SCCB_Write(0x5813,0x03);
		SCCB_Write(0x5814,0x00);
		SCCB_Write(0x5815,0x01);
		SCCB_Write(0x5816,0x03);
		SCCB_Write(0x5817,0x08);
		SCCB_Write(0x5818,0x0d);
		SCCB_Write(0x5819,0x08);
		SCCB_Write(0x581a,0x05);
		SCCB_Write(0x581b,0x06);
		SCCB_Write(0x581c,0x08);
		SCCB_Write(0x581d,0x0e);
		SCCB_Write(0x581e,0x29);
		SCCB_Write(0x581f,0x17);
		SCCB_Write(0x5820,0x11);
		SCCB_Write(0x5821,0x11);
		SCCB_Write(0x5822,0x15);
		SCCB_Write(0x5823,0x28);
		SCCB_Write(0x5824,0x46);
		SCCB_Write(0x5825,0x26);
		SCCB_Write(0x5826,0x08);
		SCCB_Write(0x5827,0x26);
		SCCB_Write(0x5828,0x64);
		SCCB_Write(0x5829,0x26);
		SCCB_Write(0x582a,0x24);
		SCCB_Write(0x582b,0x22);
		SCCB_Write(0x582c,0x24);
		SCCB_Write(0x582d,0x24);
		SCCB_Write(0x582e,0x06);
		SCCB_Write(0x582f,0x22);
		SCCB_Write(0x5830,0x40);
		SCCB_Write(0x5831,0x42);
		SCCB_Write(0x5832,0x24);
		SCCB_Write(0x5833,0x26);
		SCCB_Write(0x5834,0x24);
		SCCB_Write(0x5835,0x22);
		SCCB_Write(0x5836,0x22);
		SCCB_Write(0x5837,0x26);
		SCCB_Write(0x5838,0x44);
		SCCB_Write(0x5839,0x24);
		SCCB_Write(0x583a,0x26);
		SCCB_Write(0x583b,0x28);
		SCCB_Write(0x583c,0x42);
		SCCB_Write(0x583d,0xce); // lenc BR offset
		// AWB Զƽ
		SCCB_Write(0x5180,0xff); // AWB B block
		SCCB_Write(0x5181,0xf2); // AWB control
		SCCB_Write(0x5182,0x00); // [7:4] max local counter, [3:0] max fast counter
		SCCB_Write(0x5183,0x14); // AWB advanced
		SCCB_Write(0x5184,0x25);
		SCCB_Write(0x5185,0x24);
		SCCB_Write(0x5186,0x09);
		SCCB_Write(0x5187,0x09);
		SCCB_Write(0x5188,0x09);
		SCCB_Write(0x5189,0x75);
		SCCB_Write(0x518a,0x54);
		SCCB_Write(0x518b,0xe0);
		SCCB_Write(0x518c,0xb2);
		SCCB_Write(0x518d,0x42);
		SCCB_Write(0x518e,0x3d);
		SCCB_Write(0x518f,0x56);
		SCCB_Write(0x5190,0x46);
		SCCB_Write(0x5191,0xf8); // AWB top limit
		SCCB_Write(0x5192,0x04); // AWB bottom limit
		SCCB_Write(0x5193,0x70); // red limit
		SCCB_Write(0x5194,0xf0); // green limit
		SCCB_Write(0x5195,0xf0); // blue limit
		SCCB_Write(0x5196,0x03); // AWB control
		SCCB_Write(0x5197,0x01); // local limit
		SCCB_Write(0x5198,0x04);
		SCCB_Write(0x5199,0x12);
		SCCB_Write(0x519a,0x04);
		SCCB_Write(0x519b,0x00);
		SCCB_Write(0x519c,0x06);
		SCCB_Write(0x519d,0x82);
		SCCB_Write(0x519e,0x38); // AWB control
		// Gamma ٤
		SCCB_Write(0x5480,0x01); // Gamma bias plus on, bit[0]
		SCCB_Write(0x5481,0x08);
		SCCB_Write(0x5482,0x14);
		SCCB_Write(0x5483,0x28);
		SCCB_Write(0x5484,0x51);
		SCCB_Write(0x5485,0x65);
		SCCB_Write(0x5486,0x71);
		SCCB_Write(0x5487,0x7d);
		SCCB_Write(0x5488,0x87);
		SCCB_Write(0x5489,0x91);
		SCCB_Write(0x548a,0x9a);
		SCCB_Write(0x548b,0xaa);
		SCCB_Write(0x548c,0xb8);
		SCCB_Write(0x548d,0xcd);
		SCCB_Write(0x548e,0xdd);
		SCCB_Write(0x548f,0xea);
		SCCB_Write(0x5490,0x1d);
		// color matrix ɫʾ
		SCCB_Write(0x5381,0x1e); // CMX1 for Y
		SCCB_Write(0x5382,0x5b); // CMX2 for Y
		SCCB_Write(0x5383,0x08); // CMX3 for Y
		SCCB_Write(0x5384,0x0a); // CMX4 for U
		SCCB_Write(0x5385,0x7e); // CMX5 for U
		SCCB_Write(0x5386,0x88); // CMX6 for U
		SCCB_Write(0x5387,0x7c); // CMX7 for V
		SCCB_Write(0x5388,0x6c); // CMX8 for V
		SCCB_Write(0x5389,0x10); // CMX9 for V
		SCCB_Write(0x538a,0x01); // sign[9]
		SCCB_Write(0x538b,0x98); // sign[8:1]
		// UV adjust UV ɫʱͶȵ
		SCCB_Write(0x5580,0x06); // saturation on, bit[1]
		SCCB_Write(0x5583,0x40);
		SCCB_Write(0x5584,0x10);
		SCCB_Write(0x5589,0x10);
		SCCB_Write(0x558a,0x00);
		SCCB_Write(0x558b,0xf8);
		SCCB_Write(0x501d,0x40); // enable manual offset of contrast
		// CIP 񻯺ͽ
		SCCB_Write(0x5300,0x08); // CIP sharpen MT threshold 1
		SCCB_Write(0x5301,0x30); // CIP sharpen MT threshold 2
		SCCB_Write(0x5302,0x10); // CIP sharpen MT offset 1
		SCCB_Write(0x5303,0x00); // CIP sharpen MT offset 2
		SCCB_Write(0x5304,0x08); // CIP DNS threshold 1
		SCCB_Write(0x5305,0x30); // CIP DNS threshold 2
		SCCB_Write(0x5306,0x08); // CIP DNS offset 1
		SCCB_Write(0x5307,0x16); // CIP DNS offset 2
		SCCB_Write(0x5309,0x08); // CIP sharpen TH threshold 1
		SCCB_Write(0x530a,0x30); // CIP sharpen TH threshold 2
		SCCB_Write(0x530b,0x04); // CIP sharpen TH offset 1
		SCCB_Write(0x530c,0x06); // CIP sharpen TH offset 2
		SCCB_Write(0x5025,0x00);
		SCCB_Write(0x3008,0x02); // wake up from standby, bit[6]

		// 12824'h720, 30fps
		// input clock 24Mhz, PCLK 42Mhz
		SCCB_Write(0x3035,0x21); // PLL  21:30fps  41:15fps  81:7.5fps
		SCCB_Write(0x3036,0x69); // PLL
		SCCB_Write(0x3c07,0x07); // lightmeter 1 threshold[7:0]
		SCCB_Write(0x3820,0x46); // flip
		SCCB_Write(0x3821,0x01); // no mirror
		SCCB_Write(0x3814,0x31); // timing X inc
		SCCB_Write(0x3815,0x31); // timing Y inc
		SCCB_Write(0x3800,0x00); // HS
		SCCB_Write(0x3801,0x00); // HS
		SCCB_Write(0x3802,0x00); // VS
		SCCB_Write(0x3803,0x00); // VS
		SCCB_Write(0x3804,0x0a); // HW SET_OV5640 +  HE}
		SCCB_Write(0x3805,0x3f); // HW SET_OV5640 +  HE}
		SCCB_Write(0x3806,0x07); // VH SET_OV5640 +  VE}
		SCCB_Write(0x3807,0x9f); // VH SET_OV5640 +  VE}
		SCCB_Write(0x3808,0x03); // DVPHO
		SCCB_Write(0x3809,0x20); // DVPHO
		SCCB_Write(0x380a,0x01); // DVPVO
		SCCB_Write(0x380b,0xe0); // DVPHO
		SCCB_Write(0x380c,0x07); // HTS
		SCCB_Write(0x380d,0x08); // HTS
		SCCB_Write(0x380e,0x03); // VTS
		SCCB_Write(0x380f,0xe8); // VTS

		SCCB_Write(0x3618,0x00);
		SCCB_Write(0x3612,0x29);
		SCCB_Write(0x3709,0x52);
		SCCB_Write(0x370c,0x03);
		SCCB_Write(0x3a02,0x02); // 60Hz max exposure
		SCCB_Write(0x3a03,0xe0); // 60Hz max exposure
		SCCB_Write(0x3a14,0x02); // 50Hz max exposure
		SCCB_Write(0x3a15,0xe0); // 50Hz max exposure
		SCCB_Write(0x4004,0x02); // BLC line number
		SCCB_Write(0x3002,0x1c); // reset JFIFO, SFIFO, JPG
		SCCB_Write(0x3006,0xc3); // disable clock of JPEG2x, JPEG
		SCCB_Write(0x4713,0x03); // JPEG mode 3
		SCCB_Write(0x4407,0x04); // Quantization scale
		SCCB_Write(0x460b,0x37);
		SCCB_Write(0x460c,0x20);
		SCCB_Write(0x4837,0x16); // MIPI global timing
		SCCB_Write(0x3824,0x04); // PCLK manual divider
		SCCB_Write(0x5001,0x83); // SDE on, CMX on, AWB on
		SCCB_Write(0x3503,0x00); // AEC/AGC on
		SCCB_Write(0x4740,0x20); // VS 1
	}

    else
    {
//    	SCCB_Write_REG8(0xff,0x01);//ѡDSP Address
//    	SCCB_Write_REG8(0x12,0x80);
//		usleep(50000);
//    	//OV2640ͷID
//		ID=SCCB_Read_REG8(0x1c);	//ȡID ߰λ
//		ID<<=8;
//		ID|=SCCB_Read_REG8(0x1d);	//ȡID Ͱλ
//
//		xil_printf("Camera ID = %x\r\n",ID);//ӡID
		if(OV2640_Check)  //ȡȷIDOV2640
    	   {
			SCCB_Write_REG8(0xff,0x01);
			SCCB_Write_REG8(0x12,0x80);
			usleep(50000);

			SCCB_Write_REG8(0xff,0x00);//ѡDSP Address
			SCCB_Write_REG8(0x2c,0xff);
			SCCB_Write_REG8(0x2e,0xdf);
			SCCB_Write_REG8(0xff,0x01);
			SCCB_Write_REG8(0x3c,0x32);
			//
			SCCB_Write_REG8(0x11,0x00);
			SCCB_Write_REG8(0x09,0x02);
			SCCB_Write_REG8(0x04,0xD8);//ˮƽ,ֱת
			SCCB_Write_REG8(0x13,0xe5);
			SCCB_Write_REG8(0x14,0x48);
			SCCB_Write_REG8(0x2c,0x0c);
			SCCB_Write_REG8(0x33,0x78);
			SCCB_Write_REG8(0x3a,0x33);
			SCCB_Write_REG8(0x3b,0xfB);
			//
			SCCB_Write_REG8(0x3e,0x00);
			SCCB_Write_REG8(0x43,0x11);
			SCCB_Write_REG8(0x16,0x10);
			//
			SCCB_Write_REG8(0x39,0x92);
			//
			SCCB_Write_REG8(0x35,0xda);
			SCCB_Write_REG8(0x22,0x1a);
			SCCB_Write_REG8(0x37,0xc3);
			SCCB_Write_REG8(0x23,0x00);
			SCCB_Write_REG8(0x34,0xc0);
			SCCB_Write_REG8(0x36,0x1a);
			SCCB_Write_REG8(0x06,0x88);
			SCCB_Write_REG8(0x07,0xc0);
			SCCB_Write_REG8(0x0d,0x87);
			SCCB_Write_REG8(0x0e,0x41);
			SCCB_Write_REG8(0x4c,0x00);
			SCCB_Write_REG8(0x48,0x00);
			SCCB_Write_REG8(0x5B,0x00);
			SCCB_Write_REG8(0x42,0x03);
			//
			SCCB_Write_REG8(0x4a,0x81);
			SCCB_Write_REG8(0x21,0x99);
			//
			SCCB_Write_REG8(0x24,0x40);
			SCCB_Write_REG8(0x25,0x38);
			SCCB_Write_REG8(0x26,0x82);
			SCCB_Write_REG8(0x5c,0x00);
			SCCB_Write_REG8(0x63,0x00);
			SCCB_Write_REG8(0x46,0x22);
			SCCB_Write_REG8(0x0c,0x3c);
			//
			SCCB_Write_REG8(0x61,0x70);
			SCCB_Write_REG8(0x62,0x80);
			SCCB_Write_REG8(0x7c,0x05);
			//
			SCCB_Write_REG8(0x20,0x80);
			SCCB_Write_REG8(0x28,0x30);
			SCCB_Write_REG8(0x6c,0x00);
			SCCB_Write_REG8(0x6d,0x80);
			SCCB_Write_REG8(0x6e,0x00);
			SCCB_Write_REG8(0x70,0x02);
			SCCB_Write_REG8(0x71,0x94);
			SCCB_Write_REG8(0x73,0xc1);
			SCCB_Write_REG8(0x3d,0x34);
			SCCB_Write_REG8(0x5a,0x57);
			//ݷֱʲͬ
			SCCB_Write_REG8(0x12,0x40);//SVGA 800*600
			SCCB_Write_REG8(0x17,0x11);//
			SCCB_Write_REG8(0x18,0x43);//
			SCCB_Write_REG8(0x19,0x00);//
			SCCB_Write_REG8(0x1a,0x4b);//
			SCCB_Write_REG8(0x32,0x09);
			SCCB_Write_REG8(0x37,0xc0);
			//
			SCCB_Write_REG8(0x4f,0xca);
			SCCB_Write_REG8(0x50,0xa8);
			SCCB_Write_REG8(0x5a,0x23);
			SCCB_Write_REG8(0x6d,0x00);
			SCCB_Write_REG8(0x3d,0x38);
			//
			SCCB_Write_REG8(0xff,0x00);
			SCCB_Write_REG8(0xe5,0x7f);
			SCCB_Write_REG8(0xf9,0xc0);
			SCCB_Write_REG8(0x41,0x24);
			SCCB_Write_REG8(0xe0,0x14);
			SCCB_Write_REG8(0x76,0xff);
			SCCB_Write_REG8(0x33,0xa0);
			SCCB_Write_REG8(0x42,0x20);
			SCCB_Write_REG8(0x43,0x18);
			SCCB_Write_REG8(0x4c,0x00);
			SCCB_Write_REG8(0x87,0xd5);
			SCCB_Write_REG8(0x88,0x3f);
			SCCB_Write_REG8(0xd7,0x03);
			SCCB_Write_REG8(0xd9,0x10);
			SCCB_Write_REG8(0xd3,0x82);
			//
			SCCB_Write_REG8(0xc8,0x08);
			SCCB_Write_REG8(0xc9,0x80);
			//
			SCCB_Write_REG8(0x7c,0x00);
			SCCB_Write_REG8(0x7d,0x00);
			SCCB_Write_REG8(0x7c,0x03);
			SCCB_Write_REG8(0x7d,0x48);
			SCCB_Write_REG8(0x7d,0x48);
			SCCB_Write_REG8(0x7c,0x08);
			SCCB_Write_REG8(0x7d,0x20);
			SCCB_Write_REG8(0x7d,0x10);
			SCCB_Write_REG8(0x7d,0x0e);
			//
			SCCB_Write_REG8(0x90,0x00);
			SCCB_Write_REG8(0x91,0x0e);
			SCCB_Write_REG8(0x91,0x1a);
			SCCB_Write_REG8(0x91,0x31);
			SCCB_Write_REG8(0x91,0x5a);
			SCCB_Write_REG8(0x91,0x69);
			SCCB_Write_REG8(0x91,0x75);
			SCCB_Write_REG8(0x91,0x7e);
			SCCB_Write_REG8(0x91,0x88);
			SCCB_Write_REG8(0x91,0x8f);
			SCCB_Write_REG8(0x91,0x96);
			SCCB_Write_REG8(0x91,0xa3);
			SCCB_Write_REG8(0x91,0xaf);
			SCCB_Write_REG8(0x91,0xc4);
			SCCB_Write_REG8(0x91,0xd7);
			SCCB_Write_REG8(0x91,0xe8);
			SCCB_Write_REG8(0x91,0x20);
			//
			SCCB_Write_REG8(0x92,0x00);
			SCCB_Write_REG8(0x93,0x06);
			SCCB_Write_REG8(0x93,0xe3);
			SCCB_Write_REG8(0x93,0x05);
			SCCB_Write_REG8(0x93,0x05);
			SCCB_Write_REG8(0x93,0x00);
			SCCB_Write_REG8(0x93,0x04);
			SCCB_Write_REG8(0x93,0x00);
			SCCB_Write_REG8(0x93,0x00);
			SCCB_Write_REG8(0x93,0x00);
			SCCB_Write_REG8(0x93,0x00);
			SCCB_Write_REG8(0x93,0x00);
			SCCB_Write_REG8(0x93,0x00);
			SCCB_Write_REG8(0x93,0x00);
			//
			SCCB_Write_REG8(0x96,0x00);
			SCCB_Write_REG8(0x97,0x08);
			SCCB_Write_REG8(0x97,0x19);
			SCCB_Write_REG8(0x97,0x02);
			SCCB_Write_REG8(0x97,0x0c);
			SCCB_Write_REG8(0x97,0x24);
			SCCB_Write_REG8(0x97,0x30);
			SCCB_Write_REG8(0x97,0x28);
			SCCB_Write_REG8(0x97,0x26);
			SCCB_Write_REG8(0x97,0x02);
			SCCB_Write_REG8(0x97,0x98);
			SCCB_Write_REG8(0x97,0x80);
			SCCB_Write_REG8(0x97,0x00);
			SCCB_Write_REG8(0x97,0x00);
			//
			SCCB_Write_REG8(0xc3,0xed);
			SCCB_Write_REG8(0xa4,0x00);
			SCCB_Write_REG8(0xa8,0x00);
			SCCB_Write_REG8(0xc5,0x11);
			SCCB_Write_REG8(0xc6,0x51);
			SCCB_Write_REG8(0xbf,0x80);
			SCCB_Write_REG8(0xc7,0x10);
			SCCB_Write_REG8(0xb6,0x66);
			SCCB_Write_REG8(0xb8,0xA5);
			SCCB_Write_REG8(0xb7,0x64);
			SCCB_Write_REG8(0xb9,0x7C);
			SCCB_Write_REG8(0xb3,0xaf);
			SCCB_Write_REG8(0xb4,0x97);
			SCCB_Write_REG8(0xb5,0xFF);
			SCCB_Write_REG8(0xb0,0xC5);
			SCCB_Write_REG8(0xb1,0x94);
			SCCB_Write_REG8(0xb2,0x0f);
			SCCB_Write_REG8(0xc4,0x5c);
			//ݷֱʲͬ
			SCCB_Write_REG8(0xc0,0x64);//ͼߴ //800 = 100(0x64) * 8
			//SCCB_Write_REG8(= 0x,0x1_4B);//ͼߴ //600 = 75(0x4B) * 8 //3C
			SCCB_Write_REG8(0xc1,0x4B);//ͼߴ //600 = 75(0x4B) * 8 //3C
			SCCB_Write_REG8(0x8c,0x00);//ͼߴ
			SCCB_Write_REG8(0x86,0x3D);
			SCCB_Write_REG8(0x50,0x00);
			SCCB_Write_REG8(0x51,0xC8);//ͼ񴰿
			SCCB_Write_REG8(0x52,0x96);//ͼ񴰿
			SCCB_Write_REG8(0x53,0x00);//ͼ񴰿
			SCCB_Write_REG8(0x54,0x00);//ͼ񴰿
			SCCB_Write_REG8(0x55,0x00);//ͼ񴰿
			SCCB_Write_REG8(0x5a,0xC8);
			SCCB_Write_REG8(0x5b,0x96);
			SCCB_Write_REG8(0x5c,0x00);
		   //
			SCCB_Write_REG8(0xd3,0x82);//autoҪС   82
			//
			SCCB_Write_REG8(0xc3,0xed);
			SCCB_Write_REG8(0x7f,0x00);
//    		SCCB_Write_REG8(0xda,0x09);//08
			SCCB_Write_REG8(0xda,0x08);//08

			SCCB_Write_REG8(0xc2,0x0e);
			SCCB_Write_REG8(0xe5,0x1f);
			SCCB_Write_REG8(0xe1,0x67);
			SCCB_Write_REG8(0xe0,0x00);
			SCCB_Write_REG8(0xdd,0x7f);
			SCCB_Write_REG8(0x05,0x00);

			SCCB_Write_REG8(0xFF, 0x00);
			SCCB_Write_REG8(0xD7, 0x03);
			SCCB_Write_REG8(0xDF, 0x02);
			SCCB_Write_REG8(0x33, 0xa0);
			SCCB_Write_REG8(0x3C, 0x00);
			SCCB_Write_REG8(0xe1, 0x67);
		}
    }
}

