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

📄 lcd_test.c

📁 S3C44B0X下的LCD (framebuffer)驱动资料与相关代码
💻 C
字号:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <linux/fb.h>

//#include "lcd.h"
//#include "lcd1.h"
//#include "lcd2.h"
//#include "lcd3.h"
#include "lcd4.h"

#define TRUE        1
#define FALSE       0

int main(int argc,char * *argv)
{
	int i,fbfd=0;
	struct fb_var_screeninfo vinfo;
	struct fb_fix_screeninfo finfo;
	long int screensize=0;
	unsigned char *fbp;
	printf("test lcd now\n");

	/*打开设备文件*/
//////////////////////////////////////////////////////////////////
	fbfd=open("/dev/fb0",O_RDWR);
	printf("###fbfd = %x###\n", fbfd);
	if(fbfd == -1)
	{
		printf("###Could not open lcd driver!###\n");
		return -1;
	}
       else printf("###lcd opened###\n");
	   
///////////////////////////////////////////////////////////////////
 	 printf("lcd ictol test\n");
	 if (-1 ==ioctl(fbfd,FBIOGET_FSCREENINFO,&finfo))
       {
              printf("ioctl FBIOGET_FSCREENINF error \n");
              return FALSE;
       }
	
	 if (-1 == ioctl(fbfd,FBIOGET_VSCREENINFO,&vinfo))
       {
              printf("ioctl FBIOGET_VSCREENINF error \n");
              return FALSE;
       }
        printf("###lcd ictol worked normally###\n");
///////////////////////////////////////////////////////////////////

	/*计算屏幕缓冲区大小*/
	screensize=vinfo.xres*vinfo.yres*vinfo.bits_per_pixel/8;
        printf("screensize=%d\n",screensize);
///////////////////////////////////////////////////////////////////

	/*映射屏幕缓冲区到用户地址空间*/
       fbp=(unsigned char *)mmap(0,screensize, PROT_READ | PROT_WRITE, 0, fbfd, 0);
       printf("fbp=0x%x\n",fbp);
	memset(fbp, 0, screensize);
	
	/*通过fbp访问缓冲区,进行图形绘*/
	/*printf("sizeof(acLuigi)=%d;sizeof(fbp)=%d\n",sizeof(acLuigi),sizeof(fbp));
	memcpy(fbp,acLuigi,screensize);
	printf("delay some seconds\n");
	sleep(6);
	
	printf("clear screen \n");
	memset(fbp, 0, screensize);
	sleep(6);
	
       printf("display flower\n");
	memcpy(fbp,acLuigiflower,screensize);
	printf("delay some seconds\n");
	sleep(6);

	printf("clear screen \n");
	memset(fbp, 0, screensize);
	sleep(6);

	printf("display girl \n");
	memcpy(fbp,acLuigigirl,screensize);
	printf("delay some seconds\n");
	sleep(6);

	printf("clear screen \n");
	memset(fbp, 0, screensize);
	sleep(6);

	printf("display sohu \n");
	memcpy(fbp,acLuigisohu,screensize);
	printf("delay some seconds\n");

*/



/*

	printf("clear screen \n");
	//memset(fbp, 0, screensize);
	printf("display girl1\n");
	memcpy(fbp,gImage_lcd2,38166);
	printf("delay some seconds\n");
	sleep(6);

	printf("clear screen \n");
	//memset(fbp, 0, screensize);
	printf("display girl2\n");
	memcpy(fbp,gImage_lcd3,38166);
	printf("delay some seconds\n");
	sleep(6);

	printf("clear screen \n");
	//memset(fbp, 0, screensize);
	printf("display girl3\n");
	memcpy(fbp,gImage_lcd4,38166);
	printf("delay some seconds\n");
	sleep(6);

	*/
		
	printf("clear screen \n");
	//memset(fbp, 0, screensize);
	printf("display girl4\n");

	for(i=0;i<240;i++)
	memcpy(fbp+i*640,gImage_lcd4+i*159,159);
	printf("delay some seconds\n");
	sleep(6);
	
	
	//sleep(30);

///////////////////////////////////////////////////////////////////////        
	printf("OK!!!!!!!!!!!!!!!$$$seu--:-)\n");
      // munmap(fbp,screensize); 
 	close(fbfd);
	
	return 0;
}



⌨️ 快捷键说明

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