ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:6.34MB ,
资源ID:17652227      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17652227.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(硬件综合课程设计论文Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

硬件综合课程设计论文Word文档格式.docx

1、学生进行分组并选定课程设计题目,教师指导学生根据选定题目准备资料;22012年6月6日2012年6月8日,设计小组进行总体方案设计和任务分工;每人完成自己承担的程序模块并通过独立编译;32012年6月11日2012年6月12日,设计小组将各模块集成为一个完整的系统,教师检查完成情况,并作相应指导;4. 2012年6月13日2012年6月14日,设计小组准确完成系统的设计、编译与运行,并撰写课程设计报告;5. 2012年6月15日,验收、修订课程设计报告、答辩及总结。四、基本要求1学生查阅相关资料,在师指导和自学两种方法下学习具体课题中涉及到的新知识,熟练掌握待设计的系统所涉及到的所有知识点。2

2、学生在老师的指导下,能够写出相应的源程序代码,采用结构化、模块化程序设计方法,功能要完善,界面要美观。3所设计的系统原则上要能够运行无误,结果准确。学生能够最终将系统所要实现的功能演示出来。4最后经验收合格后,按要求写出课程设计报告,并于设计结束后1周内提交。 教研室主任签名:年 月 日目 录一 概述 11.1简介 11.2课程设计的目的 11.3 课程设计的要求 21.4 背景知识 2二 总体方案设计 52.1总体设计思路 52.2算法设计思想 52.3程序流程图 62.4程序设计特点 7三 详细设计 83.1算法描述 83.1.1 解码并识别图片 83.1.2 像素点的显示 103.1.3

3、 图片显示方式 113.1.4 主函数设计 13四 程序的调试与运行结果说明 144.1Linux系统的常用命令说明 144.2代码调试 154.3运行步骤结果 164.3.1运行步骤 164.3.2 运行结果 17五 课程设计总结 20参考文献 22一 概述1.1简介嵌入式 Linux是以Linux为基础的嵌入式作业系统,它被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及航空航天等领域中。嵌入式系统出现于60年代晚期,它最初被用于控制机电电话交换机,如今已被广泛的应用于工业制造、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等众多领域。计

4、算机系统核心CPU,每年在全球范围内的产量大概在二十亿颗左右,其中超过80%应用于各类专用性很强的嵌入式系统。一般的说,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参

5、考和移植,实时性能RT_Linux Hardhat Linux 等嵌入式Linux支持,实时性能稳定性好安全性好。Linux操作系统具有相当多的优点,他的内核稳定、功能强大、支持多种硬件平台、源代码完全开放,可裁减和低成本的特性非常适合于嵌入式应用,并且Linux本身直接提供完整的TCP/IP协议,可非常方便地进行网络应用。但Linux内核本身不具备强实时性,且内核体积较大,而且嵌入式系统的硬件资源有限,因此把Linux用于嵌入式系统,必须对Linux进行实时化和嵌入式化,即通过配置内核,裁减shell和嵌入式C库对系统定制,使整个系统能够存放到容量较小的FLASH中,Linux的动态模块加载

6、,使Linux的裁减极为方便,高度模块化的部件使添加非常容易。1.2课程设计的目的1.3 课程设计的要求本次课程设计的目标是JPEG图片的动态显示,JPEG是Joint Photographic Experts Group(联合图像专家组)的缩写,文件后辍名为jpg或jpeg,是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式

7、去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。熟练掌握待设计的系统所涉及到的所有知识点。所以我们得查阅相关资料,在老师指导和自学两种方法下学习具体课题中涉新的知识点主要包括,在Linux环境下运行C语言,包括编译、调试、运行,以及在试验箱上运行得到一致的试验结果。熟练运用MakeFile文件提高编译效率。设计过程中有以下要求:1.能够写出相应的源程序代码,采用结构化、模块化程序设计方法,功能要完善,界面要美观。2所设计的系统原则上要能够运行无误,结果准确。3.掌握Linux系统下的编程,包括对I/O函数的使用;4.熟

8、练掌握JPEG压缩的原理和源码包的使用。5.掌握LCD显示原理、JPEG压缩原理;6.了解Linux下jpeg源码包的安装和使用。1.4 背景知识(1)LCD显示原理LCD为英文Liquid Crystal Display的缩写,即液晶显示器,是一种数字显示技术, 可以通过液晶和彩色过滤器过滤光源,在平面面板上产生图象。与传统的阴极射线(CRT)相比,LCD占用空间小,低功耗,低辐射,无闪烁,降低视觉疲劳。液晶的物理特性是:当通电时导通,排列变的有秩序,使光线容易通过;不通电时排列混乱,阻止光线通过。让液晶如闸门般地阻隔或让光线穿透。从技术上简单地说,液晶面板包含了两片相当精致的无钠玻璃素材,

9、称为Substrates,中间夹著一层液晶。当光束通过这层液晶时,液晶本身会排排站立或扭转呈不规则状,因而阻隔或使光束顺利通过。大多数液晶都属于有机复合物,由长棒状的分子构成。在自然状态下,这些棒状分子的长轴大致平行。将液晶倒入一个经精良加工的开槽平面,液晶分子会顺着槽排列,所以假如那些槽非常平行,则各分子也是完全平行的。 LCD技术是把液晶灌入两个列有细槽的平面之间。这两个平面上的槽互相垂直(相交成90度)。也就是说,若一个平面上的分子南北向排列,则另一平面上的分子东西向排列,而位于两个平面之间的分子被强迫进入一种90度扭转的状态。由于光线顺着分子的排列方向传播,所以光线经过液晶时也被扭转9

10、0度。但当液晶上加一个电压时,分子便会重新垂直排列,使光线能直射出去,而不发生任何扭转。 LCD是依赖极化滤光器(片)和光线本身。自然光线是朝四面八方随机发散的。极化滤光器实际是一系列越来越细的平行线。这些线形成一张网,阻断不与这些线平行的所有光线。极化滤光器的线正好与第一个垂直,所以能完全阻断那些已经极化的光线。只有两个滤光器的线完全平行,或者光线本身已扭转到与第二个极化滤光器相匹配,光线才得以穿透。 LCD正是由这样两个相互垂直的极化滤光器构成,所以在正常情况下应该阻断所有试图穿透的光线。但是,由于两个滤光器之间充满了扭曲液晶,所以在光线穿出第一个滤光器后,会被液晶分子扭转90度,最后从第

11、二个滤光器中穿出。另一方面,若为液晶加一个电压,分子又会重新排列并完全平行,使光线不再扭转,所以正好被第二个滤光器挡住。总之,加电将光线阻断,不加电则使光线射出。 然而,可以改变LCD中的液晶排列,使光线在加电时射出,而不加电时被阻断。(2)JPEG图像压缩原理 JPEG(Joint Photographic Experts Group)是一个由ISO和IEC两个组织机构联合组成的一个专家组,负责制定静态的数字图像数据压缩编码标准,这个专家组开发的算法称为JPEG算法,并且成为国际上通用的标准,因此又称为JPEG标准。JPEG是一个适用范围很广的静态图像数据压缩标准,既可用于灰度图像又可用于彩

12、色图像。JPEG专家组开发了两种基本的压缩算法,一种是采用以离散余弦变换(Discrete Cosine Transform,DCT)为基础的有损压缩算法,另一种是采用以预测技术为基础的无损压缩算法。使用有损压缩算法时,在压缩比为25:1的情况下,压缩后还原得到的图像与原始图像相比较,非图像专家难于找出它们之间的区别,因此得到了广泛的应用。例如,在VCD和DVD-Video电视图像压缩技术中,就使用JPEG的有损压缩算法来取消空间方向上的冗余数据。为了在保证图像质量的前提下进一步提高压缩比,近年来JPEG专家组正在制定JPEG2000标准,这个标准中将采用小波变换(Wavelet)算法。JPE

13、G压缩是有损压缩,它利用了人的视角系统的特性,使用量化和无损压缩编码相结合来去掉视角的冗余信息和数据本身的冗余信息。 (3) Linux下源码包的安装和使用a.解开软件包查看帮助文档按说明将源码包安装好。b.编译安装软件的条件;首先我们在Linux系统中至少得把开发工具安装上,比如gcc ;perl;python;glibc;gtk;make ;automake 等开发工具或基础包;还要安装一些相应的开发包,一般是文件名包括dev的,比如kernel-devel;还有一些开发库,比如以lib开头的;如果您在编译软件时,有时提示缺少什么东西之类的,大多少的是这些开发工具和开发库等;从光盘中找出安

14、装就是了;有时光盘没有提供,请用google搜索相应的软件包,有时可能也会用到源码包编译安装所依赖的包; 有时本来系统中已经安装了所依赖的包,但系统提示找不到应该怎么办?这时需要我们设置PKG_CONFIG_PATH的环境变量就行了; #export PKG_CONFIG_PATH=/usr/lib/pkgconfig或#export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig然后我们再来运行编译的./configure ;make installc.编译安装软件的方法;大多以tar.gz 和tar.bz2打包软件,大多是通过 ./configure ;m

15、ake install 来安装的;有的软件是直接make;make install ; 我们可以通过./configure -help 来查看配置软件的功能;大多软件是提供./configure 配置软件的功能的;少数的也没有,如果没有的就不用./configure ;直接make;make install 就行了; ./configure 比较重要的一个参数是 -prefix ,用-prefix 参数,我们可以指定软件安装目录;当我们不需要这个软件时,直接删除软件的目录就行了。二 总体方案设计2.1总体设计思路本系统设计要求完成一个在系统运行的开发板或实验箱上显示JPEG格式图片的动态显示设

16、计,即当程序运行时可看到若干图片动态的切换出现。因为显示的是jpeg格式的图片,我们不由想到JPEG 格式的图片在显示过程中必定经过解码识别图片、像素点显示、图片显示这几个过程。当文件在Linux操作系统下运行,在PC 机上成功运行后,在Makefile文件中将模式改为 RAM-Linux-gcc 模式,将 PC 机与RAM实验箱连接,连接成功后,将需要运行的代码以及运行需要的图片下载到RAM实验箱上。这时将在RAM实验箱上运行,可以看到 JPEG 格式的图片以动态的形式显示。2.2算法设计思想本次课程设计利用C语言实现其功能。程序包含几个部分:解码并识别图片、像素点的显示、图片显示方式以及主

17、函数设计部分。其中解码并识别图片用于识别不同位素的图片并相互转换。像素点的显示部分用于显示图片。程序要求实现连续以不同的方式显示JPEG 格式的图片,即若干图片以不同的方式切换出现 。在此次设计中,我们设计了四种不同的方式显示图片,在主函数中我们直接调用图片显示函数,既isplay-jpeg()函数。在我们设计时我们主要利用for循环控制像素点来实现图片的显示。部分代码如下:int i, j; for (j = 0; j new_jpeg.w; +j) for(i = 0; i new_jpeg.h; +i) fb_pixel(pfb_inf, j, i, buf16j + i * new_j

18、peg.w);当改变其中w和h时,宽和高改变了,像素点的显示方式也改变了,继而图片的显示方式也就发生变化。所以为了以不同方式显示图片,只需要更改交换for循环中i,j两个变量,并适时做出相应的代码更改即可。2.3程序流程图图2-1 程序主流程图主流程图所示的是我们整个程序的详细流程,直接在主函数中调用相应的函数,以不同的方式显示图片。2.4程序设计特点本程序的主要特点是高度模块化,形式固定,灵活性较小,可变化性也比较小,要有改变只需改变display-jpeg 这个模块,图片的显示方式变有所改变。程序比较简单,易于理解,使人一目了然。本设计完成了一个在系统运行的开发板或实验箱上显示JPEG格式

19、图片的动态显示设计,当程序运行时可看到若干图片以不同的方式动态切换出现。改变程序运行环境后便可以在实验箱上运行,在实验箱上便可以看到实验结果。三 详细设计3.1算法描述该程序设计利用C语言完成一个在系统运行的开发板或实验箱上动态显示JPEG格式图片,即当程序运行时可看到若干图片动态的切换出现。设计过程中用到两种模式,即在Makefile文件中修改模式,Makefile文件部分代码如下:CC = gcc#CC = arm-linux-gccCFLAGS = -Wall -g -c -I/home/akaedu/jpeg-8b/ #-I./freetype-2.3.11/includeLDFLAG

20、S = -L/home/akaedu/jpeg-8b/.libs/ -ljpeg #-L./freetype-2.3.11/objs/.libs -lfreetype -lpthread当在虚拟机上运行时,模式为CC=gcc。而当在实验箱上运行时,模式改为CC= arm-linux-gcc。这时,虚拟机上不能正常执行。3.1.1 解码并识别图片 这部分包含图片RGB的各种位素的转换,包括24位与32位间的转换以及24位与16位之间的转化等。分别以不同的位素显示图片,并且识别不同位素的JPEG格式的图片。 (1)24位转换为32位,代码如下: u32_t * rgb24to32(u8_t *bu

21、f24, fb_info jpeg_inf) int w = jpeg_inf.w; int h = jpeg_inf.h; u32_t *buf = malloc(w * h * 4); if (buf = NULL) return NULL; int i; for(i = 0; w * h; *(u8_t *)&bufi + 2) = buf24i * 3 + 0;bufi + 1) = buf24i * 3 + 1;bufi + 0) = buf24i * 3 + 2;bufi + 3) = 0x00; return (u32_t *)buf;(2)24位转换为16位,代码如下:u16_

