基于am3358的lcd输出
/*#include<stdio.h> */ #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <string.h> #include <linux/fb.h> #include <sys/mman.h> #include <sys/ioctl.h> #include <arpa/inet.h> //14byteÎÄŒþÍ· typedef struct { char cfType[2];//ÎÄŒþÀàÐÍ£¬"BM"(0x4D42) long cfSize;//ÎÄŒþŽóС£š×֜ڣ© long cfReserved;//±£Áô£¬ÖµÎª0 long cfoffBits;//ÊýŸÝÇøÏà¶ÔÓÚÎÄŒþÍ·µÄÆ«ÒÆÁ¿£š×֜ڣ© }__attribute__((packed)) BITMAPFILEHEADER; //__attribute__((packed))µÄ×÷ÓÃÊÇžæËß±àÒëÆ÷È¡Ïûœá¹¹ÔÚ±àÒë¹ý³ÌÖеÄÓÅ»¯¶ÔÆë //40byteÐÅϢͷ typedef struct { char ciSize[4];//BITMAPFILEHEADERËùÕŒµÄ×ÖœÚÊý long ciWidth;//¿í¶È long ciHeight;//žß¶È char ciPlanes[2];//Ä¿±êÉ豞µÄÎ»ÆœÃæÊý£¬ÖµÎª1 int ciBitCount;//ÿžöÏñËØµÄλÊý char ciCompress[4];//ѹËõ˵Ã÷ char ciSizeImage[4];//ÓÃ×֜ڱíÊŸµÄÍŒÏñŽóС£¬žÃÊýŸÝ±ØÐëÊÇ4µÄ±¶Êý char ciXPelsPerMeter[4];//Ä¿±êÉ豞µÄˮƜÏñËØÊý/Ã× char ciYPelsPerMeter[4];//Ä¿±êÉ豞µÄ޹ֱÏñËØÊý/Ã× char ciClrUsed[4]; //λ͌ʹÓõ÷É«°åµÄÑÕÉ«Êý char ciClrImportant[4]; //Öž¶šÖØÒªµÄÑÕÉ«Êý£¬µ±žÃÓòµÄÖµµÈÓÚÑÕÉ«Êýʱ£š»òÕßµÈÓÚ0ʱ£©£¬±íÊŸËùÓÐÑÕÉ«¶ŒÒ»ÑùÖØÒª }__attribute__((packed)) BITMAPINFOHEADER; typedef struct { unsigned short blue; unsigned short green; unsigned short red; unsigned short reserved; }__attribute__((packed)) PIXEL;//ÑÕɫģʜRGB BITMAPFILEHEADER FileHead; BITMAPINFOHEADER InfoHead; static char *fbp = 0; static int xres = 0; static int yres = 0; static int bits_per_pixel = 0; int showbmp2(); int main ( int argc, char *argv[] ) { int fbfd = 0; int index=0; struct fb_var_screeninfo vinfo; struct fb_fix_screeninfo finfo; long int screensize = 0; struct fb_bitfield red; struct fb_bitfield green; struct fb_bitfield blue; //open the showdeviece fbfd = open("/dev/fb0", O_RDWR); if (!fbfd) { printf("Error: cannot open framebuffer device.\n"); exit(1); } if (ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo)) { printf("Error£ºreading fixed information.\n"); exit(2); } if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo)) { printf("Error: reading variable information.\n"); exit(3); } printf("R:%d,G:%d,B:%d \n", vinfo.red, vinfo.green, vinfo.blue ); printf("%dx%d, %dbpp,%d clock\n", vinfo.xres, vinfo.yres, vinfo.bits_per_pixel,vinfo.pixclock ); xres = vinfo.xres; yres = vinfo.yres; bits_per_pixel = vinfo.bits_per_pixel; //ŒÆËãÆÁÄ»µÄ×ÜŽóС£š×֜ڣ© screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8; printf("screensize=%d byte\n",screensize); //¶ÔÏóÓ³Éä fbp = (char *)mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fbfd, 0); if ((int)fbp == -1) { printf("Error: failed to map framebuffer device to memory.\n"); exit(4); } printf("sizeof file header=%d\n", sizeof(BITMAPFILEHEADER)); printf("into show_bmp function\n"); showbmp2(); //ÉŸ³ý¶ÔÏóÓ³Éä munmap(fbp, screensize); // close(fbfd); return 0; } ///* unsigned char buf[3][1680*1050*4]; unsigned char data[640*480*3]; int showbmp2() { int x,y; int index=0; unsigned char *p; FILE *fp[3]; fp[0] = fopen("./000.bmp","rb+"); fp[1] = fopen("./111.bmp","rb+"); fp[2] = fopen("./222.bmp","rb+"); fread(data,54,1,fp[0]); fread(data,640*480*3,1,fp[0]); for(y=0;y<480;y++) { for(x=0;x<800;x++) { if(x<640) { buf[0][((479-y)*800+x)*4 + 0] = data[((y*640) + x)*3 + 0]; buf[0][((479-y)*800+x)*4 + 1] = data[((y*640) + x)*3 + 1]; buf[0][((479-y)*800+x)*4 + 2] = data[((y*640) + x)*3 + 2]; //buf[1][(479-y)*1680+x)*4 + 3] = data[((y*640) + x)*3 + 0]; } } } // fread(data,54,1,fp[1]); fread(data,640*480*3,1,fp[1]); for(y=0;y<480;y++) { for(x=0;x<1680;x++) { if(x<640) { buf[1][((479-y)*800+x)*4 + 0] = data[((y*640) + x)*3 + 0]; buf[1][((479-y)*800+x)*4 + 1] = data[((y*640) + x)*3 + 1]; buf[1][((479-y)*800+x)*4 + 2] = data[((y*640) + x)*3 + 2]; //buf[1][(479-y)*1680+x)*4 + 3] = data[((y*640) + x)*3 + 0]; } } } // fread(data,54,1,fp[2]); fread(data,640*480*3,1,fp[2]); for(y=0;y<480;y++) { for(x=0;x<1680;x++) { if(x<640) { buf[2][((479-y)*800+x)*4 + 0] = data[((y*640) + x)*3 + 0]; buf[2][((479-y)*800+x)*4 + 1] = data[((y*640) + x)*3 + 1]; buf[2][((479-y)*800+x)*4 + 2] = data[((y*640) + x)*3 + 2]; //buf[1][(479-y)*1680+x)*4 + 3] = data[((y*640) + x)*3 + 0]; } } } fclose(fp[0]); fclose(fp[1]); fclose(fp[2]); // while(1) { memcpy(fbp,buf[index%3],800*480*4); sleep(1); if(index++>100) break; } printf("/nover!/n"); return 0; }
基于am3358的lcd输出的更多相关文章
- [zz] 基于国家标准的 EndNote 输出样式模板
基于国家标准的 EndNote 输出样式模板 https://cnzhx.net/blog/endnote-output-style-cnzhx/ 发表于 2013-05-26 作者 Haoxian ...
- 基于FPGA的LCD+CMOS视频采集显示使用小结
基于FPGA的LCD+CMOS视频采集显示 液晶显示器采用扫描模式,RGB888 电源采用:+5V供电 usb供电有时候会出现供电不足的问题 显示器接口有两种选择:16bit或24bit 分别对应 ...
- [转]基于国家标准的 EndNote 输出样式模板 ----直接用endnote导入到word,不用自己一个个改参考文献了
EndNote 相当于一个数据库,将添加/导入的文献存档.需要引用文献的时候就从中选择一个插入到文档中,EndNote 会自动给你编号.在文档末尾建立相应的参考文献列表.但是各种杂志.单位要求的文献著 ...
- AM3358--Uboot支持LCD输出1024*768
1. uboot/include/lcd/tq3358_fb.h #define TFT240320 1 #define TFT320240 2 #define TFT480272 3//T43(天嵌 ...
- 基于am3358的蜂鸣器测试
#include <sys/ioctl.h> #include<stdio.h> #include <fcntl.h> #include <sys/types ...
- 基于am3358的led跑马灯测试
#include <sys/ioctl.h> #include<stdio.h> #include <fcntl.h> #include <sys/types ...
- 基于am3358的led跑马灯測试
#include <sys/ioctl.h> #include<stdio.h> #include <fcntl.h> #include <sys/types ...
- u-boot支持LCD显示(基于TQ2440)【转】
本文转载自:http://www.cnblogs.com/pengdonglin137/p/4633877.html u-boot支持LCD显示(基于TQ2440) 阅读目录(Content) 平 ...
- u-boot支持LCD显示(基于TQ2440)
平台简介 Linux版本:Linux-3.14 u-boot版本:u-boot-2015.04 硬件:TQ2440(内存:64MB NandFlash:256MB) 作者:彭东林 邮箱:pengdo ...
随机推荐
- ABP官方文档翻译 6.1.3 异常处理
处理异常 介绍 启用错误处理 Non-Ajax请求 显示异常 UserFriendlyException Error模型 AJAX请求 异常事件 介绍 此文档是与ASP.NET MVC和Web API ...
- vue2.0开发时导入组件时出错
导入自定义组件时出现了如下错误 ERROR Failed to compile with 1 errors 12:35:41 This dependency was not found: * comp ...
- 4.C++中的函数重载,C++调用C代码,new/delete关键字,namespace(命名空间)
本章主要内容: 1)函数重载 2)C++调用C代码 3)new/delete关键字实现动态内存分配 4)namespace命名空间 大家都知道,在生活中,动词和不同的名词搭配一起,意义都会大有不同,比 ...
- chrome无法登陆账号,显示操作超时的解决方案
起因 今天重装了下windows操作系统,准备登陆chrome浏览器,以同步各种插件(你懂的),结果是...无法登陆账号,显示操作超时,真是无语了. 碰到了这个问题第一个直觉是:FQ.突然想到如果修改 ...
- 二维码开源库ZBar-windows下编译和使用
源码 下载最新Zbar源码(http://zbar.sourceforge.net/),网站的WIKI是空白的,所以只能在源码包里找使用说明了,很遗憾Windows下怎么编译没说明,只是说明了Wind ...
- Nginx配置参数中文说明
#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debu ...
- MySQL统计函数记录——按月、按季度、按日、时间段统计
按年汇总,统计:select sum(mymoney) as totalmoney, count(*) as sheets from mytable group by date_format(col, ...
- eclipse设置git忽略文件
使用eclipse开发的程序员们经常会接触版本控制软件,这里只要说下eclipse使用egit的情况下设置忽略文件. 特此说明在这里使用window->team->ignored对于git ...
- hibhibernate中hql中的语句where语句查询List出现空
1.java.sql.Date 与 java.util.Date java.sql.Date是从java.util.Date中继承而来 假设 dates1(java.sql.Date)要赋值给date ...
- java11 - GUI图形用户界面编程
一.JavaSwing界面设计参考教程 二.布局管理器 三.绝对布局 import java.awt.Color; import java.awt.event.ActionEvent; import ...