效果图:
终端编译:
图片信息:
代码:
#include#include #include #include #include #include int main(int argc , char **argv) { int x , y ; unsigned int fd_lcd = open("/dev/ubuntu_lcd",O_RDWR); if(fd_lcd < 0) { perror("open lcd error"); return -1 ; } int fd_bmp1 = open("1.bmp",O_RDWR); int fd_bmp2 = open("2.bmp",O_RDWR); int fd_bmp3 = open("3.bmp",O_RDWR); int fd_bmp4 = open("4.bmp",O_RDWR); if(fd_bmp1 < 0 || fd_bmp2 < 0 || fd_bmp3 < 0 || fd_bmp4 <0) { perror("open bmp error"); return -1 ; } unsigned int *p1 = mmap(NULL,800*480*4,PROT_READ|PROT_WRITE,MAP_SHARED,fd_lcd,0); if(p1 == NULL) { perror("mmap error"); return -1 ; } unsigned char rgb1[400*240*3] ; unsigned char rgb2[400*240*3] ; unsigned char rgb3[400*240*3] ; unsigned char rgb4[400*240*3] ; lseek(fd_bmp1,54,SEEK_SET); lseek(fd_bmp2,54,SEEK_SET); lseek(fd_bmp3,54,SEEK_SET); lseek(fd_bmp4,54,SEEK_SET); read(fd_bmp1,rgb1,400*240*3); read(fd_bmp2,rgb2,400*240*3); read(fd_bmp3,rgb3,400*240*3); read(fd_bmp4,rgb4,400*240*3); unsigned int i = 0 ; for(y=239;y>=0;y--) { for(x=0;x<400;x++) { *(p1+x+800*y) = (rgb1[i+2]<<16)|(rgb1[i+1]<<8)|(rgb1[i]) ; i = i + 3 ; } } i = 0 ; for(y=239;y>=0;y--) { for(x=400;x<800;x++) { *(p1+x+800*y) = (rgb2[i+2]<<16)|(rgb2[i+1]<<8)|(rgb2[i]) ; i = i + 3 ; } } i = 0 ; for(y=479;y>=240;y--) { for(x=0;x<400;x++) { *(p1+x+800*y) = (rgb3[i+2]<<16)|(rgb3[i+1]<<8)|(rgb3[i]) ; i = i + 3 ; } } i = 0 ; for(y=479;y>=240;y--) { for(x=400;x<800;x++) { *(p1+x+800*y) = (rgb4[i+2]<<16)|(rgb4[i+1]<<8)|(rgb4[i]) ; i = i + 3 ; } } munmap(p1,800*480*4); close(fd_lcd); close(fd_bmp1); close(fd_bmp2); close(fd_bmp3); close(fd_bmp4); return 0 ; }



