数码相框1.doc_第1页
数码相框1.doc_第2页
数码相框1.doc_第3页
数码相框1.doc_第4页
数码相框1.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内蒙古工业大学信息工程学院嵌入式系统综合设计说明书题 目: 电子相框学生姓名: 郭伟组 别: 第四组学 院: 信息工程学院班 级: 计07-3指导教师: 刘志强 王小强 邢文朋 郭文茂 二O一O 年 十二 月 十三 日目录设计任务与要求1设计功能1设计思路1软件设计2源程序清单与注释2图片特效函数文件清单2Main文件程序清单4调试过程6实验步骤6出现问题6解决方法6体会7设计任务与要求设计功能该课程设计的主要内容是:在linux(ubuntu版本)嵌入式系统下利用C语言开发一个具有多样式动态特效的电子相框,要求对图片或文字的效果处理。设计思路在应用程序中,先用 FrameBuffer设备(/dev/fb0)映射到进程地址空间(即:锁定屏幕各像素点),再进行 mmap 系统调用进行地址映射(在屏幕上打点),随后用 memset 将屏幕清空。通过freetype库中函数的font可设置和控制字体样式,采用jpeg-8算法解压缩图片。采用C语言的过程设计方法来实现流程的控制和实现图片特效设计。使用回调函数实现图片的动态循环调用,并利用双缓存技术实现图片显示的优化,以提高效率,消除图片显示时因为不同步所导致的抖动现象。软件设计源程序清单与注释图片特效函数文件清单#include #include #include #include #include #include #include #include common.h#define DEBUG 0#if DEBUG#endif/点到圆int display_jpeg4(char *filename, fb_info fb_inf)fb_info jpeg_inf;u8_t *buf24 = decode_jpeg(filename, &jpeg_inf);u8_t * scale_buf = scale24(buf24, fb_inf, jpeg_inf);u32_t *buf32 = rgb24to32(scale_buf, fb_inf);int i;int j;int k;int x=fb_inf.w/2;int y=fb_inf.h/2;int r=0;for(i = 0; i fb_inf.h; +i)for (j = 0; j fb_inf.w; +j)fb_pixel(fb_inf, j, i, 0x050505);while(r=x;i-)for(j=y;j=y-r;j-)k=(x-i)*(x-i)+(y-j)*(y-j);if(r*r=k)fb_pixel(fb_inf,i, j, buf32i + j * fb_inf.w);for(i=x-r;i=y-r;j-)k=(x-i)*(x-i)+(y-j)*(y-j);if(r*r=k)fb_pixel(fb_inf,i, j, buf32i + j * fb_inf.w);for(i=x-r;i=x;i+)for(j=y;j=k)fb_pixel(fb_inf,i, j, buf32i + j * fb_inf.w);for(i=x+r;i=x;i-)for(j=y;j=k)fb_pixel(fb_inf,i, j, buf32i + j * fb_inf.w);r=r+2;usleep(2000);usleep(1000);free(buf24);free(scale_buf);free(buf32);return 0;/由两边向中间靠拢int display_jpeg12(char *filename,fb_info fb_inf)fb_info jpeg_inf;u8_t *buf24=decode_jpeg(filename,&jpeg_inf);u8_t *scale_buf=scale24(buf24, fb_inf,jpeg_inf);u32_t *buf32=rgb24to32(scale_buf,fb_inf);int i,j,k;int a=fb_inf.h/2;int b=fb_inf.w/2;for(i= 0; i fb_inf.h; +i)for (j = 0; j 0;k-)for(j=b-k;jb+k;j+) fb_pixel(fb_inf,j,a-k,buf32j+(a-k)*fb_inf.w);for(i=a-k;i=b-k;j-) fb_pixel(fb_inf,j,a+k-1,buf32j+(a+k-1)*fb_inf.w);for(i=a+k-1;i=a-k;i-) fb_pixel(fb_inf,b-k,i,buf32b-k+i*fb_inf.w);usleep(1000);free(buf24);free(scale_buf);free(buf32);return 0;Main文件程序清单#include #include #include #include #include #include common.hint main(int argc, char *argv) char * filename;void * node;char fullname256;if (argc 2)argv1 = test.jpg;fb_info fb_inf;if (init_fb(&fb_inf) 0)fprintf(stderr, Error initial framebuffern);return 1;#if 1if (init_ft(mao.ttf, 0) != 0)fprintf(stderr, Error initial fontn);return 1;#endifinit_link(image);node = get_first_node();int count=0;while(node)node = get_next(node);filename = get_node_name(node);strcpy(fullname, image/);switch(count%2) case 1:display_jpeg_su1(strcat(fullname,filename), fb_inf);break;case 2:display_jpeg_su2(strcat(fullname,filename), fb_inf);break; count+; if(count =10) count = 0;munmap(fb_inf.fbmem, fb_inf.w * fb_inf.h * fb_inf.bpp / 8);return 0;调试过程实验步骤进入linux环境,并启动一个终端实例:1. 将文件freetype-2.3.11.tar.bz2解压,在终端中输入命令,使其转换到刚被解压的目录下,输入命令./configure,检查文件是否缺失,然后输入make命令。2. 将文件jpegsrc.v8.tar.gz解压,在终端中输入命令,使其转换到刚被解压的目录下,输入命令./configure,检查文件是否缺失,然后输入make命令。3. 将文件src-teach.tar.gz解压,在终端中输入命令。4. 修改src-teach文件夹中的文件disp-jpeg.c的内容,将设计的图片特效函数添加进去。使其转换到刚被解压的目录下,输入命令source dpf.sh创建一个新进程,然后输入命令make(使GCC编译器对MAKEFILE文件进行编译、链接处理)并回车。输入./main即可执行程序。出现的问题1 在显示时还能看到上一种效果的痕迹 2程序运行中出现段错误,是由于超出屏幕可显示范围。3回调函数问题的理解及运用。解决的方法1在每个显示后加刷黑屏 2出现段错误的原因是程序中所要打印的像素点超出了图片的像素范围。浮点数错误重要是因为所定义的数据类型在程序执行中产生了越界问题。 3回调函数实际上就是在调用某个函数(通常是API函数)时,将自己一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数。体会 通过本次实习,让我真正的认识到合作和分工的重要性。在实习的过程中,在大家的共同努力下实现了一个又一个的效果,我们感觉到很欣慰,展现在我们面前的劳动成果有:圆形,百叶窗,三角形等。通过这次实习,我们熟悉了LINUX下的编程,熟悉了嵌入式开发的过程,也复习了C语言的一些知识,真是不虚此行。用 C语言(高级语言中的较低端语言) 写的程序执行速度很快。 C 是所有版本的UNIX上的系统语言。通过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论