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

📄 lcd.c

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 C
📖 第 1 页 / 共 3 页
字号:

void Test_Osd_16Bit565_240320_Colorkey(void)
{

	S32 alpha;
	U32 i,j,k;
	S32 topx, topy, botx, boty;


	LcdBGInit(MODE_PAR_16BIT565_240320);
	GlibInit(MODE_PAR_16BIT565_240320, BGBUFFER1);
	k=0;
	for(j=0; j<BG_YSIZE_240320; j++)
		for(i=0; i<BG_XSIZE_240320; i++)
			PutPixel(i,j,sghx600iqvga16[k++]);


	LcdFGInit(MODE_OSD_16BIT565_240320);
	GlibInit(MODE_OSD_16BIT565_240320, FGBUFFER1);
	GlibFilledRectangle(0,0, FG_XSIZE_240320/2-1, FG_YSIZE_240320/2-1, 0xf800);
	GlibFilledRectangle(FG_XSIZE_240320/2,0, FG_XSIZE_240320-1, FG_YSIZE_240320/2-1, 0x7e0);
	GlibFilledRectangle(0,FG_YSIZE_240320/2, FG_XSIZE_240320/2-1, FG_YSIZE_240320-1, 0x1f);
	GlibFilledRectangle(FG_XSIZE_240320/2, FG_YSIZE_240320/2, FG_XSIZE_240320-1, FG_YSIZE_240320-1, 0xffff);
	GlibRectangle(0, 0, FG_XSIZE_240320-1, FG_YSIZE_240320-1, 0x0);

	
	rLCDCON1=(rLCDCON1&~(0x3<<28))|(0x2<<28);

	topx=60;
	topy=80;
	botx=60+FG_XSIZE_240320-1;
	boty=80+FG_YSIZE_240320-1;

	LcdOsdChangeCoordination(topx,topy,botx, boty);
	rLCDVSCRF1=(((FG_VXSIZE_240320-(botx-topx+1))*2)<<13)|((botx-topx+1)*2);
	rLCDEADDRF1=LCDBASEL(LCDFRAMEBUFFERFG1+(FG_VXSIZE_240320*2)*(boty-topy+1));	

	LcdOsdSelectFunction(OSD_COLORKEY);
	LcdOsdSetAlpha(0xff);
	LcdColorKeyInit(MODE_OSD_16BIT565_240320);
	LcdOsdEnDiable(1);

	LcdEnvidOnOff(1);;
	
	Uart_Printf("i:upper, j:left, k:right,m:lower\n");
	Uart_Printf("a:decrement, s:increment\n");
	
	while(1) {
		switch(Uart_Getch()) {
			case 'i':
				topy-=4;
				boty-=4;
				break;
			case 'j':
				topx-=4;
				botx-=4;
				break;
			case 'k':
				topx+=4;
				botx+=4;
				break;
			case 'm':
				topy+=4;
				boty+=4;
				break;
			case 'a':
				alpha-=5;
				break;
			case 's':
				alpha+=5;
				break;
			case '\r':
				return;
			default:
				break;
		}
		if(topy<0) {
			topy=0;
			boty=FG_YSIZE_240320-1;
		}	
		if(topx<0) {
			topx=0;
			botx=FG_XSIZE_240320-1;
		}
		if(botx>BG_XSIZE_240320-1) {
			botx=BG_XSIZE_240320-1;
			topx=BG_XSIZE_240320-FG_XSIZE_240320;
		}
		if(boty>BG_YSIZE_240320-1) {
			boty=BG_YSIZE_240320-1;
			topy=BG_YSIZE_240320-FG_YSIZE_240320;
		}
		
		Uart_Printf("%d, %d, %d, %d\n", topx, topy, botx, boty);		
		LcdOsdChangeCoordination(topx,topy,botx, boty);
	}

	Uart_Printf("Press any key to continue\n");
	Uart_Getch();
	LcdEnvidOnOff(0);
	LcdOsdEnDiable(0);

}



