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

📄 buffer.c

📁 基于arm2410的一个简单的液晶屏驱动
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <linux/fb.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/mman.h>#include "font_8x16.h"#define FB_DEV "/dev/fb0"int fb_open(char *fb_device);int fb_close(int fd);void *fb_mmap(int fd,unsigned int screensize);int fb_munmap(void *start,size_t length);int fb_16pixel(unsigned char *fbmem,int width,int height,int x,int y,unsigned short color);void char_display(char ch,unsigned char *fbmem,unsigned int width,unsigned int height);int main(int argc,char *argv[]){	int fbdev;	char *fb_device;	unsigned char *fbmem;	unsigned int screensize;	unsigned int fb_width;	unsigned int fb_height;	unsigned int fb_depth;	unsigned int x;	unsigned int y;	if((fb_device = getenv("FRAMEBUFFER")) == NULL)	{		fb_device = FB_DEV;	}else printf("%s",fb_device);	fbdev = fb_open(fb_device);	fb_width = 1024;	fb_height = 768;	fb_depth = 16;	screensize = fb_width * fb_height *(fb_depth / 8);	fbmem = fb_mmap(fbdev,screensize);/*	fb_16pixel(fbmem,fb_width,fb_height,512,384,0xF100);	fb_16pixel(fbmem,fb_width,fb_height,511,384,0xF100);	fb_16pixel(fbmem,fb_width,fb_height,511,383,0xF100);	fb_16pixel(fbmem,fb_width,fb_height,512,383,0xF100);*/	char_display('7',fbmem,fb_width,fb_height);	fb_munmap(fbmem,screensize);	fb_close(fbdev);	return (0);}void char_display(char ch,unsigned char *fbmem,unsigned int width,unsigned int height){	int i,j,n;	unsigned char list;	n = ch * 16;	for(i = 0;i < 16;i++,n++)	{		list = fontdata_8x16[n];		for(j = 0;j < 8;j++)		{			if(list & 1 << (8 - j)){				fb_16pixel(fbmem,width,height,512 + 2 * j,384 + 2 * i, 0xF100);		//		fb_16pixel(fbmem,width,height,512 + 2 * j + 1,384 + 2 * i, 0xF100);		//		fb_16pixel(fbmem,width,height,512 + 2 * j,384 + 2 * i + 1, 0xF100);		//		fb_16pixel(fbmem,width,height,512 + 2 * j + 1,384 + 2 * i + 1, 0xF100);			}		}	}}int fb_open(char *fb_device){	int fd;	if((fd = open(fb_device,O_RDWR)) < 0)	{		perror(__func__);		return (-1);	}	return (fd);}void *fb_mmap(int fd,unsigned int screensize){	void*  fbmem;	if((fbmem = mmap(0,screensize,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0)) == MAP_FAILED)	{		perror(__func__);		return (void *)(-1);	}	return (fbmem);}int fb_munmap(void *start,size_t length){	return (munmap(start,length));}int fb_close(int fd){	return (close(fd));}int fb_16pixel(unsigned char *fbmem, int width,int height,int x,int y,unsigned short color){	if((x > width)||(y > height))		return (-1);	unsigned short *dst = ((unsigned short *)fbmem + y * width + x);	*dst = color;	return (0);}

⌨️ 快捷键说明

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