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); }
//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; }
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; } }
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); } }
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); }