嵌入式课程设计报告数字相框.doc

上传人:土8路 文档编号:10124108 上传时间:2021-04-21 格式:DOC 页数:15 大小:111.50KB
返回 下载 相关 举报
嵌入式课程设计报告数字相框.doc_第1页
第1页 / 共15页
嵌入式课程设计报告数字相框.doc_第2页
第2页 / 共15页
嵌入式课程设计报告数字相框.doc_第3页
第3页 / 共15页
嵌入式课程设计报告数字相框.doc_第4页
第4页 / 共15页
嵌入式课程设计报告数字相框.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《嵌入式课程设计报告数字相框.doc》由会员分享,可在线阅读,更多相关《嵌入式课程设计报告数字相框.doc(15页珍藏版)》请在三一文库上搜索。

1、 湖北汽车工业学院 Hubei Automotive Industrise Institute课程设计说明书 课程名称 设计题目 班号 专业 学号 学生姓名 指导教师(签字) 起至日期 年 月 日 年 月 日目录一目的与要求1二设计内容1三总体方案设计2四各个功能模块的主要实现程序61.上翻页功能62.下翻页功能63.循环播放功能74.暂停功能75.放大功能76.缩小功能87.浏览功能88.退出功能99.显示图片功能910.其他主要函数9五测试和调试91.正常显示情况92.放大后103.缩小后10六课程设计总结与体会14七参考文献15一目的与要求本课程设计的目的是通过开发一个消费类电子产品数字

2、相框,了解嵌入式产品开发的主要步骤,包括需求分析、系统结构设计、图形界面设计、驱动程序、功能优化、系统测试等,从而培养学生独立完成比较复杂的实际系统设计的能力。本课程设计要求学生根据实际应用的特点对产品进行完整的需求分析,形成比较完善的总体设计方案。同时,要求学生具备Linux操作系统下简单的设备驱动程序开发、图形用户接口设计的能力。此外,还要求读者掌握基本的系统功能及性能测试技术,从而具备比较全面的嵌入式应用系统开发能力。二设计内容作为一个消费类电子产品,数码相框整个系统要完成的基本功能大致如下:1、用户界面友好,操作简便。由于该产品的使用者大多是非专业人士,用户界面是否清晰明了、操作是否简

3、捷方便成为用户是否能迅速接受此产品的重要因素。2、数字相框的功能应包括以下方面:(1)在LCD屏上全屏循环显示多幅图像文件;(2)根据设定的时间间隔更新图像;(3)显示时间、日期;(4)通过按钮进行操作;三总体方案设计根据数字相框的主要特点和设计功能那个要求,我们将课设分为以下几个步骤:1、数字相框软硬件平台的选择性能方面,由于数字图像的解码算法比较复杂,而且大量图片需要从外部Flash存储器中读取,所以对嵌入式微处理器的性能要求比较高。外部接口方面,该芯片最好能在外围直接支持CF卡的Compact Flash接口,还应提供按钮、LCD显示屏、触摸屏、声音输出通道等。在本课程设计中,采用了In

4、tel的PXA270作为微处理器,完全能满足上述硬件平台的要求。数字相框属于消费类电子产品,对价格比较敏感,而嵌入式Linux操作系统上有比较丰富的软件资源、驱动程序和开发工具,因此本课程设计采用嵌入式Linux作为软件开发平台。在Linux操作系统平台上有多种嵌入式图形界面开发工具可供使用,主要包括MicroWindows、MuniGUI、TinyX和Qt/Embedded等几种。本课程设计将集中讨论在Qt/Embedded系统上数字相框的实现技术,当然也可以通过其他图形开发界面工具实现数字相框功能。2、数字相框的软件总体设计数字相框软件系统功能可以划分为三个模块:1)图片浏览模块,可以通过

5、按键控制选定某个图像或更新图像页(上一页、下一页)。2)播放模块,对浏览界面选定的图片进行循环播放。3)系统设置模块,可设置循环播放更换频率等。3、基于Qt的图形界面程序设计本设计中包括了浏览、循环播放和配置三个界面模块。这些模块之间需要进行通信,利用Qt提供的信号/槽机制很好地解决了这几问题,每个模块中都有自己定义的一些信号和槽,已发送给其他模块或者从其他模块接受到对应信号后作出响应。数字相框在初始化时会扫描指定目录下(包括子目录)的所有支持图片文件,并将其存放在列表中,以备之后的浏览界面生成缩略图。本系统使用Qt提供的QDir类实现遍历目录的功能,在遍历目录的同时通过设置文件类型过滤位来获

6、得指定文件,并使用一个双向的字符串指针链表来记录扫描得到的结果。主控模块分为图片浏览模块,图片播放模块,系统设置模块。如图3所示。图片浏览模块如图4所示,图品播放模块和系统设置模块如图所示主控模块图片浏览模块图片播放模块系统设置模块图3主控图片浏览模块上一张图片下一张图片扩 放 图 片缩 小 图 片本设计中包括了浏览、循环播放和配置三个界面模块。这些模块之间需要进行通信,利用Qt提供的信号/槽机制很好地解决了这几问题,每个模块中都有自己定义的一些信号和槽,已发送给其他模块或者从其他模块接受到对应信号后作出响应。数字相框在初始化时会扫描指定目录下(包括子目录)的所有支持图片文件,并将其存放在列表

