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

📄 venb.c

📁 H.261图像压缩芯片控制软件
💻 C
📖 第 1 页 / 共 4 页
字号:
			VIDEO3_LED=0;
			VIDEO4_LED=0;
			break;
		case 8:
			VIDEO1_LED=0;
			VIDEO2_LED=1;
			VIDEO3_LED=1;
			VIDEO4_LED=1;
			break;
		case 9:
			VIDEO1_LED=0;
			VIDEO2_LED=1;
			VIDEO3_LED=1;
			VIDEO4_LED=0;
			break;
		case 0x0a:
			VIDEO1_LED=0;
			VIDEO2_LED=1;
			VIDEO3_LED=0;
			VIDEO4_LED=1;
			break;
		case 0x0b:
			VIDEO1_LED=0;
			VIDEO2_LED=1;
			VIDEO3_LED=0;
			VIDEO4_LED=0;
			break;
		case 0x0c:
			VIDEO1_LED=0;
			VIDEO2_LED=0;
			VIDEO3_LED=1;
			VIDEO4_LED=1;
			break;
			
		default:
			VIDEO1_LED=1;
			VIDEO2_LED=1;
			VIDEO3_LED=1;
			VIDEO4_LED=0;
			break;
	}
}

/*****************************************************************************
*  函数名称:void InitAdg406(void)                                            *
*  简要描述:初始化Adg406                                                     *
*                                                                            *
*  时    间:2000年1月                                                        *
*****************************************************************************/
void InitAdg406(byte nCurrentVideo)
{
	WATCHD=!WATCHD;
       
	VIDEO_CS=1;	  //设定片选信号有效
	WR=1;
	
	P0=(nCurrentVideo-1);	//对任意地址写速率控制字,低2位有效
	
	WR=0;    	 	//负脉冲为有效的写操作
	Delay();
	WR=1;		

	VIDEO_CS=0;	//设定片选信号无效
	 
	
	return;
}

/*****************************************************************************
*  函数名称:void InitSaa7111(void)                                           *
*  简要描述:初始化SAA7111                                                    *
*                                                                            *
*  时    间:2000年1月                                                        *
*****************************************************************************/
void InitSaa7111(void)
{
	WATCHD=!WATCHD;

        SendToSaa7111(0x0,0x0);		//地址00,Chip version	
       	SendToSaa7111(0x1,0x0); 	//地址01,Reserved
	switch(m_nCurrentVideo)		//地址02,Analog input control 1
	{
       		case 4:
       			SendToSaa7111(0x2,0xdb);   	//视频4
       			break;
       		case 3:
       			SendToSaa7111(0x2,0xda);   	//视频3
       			break;
      		case 2:
       			SendToSaa7111(0x2,0xd9);   	//视频2
       			break;
       		case 1:
       		default:
       			SendToSaa7111(0x2,0xd8);   	//缺省为视频1
       			break;
	}
       	SendToSaa7111(0x3,0x23);   	//地址03,Analog input control 2
       	SendToSaa7111(0x4,0x0);   	//地址04,Analog input control 3
       	SendToSaa7111(0x5,0x0);   	//地址05,Analog input control 4
       	SendToSaa7111(0x6,0x30);   	//地址06,Horizontal sync start
       	SendToSaa7111(0x7,0x30);   	//地址07,Horizontal sync stop
       	SendToSaa7111(0x8,0x8);   	//地址08,Sync control
       	SendToSaa7111(0x9,0x1);   	//地址09,Luminance control
       	SendToSaa7111(0xa,m_nBright); 	    //地址0A,Luminance brightness
       	SendToSaa7111(0xb,m_nContrast);	    //地址0B,Luminance contrast
       	SendToSaa7111(0xc,m_nSaturation);   //地址0C,Chroma saturation
       	SendToSaa7111(0xd,m_nHue);	    //地址0D,Chroma hue control
       	SendToSaa7111(0xe,0x1);		//地址0E,Chroma control
       	SendToSaa7111(0xf,0x0);   	//地址0F,Reserved       	
       	SendToSaa7111(0x10,0x48);   	//地址10,Format/delah control
       	SendToSaa7111(0x11,0xc);   	//地址11,Output control 1
       	if(m_nCurrentVideo<2)		//地址12,Output control 2
	{
      		SendToSaa7111(0x12,0x5);    //输出AOUT与AD1连	
      	}
      	else
	{
      		SendToSaa7111(0x12,0x6);    //输出AOUT与AD2连		
      	}
       	SendToSaa7111(0x13,0x0);   	//地址13,Output control 3
       	SendToSaa7111(0x14,0x0);   	//地址14,Reserved
       	SendToSaa7111(0x15,0x0);   	//地址15,V_GATE1_START
       	SendToSaa7111(0x16,0x0);   	//地址16,V_GATE1_STOP
       	SendToSaa7111(0x17,0x0);   	//地址17,V_GATE1_MSB
       	SendToSaa7111(0x18,0x0);   	//地址18,Reserved
       	SendToSaa7111(0x19,0x0);   	//地址19,Reserved
       	SendToSaa7111(0x1a,0x0);   	//地址1A,Text slicer status
       	SendToSaa7111(0x1b,0x0);   	//地址1B,Decoded bytes of the text slicer
       	SendToSaa7111(0x1c,0x0);   	//地址1C,Reserved
       	SendToSaa7111(0x1d,0x0);   	//地址1D,Reserved
       	SendToSaa7111(0x1e,0x0);   	//地址1E,Reserved

	VIDEO1_LED=0;			//指示SAA7111初始化正常

	return;
}


