📄 lcd_test.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 + -