void Test_Osd_16Bit565_240320_Compkey(void)
{

	U32 toggle;
	S32 alpha;
	U32 i,j,k;
	U32 flag;
	S32 topx, topy, botx, boty;
	U32 whichfunction;


	LcdBGInit(MODE_PAR_16BIT565_240320);
	GlibInit(MODE_PAR_16BIT565_240320, BGBUFFER1);
	k=0;
	for(j=0; j<BG_YSIZE_240320; j++)
		for(i=0; i<BG_XSIZE_240320; i++)
			PutPixel(i,j,sghx600iqvga16[k++]);


	LcdFGInit(MODE_OSD_16BIT565_240320);
	GlibInit(MODE_OSD_16BIT565_240320, FGBUFFER1);

	k=0;
	for(j=0; j<FG_YSIZE_240320; j+=20) {
		for(i=0; i<FG_XSIZE_240320; i+=20) {
			if(k%2)
				GlibFilledRectangle(i, j, i+19, j+19, 0x0);
			else
				GlibFilledRectangle(i, j, i+19, j+19, 0xf800+k*4);
			k++;
		}
		k++;
	}	
	GlibRectangle(0, 0, FG_XSIZE_240320-1, FG_YSIZE_240320-1, 0x1f);

	rLCDCON1=(rLCDCON1&~(0x3<<28))|(0x2<<28);

	topx=60;
	topy=80;
	botx=60+FG_XSIZE_240320-1;
	boty=80+FG_YSIZE_240320-1;

	LcdOsdChangeCoordination(topx,topy,botx, boty);
	rLCDVSCRF1=(((FG_VXSIZE_240320-(botx-topx+1))*2)<<13)|((botx-topx+1)*2);
	rLCDEADDRF1=LCDBASEL(LCDFRAMEBUFFERFG1+(FG_VXSIZE_240320*2)*(boty-topy+1));	

	LcdOsdSelectFunction(OSD_COLORKEY);
	LcdOsdSetAlpha(0xff);
	LcdColorKeyInit(MODE_OSD_16BIT565_240320);
	LcdSetColorKey(0, 0x3fffff, 0xffffff);
	LcdOsdEnDiable(1);

	LcdEnvidOnOff(1);;
	
	Uart_Printf("i:upper, j:left, k:right,m:lower\n");
	Uart_Printf("a:decrement, s:increment\n");
	Uart_Printf("d:osd blending, f:osd colorkey\n");

	flag=0;
	toggle=0;
	whichfunction=OSD_COLORKEY;
	alpha=0xff;
	while(1) {
		switch(Uart_Getch()) {
			case 'i':
				topy-=4;
				boty-=4;
				break;
			case 'j':
				topx-=4;
				botx-=4;
				break;
			case 'k':
				topx+=4;
				botx+=4;
				break;
			case 'm':
				topy+=4;
				boty+=4;
				break;
			case 'a':
				alpha-=5;
				break;
			case 's':
				alpha+=5;
				break;
			case 'd':
				whichfunction=OSD_BLENDING;
				break;
			case 'f':
				whichfunction=OSD_COLORKEY;
				break;
			case '\r':
				return;
			default:
				break;
		}
		if(topy<0) {
			topy=0;
			boty=FG_YSIZE_240320-1;
		}	
		if(topx<0) {
			topx=0;
			botx=FG_XSIZE_240320-1;
		}
		if(botx>BG_XSIZE_240320-1) {
			botx=BG_XSIZE_240320-1;
			topx=BG_XSIZE_240320-FG_XSIZE_240320;
		}
		if(boty>BG_YSIZE_240320-1) {
			boty=BG_YSIZE_240320-1;
			topy=BG_YSIZE_240320-FG_YSIZE_240320;
		}
		if(alpha>255) alpha=255;
		if(alpha<0) alpha=0;
		
		Uart_Printf("%d, %d, %d, %d, @%d\n", topx, topy, botx, boty, alpha);		
		LcdOsdChangeCoordination(topx,topy,botx, boty);
		LcdOsdSetAlpha(alpha);
		LcdOsdSelectFunction(whichfunction);
		
	}

	Uart_Printf("Press any key to continue\n");
	Uart_Getch();
	LcdEnvidOnOff(0);
	LcdOsdEnDiable(0);

}