7、中,以备之后的浏览界面生成缩略图。本系统使用Qt提供的QDir类实现遍历目录的功能,在遍历目录的同时通过设置文件类型过滤位来获得指定文件,并使用一个双向的字符串指针链表来记录扫描得到的结果。四各个功能模块的主要实现程序1.上翻页功能功能实现:首先确定当前显示的图片,点击下一张按钮,判断当前照片是不是第一张,不是就直接调出上一张照片显示,如果是的话,调出最后一张照片显示。程序代码:void Function:pre_area() /上一张图片功能实现 if( (i0) ) i-; else if(i=0) i=list.size()-1; update();2.下翻页功能功能实现:首先确定当前显

8、示的图片,点击下一张按钮,判断当前照片是不是第一张,不是就直接调出下一张照片显示,如果是的话,调出第一张照片显示。程序代码:void Function:fun_area() if( ( (i0) | (i=0) ) & ( (ilist.size()-1) ) ) i+; else if(i=(list.size()-1) i=0; update();3.循环播放功能功能实现:定义变量bool,并定义为假,点击循环播放时,重新定义bool为真,然后调用下翻页功能,那么就会不断地下翻页,这时再调用延时程序,控制好翻页的时间,从而实现了循环播放的功能。程序代码:void Function:Star

9、t() b=true; while(b)fun_area();delay();4.暂停功能功能实现:定义变量bool,点击暂停按钮时,定义bool为假,那么循环播放应为bool为假,就不会执行下去。程序代码;void Function:Stop() b=false;5.放大功能功能实现:对于放大图片,首先赢控制放大比例,定义了水平比例和高度比例,再放大的时候是水平和高度同时放大,控制放大的倍数,不得大于5,。点击放大按钮,每次水平和高度同时放大1.1倍,然后调用显示图片功能,吧放大的图片显示出来。程序代码:void Function:Big() if(w0.1) w=w*0.9; h=h*0.

10、9; update(); 7.浏览功能程序代码:void Function:fun_open() /dakaitimer-stop(); QStringList list; list=QFileDialog:getOpenFileNames(this,open E:,/,*.jpg); for(j=list.begin();jsetPixmap(pix); k+; 8.退出功能程序代码:void Function:fun_exit() this-close();9.显示图片功能程序代码:void Function:paintEvent(QPaintEvent *) QPainter paint

11、er(this);QFileInfo fileInfo = list.at(i); QString path=fileInfo.filePath(); QPixmap pixmap; pixmap.load(path); qDebug(n pi=%dn,i);qDebug(path.toLatin1().data();int x=( size().width()-(int)(pixmap.width()*w)/2;int y=( size().height()-(int)( pixmap.height()*h)/2; painter.drawPixmap(x,y,(int)(pixmap.wi

12、dth()*w),(int)(pixmap.height()*h),pixmap,0,0,0,0);qDebug(update %d,%d,pixmap.width(),pixmap.height();10.其他主要函数程序代码:#include phoframe.h#include #include Function.h phoframe:phoframe() function = new Function; void phoframe:predisplay()function-pre_area();void phoframe:nextdisplay()function-fun_area()

13、;void phoframe:start()function-Start();void phoframe:stop()function-Stop();void phoframe:big()function-Big();void phoframe:small()function-Small();void phoframe:keyPressEvent(QKeyEvent *event) if ( event-key() = Qt:Key_Right) predisplay(); if ( event-key() = Qt:Key_Left) nextdisplay(); #include #inc

14、lude #include #include #include #include Function.hbool b=false;Function:Function(QWidget *parent): QWidget(parent) i=0; dir=e:/images; QDir DIR; if(!DIR.exists(dir) return ; QDir picdir(dir); QStringList filters; filters *.bmp *.jpg *.pngwindowFlags() | Qt:SplashScreen); QPalette palette=this-palet

15、te(); setAutoFillBackground(true); palette.setBrush(QPalette:Window,QBrush(QPixmap(e:/photo/3.jpg); setPalette(palette); update();/触QSize Function:minimumSizeHint() const return QSize(10,10);QSize Function:sizeHint() const return QSize(10000, 10000);五测试和调试1.正常显示情况2.放大后3.缩小后六课程设计总结与体会这次课程设计我选择的是第三个题目

16、数字相框,经历了选题,查找资料,编写程序,调试修改等阶段,终于成功设计出了一个数字相框在学习嵌入式的过程中,感觉很空洞,很难理解,经理了这次课设,才让我明白,学习和生活是密不可分的,学习起源于生活。就像这次的嵌入式实验,刚开始的时候虽然很忙,但是不清楚自己目的是什么,将要做出去的东西在自己的脑海中没有印象,仅仅只是做一点多一点而已。在完成课设的过程中,由于我的嵌入式课程学习的不好,开始的时候困难重重,后来在老师的指导下,上网超找资料,并且参考有关的书籍,对我帮助很大。这里我也发现原来网络上有这么多的学习资料,以前都忽视了。当然,完成课设的时候,遇到有些功能的实现方法以前没有遇到过,在自己想办法的时候,有些想法也常常因为自己能力不够而无法实现,最后在自己思考以及和同学讨论的情况下,用其他的思路来实现经过本次课设,也感觉到了自己的能力缺陷,缺乏知识,更加缺乏经验,冰冻三尺非一日之寒,在以后的学习中,要努力弥补自己的弱点,才能在能力水平方面才会有所提高。七参考文献QT Creator快速入门霍亚飞 编著嵌入式系统原理与设计陈文志 王总辉 编著Linux教程孟庆昌 牛欣源

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1