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

📄 16.0save.txt

📁 这是今年ADI大赛我参与的另一个获奖的项目列缝检测仪的源文件
💻 TXT
字号:
#include "bf5xx.h"
#include "types.h"

uint8_t Sensor_Reg[SENSOR_REG_SIZE];
section ("sdram0") unsigned char  DisplayBuffer[262][960] ;
section ("sdram0")volatile uint16_t VideoInputFrame[LINES_PER_FRAME][PIXEL_PER_LINE];
//unsigned char DisplayBuffer[251574];
//section ("sdram0") uint16_t DisplayBuffer[262][960] ;
section ("sdram0") unsigned char  TempBuffer_img[262][960] ;
volatile uint16_t *pDestAddr = &VideoInputFrame[0][0];
	

/**********************************************************************************
* 名称 :main()
* 功能 :初始化各函数,实现图象捕捉.LCD生成彩条数据,产生彩条
* 入口参数 :无
* 出口参数 :无
***********************************************************************************/

void GBR2RGB24(void)
{
	int i,j;
	unsigned char r,g,b,y,u,v;
	int a,d;
	int videoline,videocol;
	int disline,discol;

/*	for(i=0;i<262;i++)
	{
		for(j=0;j<960;j++)
		{
			TempBuffer_img[i][j] = Inputdata[i*960+j+54]; 		
		}
	}
	
	
	for(i=0;i<262;i++)
	{
		for(j=0;j<320;j++)
		{
	   		a = TempBuffer_img[i][j*3];
	   		b = TempBuffer_img[i][j*3+2];	
	   		TempBuffer_img[i][j*3] = b;
	   		TempBuffer_img[i][j*3+2] = a;
		}
	}
*/
		// UYVY格式跟YUY2类似,只是图像数据中YUV分量的排列顺序有所不同:
//U0 Y0 V0 Y1    U2 Y2 V2 Y3 …	
/*&

Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B

R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U

YUV=YCbCr   
        RGB的分量为   
          R=Y+1.402*(Cr-0.5);   
          G=Y-0.34414*(Cb-0.5)-0.71414*(Cr-0.5));   
          b=Y+1.772*(cb-0.5)   
          
 R = Y + 1.772(V-128) 
B = Y + 1.402(U-128) 
G = Y - 0.714(U-128) - 0.344(V-128)
*/

	for(i=0;i<240;i++)
	{
		for(j=0;j<320;j++)
		{
		    videoline=i*2;
		    videocol=j*2;
			u  = VideoInputFrame[videoline][videocol]; // u0 y0 v0 y1 u2 y2 v2 y3
			y = VideoInputFrame[videoline][videocol]/256;  // G = Y - 0.39U - 0.58V 低位数据
			v = VideoInputFrame[videoline][videocol+1];// B = Y + 2.03U
		 
/*			u  = VideoInputFrame[(i-22)*2][j]; // u0 y0 v0 y1 u2 y2 v2 y3
			y = VideoInputFrame[(i-22)*2][j]/256;  // G = Y - 0.39U - 0.58V 低位数据
			v = VideoInputFrame[(i-22)*2][j+1];// B = Y + 2.03U
*/

		
  	disline=i;
	discol=j*3;

/*		    DisplayBuffer[disline][discol]   =  y + 1.14*v;			   // R = Y + 1.14V 高位的uyvy格式
			DisplayBuffer[disline][discol+1] =  y - 0.39*u - 0.58*v;   // G = Y - 0.39U - 0.58V 低位数据
			DisplayBuffer[disline][discol+2] =  y + 2.03*u;            // B = Y + 2.03U

*/
            r =  y + 1.14*v;			// R = Y + 1.14V 高位的uyvy格式
			g =  y - 0.39*u - 0.58*v;   // G = Y - 0.39U - 0.58V 低位数据
			b =  y + 2.03*u;   			// B = Y + 2.03U

			DisplayBuffer[disline][discol]   =  y;	// R = Y + 1.14V 高位的uyvy格式
			DisplayBuffer[disline][discol+1] =  y;  // G = Y - 0.39U - 0.58V 低位数据
			DisplayBuffer[disline][discol+2] =  y;  // B = Y + 2.03U

		}
	}
		
}



int main()                                                                                                                                                                               
{	
	int i,j;
	unsigned char t;
	Set_PLL(22,5);
	
	Init_SDRAM();	
	Init_EBIU();
//	VideoInputFrame[0][0]=0X1100;
//	t=VideoInputFrame[0][0];
	Init_Platform();
 	printf( "\nPlatform initialize success!\n" );
    Init_Po3030();
    printf( "\nPo3030 initialize success!\n" );
	Init_Flash();
	
	Setup_LEDs(); 
	Leda_Off();
	Led9_On();

	Video_Frame_Capture( (void*) pDestAddr );
	GBR2RGB24();
	delay(50);
	
	Init_PPIDMA(DisplayBuffer);
	Init_Platform_TFT();
	printf( "\nDisplay success!\n" );
	
	while(1)
	{

	}
}






⌨️ 快捷键说明

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