void Test_Osd_16Bit565_240320_Compkey_Direction(void)
{

	U32 toggle;
	S32 alpha;
	U32 i,j,k;
	U32 flag;
	S32 topx, topy, botx, boty;
	U32 whichfunction;


	LcdBGInit(MODE_PAR_16BIT565_240320);
	GlibInit(MODE_PAR_16BIT565_240320, BGBUFFER1);
	k=0;
	k=0;
	for(j=0; j<BG_YSIZE_240320; j+=40) {
		for(i=0; i<BG_XSIZE_240320; i+=40) {
			if(k%2)
				GlibFilledRectangle(i, j, i+39, j+39, 0x0);
			else
				GlibFilledRectangle(i, j, i+39, j+39, 0xf800+k*4);
			k++;
		}
		k++;
	}	



	LcdFGInit(MODE_OSD_16BIT565_240320);
	GlibInit(MODE_OSD_16BIT565_240320, FGBUFFER1);

	k=0;
	for(j=0; j<FG_YSIZE_240320; j+=20) {
		for(i=0; i<FG_XSIZE_240320; i+=20) {
			if(k%2)
				GlibFilledRectangle(i, j, i+19, j+19, 0x0);
			else
				//GlibFilledRectangle(i, j, i+19, j+19, 0xf800+k*4);
				GlibFilledRectangle(i, j, i+19, j+19, 0x1f);
			k++;
		}
		k++;
	}	
	GlibRectangle(0, 0, FG_XSIZE_240320-1, FG_YSIZE_240320-1, 0x1f);

	rLCDCON1=(rLCDCON1&~(0x3<<28))|(0x2<<28);

	topx=60;
	topy=80;
	botx=60+FG_XSIZE_240320-1;
	boty=80+FG_YSIZE_240320-1;

	LcdOsdChangeCoordination(topx,topy,botx, boty);
	rLCDVSCRF1=(((FG_VXSIZE_240320-(botx-topx+1))*2)<<13)|((botx-topx+1)*2);
	rLCDEADDRF1=LCDBASEL(LCDFRAMEBUFFERFG1+(FG_VXSIZE_240320*2)*(boty-topy+1));	

	LcdOsdSelectFunction(OSD_COLORKEY);
	LcdOsdSetAlpha(0xff);
	LcdColorKeyInit(MODE_OSD_16BIT565_240320);
	LcdSetColorKey(0, 0x3fffff, 0xffffff);
	LcdOsdEnDiable(1);

	LcdEnvidOnOff(1);;
	
	Uart_Printf("i:upper, j:left, k:right,m:lower\n");
	Uart_Printf("a:decrement, s:increment\n");
	Uart_Printf("d:osd blending, f:osd colorkey\n");
	Uart_Printf("g:foreground matching, h:background matching\n");

	flag=0;
	toggle=0;
	whichfunction=OSD_COLORKEY;
	alpha=0xff;
	while(1) {
		switch(Uart_Getch()) {
			case 'i':
				topy-=4;
				boty-=4;
				break;
			case 'j':
				topx-=4;
				botx-=4;
				break;
			case 'k':
				topx+=4;
				botx+=4;
				break;
			case 'm':
				topy+=4;
				boty+=4;
				break;
			case 'a':
				alpha-=5;
				break;
			case 's':
				alpha+=5;
				break;
			case 'd':
				whichfunction=OSD_BLENDING;
				break;
			case 'f':
				whichfunction=OSD_COLORKEY;
				break;
			case 'g':
				toggle=0;
				break;
			case 'h':
				toggle=1;
				break;	
			case '\r':
				return;
			default:
				break;
		}
		if(topy<0) {
			topy=0;
			boty=FG_YSIZE_240320-1;
		}	
		if(topx<0) {
			topx=0;
			botx=FG_XSIZE_240320-1;
		}
		if(botx>BG_XSIZE_240320-1) {
			botx=BG_XSIZE_240320-1;
			topx=BG_XSIZE_240320-FG_XSIZE_240320;
		}
		if(boty>BG_YSIZE_240320-1) {
			boty=BG_YSIZE_240320-1;
			topy=BG_YSIZE_240320-FG_YSIZE_240320;
		}
		if(alpha>255) alpha=255;
		if(alpha<0) alpha=0;
		
		Uart_Printf("%d, %d, %d, %d, @%d\n", topx, topy, botx, boty, alpha);		
		LcdOsdChangeCoordination(topx,topy,botx, boty);
		LcdOsdSetAlpha(alpha);
		LcdOsdSelectFunction(whichfunction);
		LcdSetColorKey(toggle, 0x3fffff, 0xffffff);
		
	}

	Uart_Printf("Press any key to continue\n");
	Uart_Getch();
	LcdEnvidOnOff(0);
	LcdOsdEnDiable(0);

}


