示例#1
0
文件: test.c 项目: celebro/os2010rk
int main(){
	printf("Get display\n");

	display = get_display();

	if (display == NULL) {
		printf("Failed to get display\n");
		return -1;
	}

	//lcd_load_bmp("blani.bmp", display);
	lcd_load_bmp("blani.bmp", display);
	getc(stdin);
	lcd_set_bmp(0,0,display);
	getc(stdin);

	lcd_backlight(LCD_OFF, display);
	getc(stdin);
	lcd_backlight(LCD_ON, display);
	getc(stdin);
	lcd_sleep(LCD_ON, display);
	getc(stdin);
	lcd_sleep(LCD_OFF, display);
	getc(stdin);
	lcd_onoff(LCD_OFF, display);
	getc(stdin);
	lcd_onoff(LCD_ON, display);
	getc(stdin);

	printf("Lcd rect\n");
	lcd_set_rect(20, 20, 50, 50, NOFILL, WHITE, display);
	getc(stdin);
	lcd_set_rect(20, 60, 50, 90, NOFILL, RED, display);
	getc(stdin);
	lcd_set_rect(60, 20, 90, 50, NOFILL, BLUE, display);
	getc(stdin);
	lcd_set_rect(60, 60, 90, 90, NOFILL, ORANGE, display);
	getc(stdin);
//	printf("Lcd pixel\n");
//	lcd_set_pixel(100, 100, WHITE, display);

	lcd_set_line(2,0, 20, 78, RED, display);
	getc(stdin);
	lcd_set_line(30,19, 98, 34, BLUE, display);
	getc(stdin);
	lcd_set_line(129,129, 20, 60, GREEN, display);
	getc(stdin);
	lcd_put_str("Test str 1\n", 10, 10, SMALL, YELLOW, display);
	getc(stdin);
	lcd_put_str("Test str 2\n", 30, 10, MEDIUM, GREEN, display);
	getc(stdin);
	lcd_put_str("Test str 3\n", 50, 10, LARGE, ORANGE, display);
	getc(stdin);

	printf("Release display\n");
	release_display(display);
}
示例#2
0
文件: tvout.c 项目: mrtos/dv3251
//dst_w,为TVOUT 输出 的宽
//dst_h,为TVOUT 输出 的高
//tvout mode 有三种,1:lcd ,2: ntsc ,3:pal  分别对应不同模式的输出大小设置ã€?
//=====
void tvout_display_set(int src_x,int src_y,int src_span, int src_w, int src_h,int dst_w,int dst_h)
{

	u32 w_step = src_w*0x100/dst_w;
	u32 w_remain = src_w*0x100 - dst_w * w_step;
	u32 h_step = src_h*0x100/dst_h;
	u32 h_remain = src_h*0x100 - dst_h * h_step;

	 
	u32 burst = 2;

	if(TVOUT_MODE_LCD == tvout_get_cur_mode())		//lcd
	{
		#if (0 == LCD_MCU)
		//set rgb window
		REG32(LCDCON19) = 0+REG32(LCDCON9);
		REG32(LCDCON20) = 0+REG32(LCDCON13);
		REG32(LCDCON21) = dst_w+REG32(LCDCON9)-1;
		REG32(LCDCON22) = dst_h+REG32(LCDCON13)-1;
		lcd_set_line(src_span*2);						//set line
		#else
		//set mcu window
		REG32(LCDCON19) = 0;
		REG32(LCDCON20) = 0;
		REG32(LCDCON21) = dst_w-1;
		REG32(LCDCON22) = dst_h-1;
		lcd_set_line(src_span*2);						//set line
		#endif
	}
	else											//tvout 
	{
		//set window
		REG32(LCDCON19) = 0;
		REG32(LCDCON20) = 0;
		REG32(LCDCON21) = dst_w;
		REG32(LCDCON22) = dst_h;
		REG32(LCDCON48) = src_span*2;					//set line

	}


	REG32(LCDCON49) = w_step;    //W_step
	REG32(LCDCON50) = w_remain;  //W_remain
	REG32(LCDCON51) = h_step;    //H_step
	REG32(LCDCON52) = h_remain;  //H_remain
	
	REG32(LCDCON53) = dst_w;  //D_w
	REG32(LCDCON54) = dst_h;  //D_h
	REG32(LCDCON55) = src_w;  //S_W
	REG32(LCDCON56) = src_h;  //S_H
	REG32(LCDCON59) |= (burst<<6);

	return;
}
示例#3
0
void demo_line() {
	printf("Demo line\n");

	int i;
	char key;

	int coord[15][5] =
	{
		{ 20, 110, 110, 110, GREEN},
		{ 20, 110, 40, 90, GREEN},
		{ 110, 110, 90, 90, GREEN},
		{ 40, 90, 90, 90, GREEN},
		{ 80, 90, 80, 20, BLUE},
		{ 80, 20, 50, 20, BLUE},
		{ 50, 20, 50, 43, BLUE},
		{ 47, 44, 53, 44, YELLOW},
		{ 47, 45, 53, 45, YELLOW},
		{ 47, 46, 53, 46, YELLOW},
		{ 47, 47, 53, 47, YELLOW},
		{ 50, 48, 50, 66, RED},
		{ 40, 56, 60, 56, RED},
		{ 50, 66, 40, 75, RED},
		{ 50, 66, 60, 75, RED}
	};

	clear_screen();
	for (i = 0; i < 15; i++) {
		lcd_set_line(coord[i][1], coord[i][0], coord[i][3], coord[i][2], coord[i][4], display);
		key = get_key();
		if (key == QUIT)
			return;
	}

}
示例#4
0
static inline void lcd_set_data (lcd_t * lcd, unsigned char data)
{
	ARM_GPIOE->DATA |= (1 << PORTE_RS);
	LCD_REG = data;
	//udelay (1);
	
	lcd->new_line = 0;
	if (++lcd->col == 20) {
		lcd->new_line = 1;
		lcd->line = (lcd->line + 1) & 3;
		lcd_set_line (lcd, lcd->line);
	}
}
示例#5
0
static void lcd_putchar (lcd_t *lcd, short c)
{
	int i;
	
	switch (lcd->esc_mode)  {
	case 0:
		if (! lcd->unicode_char) {
			switch (c) {
			case '\n':
				if (lcd->new_line) {
					lcd->new_line = 0;
					return;
				}
				for (i = lcd->col; i < 20; ++i)
					lcd_set_data (lcd, ' ');
				//lcd->line = (lcd->line + 1) & 3;
				//lcd_set_line (lcd, lcd->line);
				return;
			case '\t':		/* tab replaced by space */
				c = ' ';
				break;
			case '\r':		/* carriage return - go to begin of line */
				lcd_set_line (lcd, lcd->line);
				return;
			case '\33':
				lcd->esc_mode = 1;
				return;
			case '&':
				c = 0xB0;
				break;
			case 0xD0:
			case 0xD1:
				lcd->unicode_char = c;
				return;
			}
		} else {
			c = translate_russian (lcd, c);
			lcd->unicode_char = 0;
		}
	break;
	
	case 1:
		if (c == '[') {
			lcd->esc_mode = 2;
			return;
		} else {
			lcd->esc_mode = 0;
		}
	break;
	
	case 2:
		if (c == 'H') {
			lcd_command (LCD_CMD_CURSOR_HOME);
			lcd->line = 0;
			lcd->col = 0;
			lcd->esc_mode = 0;
			return;
		} else if (c == '2') {
			lcd->esc_mode = 3;
			lcd->esc_buf = c;
			return;
		} else {
			lcd_set_data (lcd, '[');
			lcd->esc_mode = 0;
		}
	break;
	
	case 3:
		if (c == 'J') {
			lcd_command (LCD_CMD_CLEAR_DISPLAY);
			lcd->line = 0;
			lcd->col = 0;
			lcd->esc_mode = 0;
			return;
		} else {
			lcd_set_data (lcd, '[');
			lcd_set_data (lcd, lcd->esc_buf);
			lcd->esc_mode = 0;
		}
	break;
	default:
		lcd->esc_mode = 0;
	break;
	}
	
	lcd_set_data (lcd, c);
}