嵌入式实训(改)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于嵌入式Linux智能色盲检测系统的报告书电气工程1401小组成员:谢富(负责程序编写及调试)彭思源(负责PPT的制作)2017.12.25---12.29制作项目技术背景嵌入式系统:是一种专用的计算机系统,作为装置或设备的一部分,从应用对象上定义就是软件硬件的综合体。以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积等严格要求的专用计算机系统。是企业电子产品生产的重要组成。Linux:Linux操作系统是自由软件和开放源代码发展中最著名的例子。Linux作为较早的源代码开放操作系统,将引领未来软件发展的方向。Linux的基本思想有两点:第一、一切都是文件;第二、每个软件都有确定的用途,同时它们都尽可能被编写得更好。由于Linux开放源码的特性,越来越多大中型企业及政府投入更多的资源来开发Linux。现今世界上,很多国家逐渐的把政府机构内部门的电脑转移到Linux上,这个情况还会一直持续。Linux的广泛使用为政府机构节省了不少经费,也降低了对封闭源码软件潜在的安全性的忧虑。开发平台硬件开发平台:arm开发板(gec210)PC机软件开发平台:代码编辑器(SourceInsight)代码编译器(gcc)Linux操作系统(ubuntu(标准教学系统)---自带gcc编译器、开源的)虚拟机(VMware-workstation-full-10.0.3---用来运行Linux操作系统)查看查看查看查看查看制作项目的过程项目基本开发流程第一天:一、了解嵌入式实训的软硬件开发平台以及组成部分。二、用VMWARE启动Linux操作系统;熟悉Linux操作系统--LINUX命令,编译检查判断是否是质数,素数的程序。第二天:一、编写打印HELLOWORLDC语言程序二、了解嵌入式ARM开发板(gec210)三、嵌入式LIXNU开发中的开发板(gec210)使用四、在Linux下,用C语言进行文件操作,在开发版中绘制一个圆形图片。第三天:一、基于第二天绘制圆形图片的基础上,使开发板在LCD上每间隔3秒钟,分别点亮红、绿、蓝三种基色。第四天:一、新建一个.c文件,运用内存映射的原理,将自己绘制或者下载一个宽800,高480一个图片,在LCD上显示第五天:一、基于在LCD显示静态图的基础上,编程实现多张图片随机显示功能!项目实现流程在PC上编辑程序下载程序、图片到开发板程序运行头文件项目代码分析#includestring.h#includefcntl.h#includesys/stat.h#includestdlib.h#includestring.h#includesys/ioctl.h源程序intlcd_fd;int*lcd_memary;//1、打开lcd(包括打开lcd、映射)voidopen_lcd(){//打开lcd显示屏lcd_fd=open(/dev/fb0,O_RDWR);//映射----开辟一个通道lcd_memary=(int*)mmap(NULL,//要映射的空间的首地址800*480*4,//要申请多大的空间PROT_READ|PROT_WRITE,//内容可以被读取和写入MAP_SHARED,//共享内存lcd_fd,//要映射的文件描述符----0);}//打开bmp图片,写到lcd中----把显示图片的嗲吗封装称为一个函数---以后要画图就调用这个函数intdraw_bmp(char*pathname)//pathname要显示的图片的名{inti,j;//用来做for循环的变量ijintcolor;//存储颜色的变量charblue,green,red;//暂时存储单个颜色的变量charbmp_data[800*480*4]={0};//用来存储从图片读取到的颜色数据的数组charbmp_info[54]={0};//用来存储从图片读取到信息的数组//打开图片intbmp_fd=open(pathname,O_RDWR);if(bmp_fd0)//图片打开失败{perror(openbmperror);return-1;}//读取54字节的头信息read(bmp_fd,bmp_info,54);//获取图片宽度intbmp_width=bmp_info[18];bmp_width|=bmp_info[19]8;printf(bmp_width=%d\n,bmp_width);//获取图片高度intbmp_height=bmp_info[22];bmp_height|=bmp_info[23]8;printf(bmp_height=%d\n,bmp_height);//类型获取图片类型intbmp_type=bmp_info[28];bmp_type|=bmp_info[29]8;printf(bmp_type=%d\n,bmp_type);//读取颜色数据read(bmp_fd,bmp_data,800*480*4);char*p=bmp_data;//用一个指针来指向存储了图片颜色数据的数组首地址---接下从这里一个字节一个字节的读取颜色数据整合到color中然后写到lcd中//3、把图片颜色数据写到lcd中for(i=479;i》=0;i--)//一共有480行每循环一次就写完一行数据{for(j=0;j800;j++)//每一行中有800个像素点每循环一次就写完800个像素点{blue=*p++;//把蓝色数据暂时存储到blue变量中green=*p++;//把绿色数据暂时存储到green变量中red=*p++;//把蓝红色数据暂时存储到red变量中//判断bmp图片是24位的还是32位的,如果是32位的就跳过透明明度Aif(bmp_type==32){p++;}//把三种颜色组合到一起color=blue|green8|red16;//然后写到lcd中*(lcd_memary+i*800+j)=color;}}}//4、关闭lcdvoidlcd_close(void){/*取消内存映射*/munmap(lcd_memary,800*480*4);/*关闭LCD设备*/close(lcd_fd);}intpic_count=0;//保存所有图片的张数charpic_name[100][256];//图片的名字picname[0]:第0张图片的名字intmain(){//打开lcdopen_lcd();DIR*d=opendir(/);if(d==NULL){perror(opendirfail);return-1;}while(1){structdirent*p=readdir(d);/*一次只能读一个目录项*/if(p==NULL){break;intlen=strlen(p-d_name);//p-d_name当前读到的目录项的文件名//p-d_name==bmperror!!!!!!!!!!!!!!/*输出所有以.bmp结尾的文件名*/if(len4&&p-d_name[len-1]=='p'&&p-d_name[len-2]=='m'&&p-d_name[len-3]=='b'&&p-d_name[len-4]=='.'){strcpy(pic_name[pic_count],p-d_name);//把查找到文件名保存到picname[count]中pic_count++;printf(thelengthis%d,thenameis%s\n,len,p-d_name);//dir.c}}closedir(d);srand(time(NULL));//设置随机数的种子值while(1){draw_bmp(pic_name[rand()%pic_count]);//随机打开图片sleep(3);}//关闭lcdlcd_close();return0;}制作项目的过程(截图)总结感谢学校和粤嵌公司给我们提供宝贵的嵌入式系统培训的机会。本次实习是我们第一次接触嵌入式,通过本次实习,我们学习和了解到了嵌入式在生活中的重要作用和发展过程,由于时间原因,我们学到的知识只是嵌入式学习的冰山一角,但它为我们打开了一扇通向新知识领域的窗户,提高了我们认知一个新事物的能力,熟悉Linux系统下的嵌入式编程,也积累了自己的软件编写经验。在设计的过程中,通过老师的讲解和组员的不断摸索,在提高自己动手能力的同时也培养了我们的思维能力,相信这在我们以后的学习和工作中都起着非常重要的的作用。ENDTHANKYOUFORWATCHINGARM开发板返回代码编辑器返回代码编译器界面返回Linux操作系统界面返回虚拟机返回

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功