void Test_Lcd_16Bit_240320_Int(void)
{

//	DisplayType=MODE_PAR_8BIT_240320;
//	WhichFrameBuffer=BGBUFFER1;	
	int i,j,k;

	framedone=0;

	rSUBSRCPND=BIT_SUB_DISP_FRAME;
	rSRCPND=BIT_LCD_POST;
	rINTPND=rINTPND;
	
	pISR_LCD_POST=(unsigned)Lcd_Int_Fr;
	rINTMSK &= ~(BIT_LCD_POST);
	rINTSUBMSK &= ~(BIT_SUB_DISP_FRAME);


	rGPCON_L = (rGPCON_L & ~(0x3<<16))|(1<<16);
	rGPDAT &= ~(1<<8);

#ifdef LTS222
	InitLDI();
#endif

//	LcdBGInit(MODE_PAR_16BIT565_240320);
//	GlibInit(MODE_PAR_16BIT565_240320, BGBUFFER1);

	LcdBGInit(MODE_SER_16BIT565_176220);
	GlibInit(MODE_SER_16BIT565_176220, BGBUFFER1);

	GlibClearScr(0);

	k=0;
	for(j=0; j<BG_YSIZE_240320; j++)
		for(i=0; i<BG_XSIZE_240320; i++)
			PutPixel(i,j,sghx600iqvga16[k++]);
			//PutPixel(i,j,pqvga16bsm5[k++]);

//	rLCDCON1 &= ~(1<<19);
	Uart_Printf("rLCDCON1=0x%x\n", rLCDCON1);
//	LcdEnvidOnOff(1);
	LcdEnvidOnOffDirect(1); // Enable ENVID Bit

#if 1 //VSYNC
	rLCDINTCON=(rLCDINTCON&~(0xf<<8))|((0x3&1)<<10)|((0x3&0)<<8)|(1<<7)|(1);
#elif 0 //front porch
	rLCDINTCON=(rLCDINTCON&~(0xf<<8))|((0x3&3)<<10)|((0x3&0)<<8)|(1<<7)|(1);
#else //back porch
	rLCDINTCON=(rLCDINTCON&~(0xf<<8))|((0x3&0)<<10)|((0x3&0)<<8)|(1<<7)|(1);
#endif


	while(1) {
		framedone=0;
		while(framedone==0);		
		LcdEnvidOnOffDirect(0);
		rLCDCON1=(rLCDCON1 & ~(0x3f<<13))|(0x4<<13);		
		
		rCLKSRC=(0<<8)|(0<<7)|(0<<5)|(1<<4)|(0); // OnOSC_EN disable,U_PLL on,M_PLL on,External clk,Divider=0
		rCLKDIVN = (1<<1)|(1);
		rMPLLCON = (60<<12)|(2<<4)|(1);
		rCLKSRC=(0<<8)|(0<<7)|(0<<5)|(0<<4)|(0); // OnOSC_EN disable,U_PLL on,M_PLL on,MPLL_clk,Divider=0
//		rLCDCON1=(rLCDCON1 & ~(0x3f<<13))|(0x4<<13);		
		LcdEnvidOnOffDirect(1);
		rGPDAT |= (1<<8);		
		Uart_Getch();
		
		framedone=0;
		while(framedone==0);		
		LcdEnvidOnOffDirect(0);
		rLCDCON1=(rLCDCON1 & ~(0x3f<<13))|(0x8<<13);

		rCLKSRC=(0<<8)|(0<<7)|(0<<5)|(1<<4)|(0); // OnOSC_EN disable,U_PLL on,M_PLL on,External clk,Divider=0
		rCLKDIVN = (1<<1)|(1);
		rMPLLCON = (60<<12)|(2<<4)|(0);
		rCLKSRC=(0<<8)|(0<<7)|(0<<5)|(0<<4)|(0); // OnOSC_EN disable,U_PLL on,M_PLL on,MPLL_clk,Divider=0
//		rLCDCON1=(rLCDCON1 & ~(0x3f<<13))|(0x8<<13);

		LcdEnvidOnOffDirect(1);
		rGPDAT &= ~(1<<8);
		Uart_Getch();
	}	

	Uart_Printf("If you want to turn off LCD, press any key\n");
	Uart_Getch();	
	rGPDAT |= (1<<8);
//	LcdEnvidOnOff(0);
	LcdEnvidOnOffDirect(0);

} 

⌨️ 快捷键说明

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