// 清屏 void lcd_clear_screen(int color) { #if 0 int i, j; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { lcd_draw_pixel(i, j, color); } } #endif #if 0 int i; unsigned short * pixel = (unsigned short *)FRAME_BUFFER; for (i = 0; i < ROW * COL; i++) { *(pixel + i) = color; } #endif int i; unsigned long * pixel = (unsigned long *)FRAME_BUFFER; color = color | (color << 16); for (i = 0; i < ROW * COL / 2; i++) { *(pixel + i) = color; } }
void lcd_draw_hline(int row, int col1, int col2, int color) { int j; for (j = col1; j <= col2; j++) lcd_draw_pixel(row, j, color); }
// 划竖线 void lcd_draw_vline(int col, int row1, int row2, int color) { int i; // 描第i行,第col列 for (i = row1; i <= row2; i++) lcd_draw_pixel(i, col, color); }
void lcd_draw_bmp(int bmp_file_addr) { int i, j; char * p = (char *)bmp_file_addr; int blue, green, red; int color; // read bmp file // bmp file header is 54 bytes p += 54; for (i = 0; i < 272; i++) for (j = 0; j < 480; j++) { blue = *p++; green = *p++; red = *p++; color = red << 16 | green << 8 | blue << 0; lcd_draw_pixel(271-i, j, color); } return; }
void lcd_clear_screen(int color) { int i, j; for (i = 0; i < ROW; i++) for (j = 0; j < COL; j++) lcd_draw_pixel(i, j, color); }
int mymain(void) { char * p = (char *)BMP_ADDR; char red, blue, green; int color; int i, j; puts("vga init\n"); vga_init(); puts("lcd init\n"); lcd_init(); lcd_clear_screen(0x000000); // black puts("lcd draw line\n"); lcd_draw_hline(100, 100, 640-100, 0xff0000); // red lcd_draw_hline(200, 100, 640-100, 0x00ff00); // green lcd_draw_hline(300, 100, 640-100, 0x0000ff); // blue lcd_draw_hline(400, 100, 640-100, 0xffffff); // white lcd_draw_vline(640/2, 50, 480-50, 0xffffff); // white #define POS 50 #define HALF 20 lcd_draw_cross(POS, POS, HALF); lcd_draw_cross(POS, 640-POS, HALF); lcd_draw_cross(480-POS, POS, HALF); lcd_draw_cross(480-POS, 640-POS, HALF); //while (1); // show BMP file // read bmp file // bmp file header is 54 bytes p += 54; for (i = 0; i < 272; i++) for (j = 0; j < 480; j++) { blue = *p++; green = *p++; red = *p++; color = red << 16 | green << 8 | blue << 0; lcd_draw_pixel(272-i, j, color); } while (1); return 0; }
void lcd_draw_vline(int col, int row1, int row2, int color) { int i; for (i = row1; i <= row2; i++) { lcd_draw_pixel(i, col, color); } return; }
void lcd_clear_screen(int color) { int i, j; for (i = 0; i < (LINEVAL+1); i++) for (j = 0; j < (HOZVAL+1); j++) { lcd_draw_pixel(i, j, color); } return; }
void lcd_draw_bmp_eff2(int bmp_addr) { char * p = (char *)bmp_addr; int color; int i, j; // bmp file header is 54 bytes p += 54; for (j = 0; j <= COL/2; j++) for (i = 0; i < ROW; i++) { color = get_bmpfile_color(i, j, p); lcd_draw_pixel(ROW-i, j, color); color = get_bmpfile_color(i, COL-j, p); lcd_draw_pixel(ROW-i, COL-j, color); } return; }
void mandel(float cx, float cy, float scale) { int x, y; int change = 0; for (x = -120; x < 120; x++) { for (y = -160; y < 160; y++) { int i = iterate(cx + x*scale, cy + y*scale); if (i >= max_iter) { i = max_iter; } else { change++; } lcd_draw_pixel(x+120, y+160, lcd_colors[i]); } } }
void lcd_draw_bmp_eff3(int bmp_addr) { char * p = (char *)bmp_addr; int color; int i, j; double k = 0; // bmp file header is 54 bytes p += 54; //for (k = 0; k < 1; k += 0.1) k = 0.5; for (i = ROW/2 - ROW*k/2; i < ROW/2 + ROW*k/2; i++) for (j = COL/2-COL*k/2; j < COL/2 + COL*k/2; j++) { color = get_bmpfile_color(i, j, p); lcd_draw_pixel(ROW-i, j, color); } return; }
int mymain(void) { char * p = (char *)BMP_ADDR; char red, blue, green; int color; int i, j; vga_init(); lcd_init(); lcd_clear_screen(0x000000); // black draw_xy(0, 0, 0xff0000); draw_xy(0, 200, 0x00ff00); draw_xy(300, 0, 0x0000ff); for (i = -320; i < 320; i++) for (j = -240; j < 240; j++) { double x, y; int color = 0xff0000; x = (double)i / (double)150; y = (double)j / (double)150; color = get_fratal(x, y); draw_xy(i, j, color); //printf("i = %d, j = %d, color = %d \n", i, j, color); } while(1); lcd_draw_hline(100, 100, 640-100, 0xff0000); // red lcd_draw_hline(200, 100, 640-100, 0x00ff00); // green lcd_draw_hline(300, 100, 640-100, 0x0000ff); // blue lcd_draw_hline(400, 100, 640-100, 0xffffff); // white lcd_draw_vline(640/2, 50, 480-50, 0xffffff); // white #define POS 50 #define HALF 20 lcd_draw_cross(POS, POS, HALF); lcd_draw_cross(POS, 640-POS, HALF); lcd_draw_cross(480-POS, POS, HALF); lcd_draw_cross(480-POS, 640-POS, HALF); //while (1); // show BMP file // read bmp file // bmp file header is 54 bytes p += 54; for (i = 0; i < 272; i++) for (j = 0; j < 480; j++) { blue = *p++; green = *p++; red = *p++; color = red << 16 | green << 8 | blue << 0; lcd_draw_pixel(272-i, j, color); } while (1); return 0; }
void draw_xy(int x, int y, int color) { lcd_draw_pixel(480-(y+240), x+320, color); }