/*****************************************************************************
*  函数名称:void InitVp520enc(void)                                          *
*  简要描述:初始化VP520芯片                                                  *
*                                                                            *
*  时    间:2000年1月                                                        *
*****************************************************************************/
void InitVp520enc(void)
{
	byte data temp;

	WATCHD=!WATCHD;

	RATE_CS=1;	//地址锁存逻辑使能
	BUTTON_CS=1;
	
	VP520_CS=0;	//片选有效
	
	SetRegister(0x9,0x2a);	//Control register 1,Disable frame ready flag
	SetRegister(0x8,0x60);	//Control register 0

	SetRegister(0xa,0x00);	//Line delay from VREF to first active line
	SetRegister(0xb,0x03);	//Pixel delay from HREF to first active pixel
	SetRegister(0xc,0x7c);	//Blanked screen Y value
    	SetRegister(0xd,0x7f);	//Blanked screen U value
	SetRegister(0xe,0x7f);	//Blanked screen V value
	SetRegister(0x3,0x00);	//Special modes register

	SetRegister(0xf,0x00);	//Clear all address counters
	SetRegister(0x1,0x00);	//0,Horizontal luminance coefficients
	SetRegister(0x1,0x00);	//1
	SetRegister(0x1,0x00);	//2
	SetRegister(0x1,0x7f);	//3
	SetRegister(0x1,0x00);	//4
	SetRegister(0x1,0x00);	//5
	SetRegister(0x1,0x00);	//6
	SetRegister(0x1,0x00);	//7

	SetRegister(0xf,0x00);	//Clear all address counters
	SetRegister(0x2,0x00);	//0,Horizontal chrominance coefficients
	SetRegister(0x2,0x00);	//1
	SetRegister(0x2,0x00);	//2
	SetRegister(0x2,0x7f);	//3
	SetRegister(0x2,0x00);	//4
	SetRegister(0x2,0x00);	//5
	SetRegister(0x2,0x00);	//6
	SetRegister(0x2,0x00);	//7

	SetRegister(0xf,0x00);	//Clear all address counters
	SetRegister(0x5,0x00);	//0,Vertical luminance coefficients
	SetRegister(0x5,0x18);	//1
	SetRegister(0x5,0x7f);	//2
	SetRegister(0x5,0x00);	//3
	SetRegister(0x5,0x00);	//4

	SetRegister(0xf,0x00);	//Clear all address counters
	SetRegister(0x6,0x00);	//0,Vertical chrominance coefficients
	SetRegister(0x6,0x00);	//1
	SetRegister(0x6,0x7f);	//2
	SetRegister(0x6,0x00);	//3
	SetRegister(0x6,0x00);	//4

	SetRegister(0x7,0x01);	//Register 7,with 0x21 is test mode
	SetRegister(0x8,0xe0);	//Control register 0
	SetRegister(0x9,0x0a);	//Enable frame ready flag

	//读寄存器以测试VP520是否正常
	SetRegister(0xf,0x00);  //Clear all address counters
	temp=ReadRegister(0x6);	//0,Read Vertical chrominance coefficients;
	temp=ReadRegister(0x6);	//1
	temp=ReadRegister(0x6);	//2,应为先前写入的参数

	RATE_CS=1;	//地址锁存逻辑使能
	BUTTON_CS=1;
	VP520_CS=1;	//片选无效
	
	while(temp!=0x7f);	//VP520故障,应复位
	
	VIDEO2_LED=0;	//指示VP520初始化正常

        return;
}


