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

📄 yuv.c

📁 一个边缘检测的DSP上实现的C程序编写的工程!
💻 C
字号:
#include <c6x.h>
#include "flash.h"
#include "ICETEKYUV.h"
void Display();
void Througth();
void Capture();
void ReverseDemo();

/* 边缘检测实验程序 */
int main()
{
	register int i,j,ii;
	
	/********************* 初始化DSP ***********************/
	CSR=0x100;			/* 关中断 */
	IER=1;				/* 屏蔽除NMI中断以外的所有中断 */
	ICR=0xffff;			/* 清除中断标志位 */

	*(unsigned volatile int *)EMIF_GCR = 0x3300;    	/* EMIF 全局控制字 */
	*(unsigned volatile int *)EMIF_CE1 = CE1_32;    	/* EMIF CE1 control, 32位 */
	*(unsigned volatile int *)EMIF_SDCTRL = 0x07126000; 	/* EMIF SDRAM控制字 */
	*(unsigned volatile int *)EMIF_CE0 = 0x30;      	/* EMIF CE0控制字 */
	*(unsigned volatile int *)EMIF_SDRP = 0x61a;    	/* EMIF SDRM刷新周期 */
	*(unsigned volatile int *)EMIF_SDEXT= 0x54529;  	/* EMIF SDRM扩展 */
	/* Read space 	*/
	*(unsigned volatile int *)EMIF_CE2 = CE2_32_max;	/* EMIF CE2控制字 */
	/* Write space */	
	*(unsigned volatile int *)EMIF_CE3 = CE3_32;		/* EMIF CE3控制字 */
	delay_msec(ms_period/2);
	for(i=0;i<0xff;i++)
	{
		start_i2c();
		stop_i2c();
		delay_msec(5);
	}	    
	Init_7190();
	for(j=0;j<0x5;j++)	for(ii=0;ii<0x5;ii++);
	Init_7111();
	/******************* DSP初始化完毕 ********************/
	while ( 1 )					
     	{	
		Througth();	//直通显示方式
		Capture();	//摄入新的帧至RAM,直通显示方式
		Display();	//显示RAM中的图象
		Througth();	//直通显示方式,为对数据进行操作必须设置直通显示方式
		sobel();	//边缘检测,用Sobel边缘检测算子对图象进行边缘检测运算
		Display();	//显示处理后的图像
		//for(i=0;i<0x7fffff;i++) for ( j=0;j<32;j++);	//延时再重做 
	}
}		

/********************************
display()
*********************************/
void Display()
{
    	int i;
	for(i=0;i<0x7fffff;i++);
	*(unsigned int *)SYSRREG = 0xc;  //显示存储区
}


/********************************
throught()
*********************************/
void Througth()
{
	int i;
	for(i=0;i<0x7fffff;i++); 
	*(unsigned int *)SYSRREG = 0xa;  //直通显示
}

	
/********************************
display()
*********************************/
void Capture()
{
    	int i;
	for(i=0;i<0x7fffff;i++);
	*(unsigned int *)SYSRREG = 0x9;  //采集视频信号	
}

void ReverseDemo()
{
   int i,j;
   int ii;
   unsigned int *video_ptr;
   
   video_ptr = (unsigned int *)VIDEO_START;
   
   for(i=0;i<576;i++)   //行576
   {  
      for(j=0;j<360;j++)   //列720点,360个32bit字,
      {
         ii = ~(*(video_ptr+j));
         ii &= 0xff00ff00;
         ii |= 0x00800080; //cb cr置80显示灰度图象
         *(video_ptr + j) = ii;
      }
      video_ptr += 512; 
    }
}

⌨️ 快捷键说明

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