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

📄 rgb.c

📁 LCD programming in eCos.
💻 C
字号:
//============================================================================
//        Include
//============================================================================

#include <stdio.h>
#include <cyg/io/lcd/fie702x_lcd.h>
#include "LCDSystem.h"
#include "FontSystem.h"

//============================================================================
//        Definition
//============================================================================

#define DISPLAY_SIZE	(320*240)

//============================================================================
//        Global Variables
//============================================================================

cyg_io_handle_t lcd_handle=1;

int main (void)
{	
	int err;
	int sel;
	short *frame_base;
	int i;
	char buffer[255];
	char *y_base, *u_base, *v_base;
	
	err = cyg_io_lookup( "/dev/lcd", &lcd_handle );

	if (ENOERR != err) 
	{
		printf("Can't open '%s'\n", "/dev/lcd");
	}
	
	API_LCD_start(lcd_handle);
	
	sel = API_LCD_get_InvalidFrame(lcd_handle);	
	
while(1)
{	
	
	// test YUV...
	
	printf("start test YUV 420 mode...\n");
	
	API_LCD_set_YUV420Mode(lcd_handle);
	
	y_base = API_LCD_get_Y_Base(lcd_handle, sel);
	u_base = API_LCD_get_U_Base(lcd_handle, sel);
	v_base = API_LCD_get_V_Base(lcd_handle, sel);
	
	//memset(y_base, 235, DISPLAY_SIZE);		
	//memset(u_base, 128, DISPLAY_SIZE/2);
	//memset(v_base, 128, DISPLAY_SIZE/2);
	
	//printf("should see white screen, press enter to continue\n");
	//gets(buffer);

	memset(y_base, 162, DISPLAY_SIZE);
	memset(u_base, 44, DISPLAY_SIZE/2);
	memset(v_base, 142, DISPLAY_SIZE/2);
	
	printf("should see yellow screen, press enter to continue\n");
	gets(buffer);

	memset(y_base, 112, DISPLAY_SIZE);
	memset(u_base, 72, DISPLAY_SIZE/2);
	memset(v_base, 58, DISPLAY_SIZE/2);
	
	printf("should see green screen, press enter to continue\n");
	gets(buffer);

	memset(y_base, 65, DISPLAY_SIZE);
	memset(u_base, 100, DISPLAY_SIZE/2);
	memset(v_base, 212, DISPLAY_SIZE/2);
	
	printf("should see red screen, press enter to continue\n");
	gets(buffer);

	memset(y_base, 35, DISPLAY_SIZE);
	memset(u_base, 212, DISPLAY_SIZE/2);
	memset(v_base, 114, DISPLAY_SIZE/2);
	printf("should see blue screen, press enter to continue\n");
	gets(buffer);

	// test RGB...
#define RGB16(r,g,b)	(((b >> 3) << 0) | ((g >> 2) << 5) | ((r >> 3) << 11))

	printf("start test RGB mode...\n");
	
	API_LCD_set_RGBMode(lcd_handle);
	
	frame_base = (short *)API_LCD_get_Y_Base(lcd_handle, sel);
	
	for (i = 0; i < DISPLAY_SIZE; i ++)
	{
		frame_base[i] = RGB16(0xFF, 0xFF, 0xFF);
	}	
	
	printf("should see white screen, press enter to continue\n");
	gets(buffer);

	for (i = 0; i < DISPLAY_SIZE; i ++)
	{
		frame_base[i] = RGB16(0xFF, 0xFF, 0);
	}
	
	printf("should see yellow screen, press enter to continue\n");
	gets(buffer);	
	
	for (i = 0; i < DISPLAY_SIZE; i ++)
	{
		frame_base[i] = RGB16(0, 0xFF, 0);
	}
	
	printf("should see green screen, press enter to continue\n");
	gets(buffer);

	for (i = 0; i < DISPLAY_SIZE; i ++)
	{
		frame_base[i] = RGB16(0xFF, 0, 0);
	}
	
	printf("should see red screen, press enter to continue\n");
	gets(buffer);

	for (i = 0; i < DISPLAY_SIZE; i ++)
	{
		frame_base[i] = RGB16(0, 0, 0xFF);
	}
	
	printf("should see blue screen, press enter to continue\n");
	gets(buffer);
}
	return 0;
}

⌨️ 快捷键说明

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