/*****************************************************************************
*  函数名称:void InitVp2611()                                                *
*  简要描述:初始化VP2611芯片                                                 *
*                                                                            *
*  时    间:2000年1月                                                        *
*****************************************************************************/
void InitVp2611(void)
{
	byte data temp;

	WATCHD=!WATCHD;

	RATE_CS=1;	//地址锁存逻辑使能
	BUTTON_CS=1;
	
	VP2611_CS=0;	//片选有效
	
	SetRegister(0x00,0x00);	//选择命令0: 输入VAR门限
	SetRegister(0x01,0x08);

	SetRegister(0x00,0x02);	//选择命令2: 输入帧间量化系数
	SetRegister(0x01,0x05);

	SetRegister(0x00,0x03);	//选择命令3: 输入帧内量化系数
	SetRegister(0x01,0x05);

	SetRegister(0x00,0x04);	//选择命令4: 输入设置参数
	SetRegister(0x01,0x60);

	SetRegister(0x00,0x05);	//选择命令5: 输入控制功能
	SetRegister(0x01,0xa0);	//FASTUPDATE

	//读寄存器以测试VP2611是否正常
	SetRegister(0x00,0x0c); //选择命令12:输出设置参数 
	temp=ReadRegister(0x01);//应为命令4中输入的参数

	RATE_CS=1;	//地址锁存逻辑使能
	BUTTON_CS=1;
	
	VP2611_CS=1;	//片选无效

	while(temp!=0x60);	//VP2611故障,应复位

	VIDEO3_LED=0;	//指示VP2611初始化正常

	return; 
}


/**********)*******************************************************************
*  函数名称:void InitVp2612 ()                                               *
*  简要描述:初始化VP2612芯片                                                 *
*                                                                            *
*  时    间:2000年1月                                                        *
*****************************************************************************/
void InitVp2612(void)
{
	byte data i;
	
	WATCHD=!WATCHD;

	RATE_CS=1;	//地址锁存逻辑使能
	BUTTON_CS=1;
	
	VP2612_CS=0;	//片选有效
	
//	SetRegister(0x00,0x38);	//选择命令0: 输入PTYPE
	SetRegister(0x01,0x1f);	//选择命令1: 输入Temporal Reference
	SetRegister(0x03,0x00);	//选择命令3: 输入TR Source
	SetRegister(0x04,0x8f);	//选择命令4: 输入GSPARE
	SetRegister(0x0c,0x03);	//选择命令C: 输入FEC/VMUX status word
	SetRegister(0x0d,0xff);	//选择命令D: 输入Bits per Picture Threshold

	VIDEO4_LED=0;	//指示VP2612初始化结束

	//发图象解冻命令
	SetRegister(0x00,0x3c);	//选择命令0: 输入PTYPE,Freeze picture release on
	for(i=0;i<100;i++) Delay();
	SetRegister(0x00,0x38);	//选择命令0: 输入PTYPE,Freeze picture release off

	RATE_CS=1;	//地址锁存逻辑使能
	BUTTON_CS=1;
	
	VP2612_CS=1;	//片选无效

        return;
}


/*****************************************************************************
*  函数名称:void SetRegister(byte nAddress,byte nData)                       *
*  简要描述:配置VP系列芯片内部寄存器                                         *
*                                                                            *
*  时    间:2000年1月                                                        *
*****************************************************************************/
void SetRegister(byte nAddress,byte nData)
{
	ALE=0;	//先锁存地址
	P0=nAddress;
	ALE=1;
	ALE=0;
	
	WR=1;	//写入配置数据
	P0=nData;
	WR=0;
	WR=1;
        return;
}

/*****************************************************************************
*  函数名称:byte ReadRegister(byte nAddress)                                 *
*  简要描述:读VP系列芯片内部寄存器                                           *
*                                                                            *
*  时    间:2000年1月                                                        *
*****************************************************************************/
byte ReadRegister(byte nAddress)
{
	byte data temp;
	
	ALE=0;	//先锁存地址
	P0=nAddress;
	ALE=1;
	ALE=0;
	
	P0=0xff;
	
	RD=1;	//读出数据
	RD=0;
	temp=P0;
	RD=1;

        return(temp);
}


/*****************************************************************************
*  函数名称:void I_start(void)                                               *
*  简要描述:提供IIC总线工作时序的起始位                                      *
*                                                                            *
*  时    间:2000年1月                                                        *
*****************************************************************************/
void I_Start( void )
{
	SCL=HIGH;
	Delay();
	SDA=LOW;
	Delay();
	SCL=LOW;
	Delay();

	return;
}


/*****************************************************************************
*  函数名称:void I_stop(void)                                                *
*  简要描述:提供IIC总线工作时序的停始位                                      *
*                                                                            *
*  时    间:2000年1月                                                        *
*****************************************************************************/
void I_Stop(void)
{
	SDA=LOW;
	Delay();
	SCL=HIGH;
	Delay();
	SDA=HIGH;
	Delay();
	SCL=LOW;
	Delay();

	return;
}


/*****************************************************************************
*  函数名称:bit I_clock(void)                                                *
*  简要描述:提供IIC总线的时钟信号                                            *
*  输    出:时钟电平为高期间SDA信号线上的状态                                *
*  时    间:2000年1月                                                        *
*****************************************************************************/

⌨️ 快捷键说明

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