22、t * rgb24to16(u8_t *buf24, fb_info jpeg_inf) u16_t *buf16 = NULL; u8_t r24,g24,b24; u8_t r16,g16,b16; u16_t rgb16; int i;if (buf16 = malloc (jpeg_inf.w * jpeg_inf.h * 2) = NULL) return NULL; for (i = 0 ;i 3; g16 = g242; b16 = b24 rgb16 = b16 | (g16 5) | (r16 24; case 24: /* 24 bits */ *(pos + 2) = c

23、olor 16; case 16: /* 16 bits */ *(pos + 1) = color 8; case 8: /* 8 bits */ *pos = color; return 0; default: return -1; return -1; u16_t *pos = (u16_t *)(pfb_inf-fbmem) + (pfb_inf-w * y + x); *pos = color; return 0;/* painting horizontal */int fb_pixel_row(fb_info *pfb_inf, int x, int y, int len, u32

24、_t color) for(i = x; len; i+) fb_pixel(pfb_inf,x+i, y, color);int fb_test(void) printf(Framebuffer Testn); fb_info fb_inf; if(init_fb(&fb_inf) 0)Framebuffer Test fb_pixeln fb_pixel_row(&fb_inf, 0, 200, 1280, 0xF800); munmap(fb_inf.fbmem, fb_inf.w * fb_inf.h * fb_inf.bpp / 8);3.1.3 图片显示方式该程序是以不同的显示方式

25、分别动态显示JPEG格式的图片,包括从左向右显示,从上到下显示,从中间向左右两边显示以及从中间到上下两边四种显示方式。图片显示的代码如下:1 .第一种显示方式(从左向右):int display_jpeg(char *filename, fb_info *pfb_inf) fb_info original_jpeg; /* original size */ fb_info new_jpeg; new_jpeg = *pfb_inf; /* screen size */ u8_t *buf24 = decode_jpeg(filename, &original_jpeg); u8_t * sca

26、le_buf = scale24(buf24, new_jpeg, original_jpeg); u16_t *buf16 = rgb24to16(scale_buf, new_jpeg); int i, j; usleep(400); free(buf24); free(scale_buf); free(buf16);当./main执行程序后,可以看到图片从左向右渐渐显示出来。2.第二种显示方式(从上到下): 功能代码如下: fb_pixel(pfb_inf, i, j, buf16i + j * new_jpeg.h);当./main执行程序后,可以看到图片从左向右渐渐显示出来,逐渐覆盖之前的图片。3.第三种显示方式(从中间向左右两边):int i, j,k; for (j = new_jpeg.w/2,k=new_jpeg.w/2; -k,+j) new

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1