中北大学嵌入式实训周实训报告第1页共13页中北大学嵌入式实训周任务书2011-2012学年第二学期学院:软件学院方向:嵌入式软件开发学生姓名:秦文渊学号:0921010344设计题目:基于嵌入式的数码相框设计鼠标模块设计起迄日期:2012年5月22日~6月22日设计地点:德怀楼8层实验室指导教师:乔道迹下达任务书日期:2012年5月22日中北大学嵌入式实训周实训报告第2页共13页嵌入式实训周任务书1.实训目的:实训周是在一个相对独立的时间段内,让学生组成团队,完成一个功能相对完善的应用项目。通过实训周的实训,使学生巩固嵌入式系统的体系结构等基础知识,进一步掌握C语言程序设计的方法,能够了解软件开发规范的一般要求和基本文档的书写方法,增强软件开发过程中学生的合作及协调能力,能够使学生掌握如何使用C语言进行文件、显示方式、声音等设置,能够使学生进一步掌握嵌入式系统软硬件结合开发的综合能力。2.具体内容和要求(包括原始数据、技术参数、条件、设计要求等):具体工作内容:1.给出系统设计方案的硬件设计图纸;2.给出系统设计方案的软件设计文档与源代码;3.支持JPG/PNG/GIF图片格式;4.支持淡入淡出,拉幕式显示效果;3.嵌入式实训周任务及工作量的要求选用ARM或者其他嵌入式CPU构成嵌入式系统,实现JPG/PNG/GIF图片在LCD屏幕上的回放,并支持USB接口,以方便用户通过USB下载图片到该系统的Flash上。中北大学嵌入式实训周实训报告第3页共13页嵌入式实训周任务书4.主要参考文献:[1]赵玉昆.PS/2鼠标和单片机的接口[J].上海应用技术学院学报,2004,4(1).[2]林邓伟,刑文生.光电鼠标芯片组在无接触检测运动物体中的应用[J].微计算机信息,2006,22(72).[3]雅默.构建嵌入式LINUX系统[M].北京:中国电力出版社,2008.[4]李俊.嵌入式LINUX设备驱动开发详解[M].北京:人民邮电出版社,2006.[5]杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2005.[6]孙琼.嵌入式LINUX应用程序开发详解[M].北京:人民邮电出版社,2006.[7]胥静.嵌入式系统设计与开发实例详解[M].北京:北京航空航天大学出版社.2005.5.工作计划及进度:2012年5月22日~5月28日资料调查整理,准备开发板及有关环境的搭建与测试。5月29日~6月4日系统概要设计,对硬件和软件部分的分析。6月5日~6月11日对设计的目标功能的预计需求,作好交叉环境的建立与运行。6月12日~6月15日完成详细系统设计,包括具体的代码的编写,内核驱动。6月16日~6月18日完成应用程序代码的编译运行仿真,测试。6月19日~6月20日完成实训报告。6月21日答辩验收。2012年5月22日中北大学嵌入式实训周实训报告第4页共13页中北大学嵌入式实训报告学生姓名:秦文渊学号:0921010344学院:软件学院方向:嵌入式软件开发题目:基于嵌入式的数码相框设计鼠标模块设计指导教师:乔道迹职称:讲师2012年6月21日中北大学嵌入式实训周实训报告第5页共13页嵌入式实训报告1.需求分析数码相框是展示数码照片而非纸质照片的相框。数码摄影必然推动数码相框的发展,因为全世界打印的数码相片不到35%。数码相框通常直接插上相机的存储卡展示照片,当然更多的数码相框会提供内部存储空间以接外接存储卡功能。数码相框就是一个相框,不过它不再用放进相片的方式来展示,而是通过一个液晶的屏幕显示,它可以通过读卡器的接口从SD卡获取相片,并设置循环显示的方式,比普通的相框更灵活多变,也给现在日益使用的数码相片一个新的展示空间。数码相框是观看和分享数码照片的专用设备。其基本原理:外观采用普通相框的造型,把原来相框中间的照片部分换成液晶显示屏,配上电源,存储介质等,可以直接播放数码照片,使得同一个相框内可以循环播放照片,比普通相框的单一功能更有优势。数码相框由三大部件组成:LCD液晶屏、PCB电路板和外框。其中PCB电路板是数码相框的核心,因为它包含必须的软件。数码相框是时尚的电子消费品、也是家庭必备的装饰品。继承了数码的时尚和相框的温情,用途十分广泛。随着社会的发展和物质水平的提高,人们对于精神世界的追求也得到大幅度的改善。迎合现在市场的所需,消费电子的设计新增了人性化的元素。该设计理念源于提高人们生活的幸福指数。在传统意义上,人们往往用冲印出来的相片记录生活中美好的瞬间。而伴着电子行业的发展,足以用数码形式将其取代,同时还可以将静态图片提升为动态的视频短片,携带方便,存储时间长远,满足于人们的需求,同时也是一种节约型、环保型的构想。2.总体设计主要步骤和方法根据数字相框的主要特点和设计功能那个要求,我们将课设分为以下几个步骤:中北大学嵌入式实训周实训报告第6页共13页2.1数码相框的软件总体设计数字相框软件系统功能可以划分为四个模块:1)图片浏览模块,可以通过按键控制选定某个图像或更新图像页(上一页、下一页)。2)播放模块,对浏览界面选定的图片进行循环播放。3)音乐播放模块,可设置播放背景音乐。4)鼠标操作模块,实现使用鼠标操作。2.2功能模块组织架构图图片浏览模块上一张图片下一张图片扩放图片缩小图片功能模块图片浏览模块图片播放模块音乐播放模块鼠标操作模块系统设置模块中北大学嵌入式实训周实训报告第7页共13页2.3人员组成以及分工3.详细设计3.1鼠标模块的设计原理1.鼠标编程通讯协议数据格式㈠MicroSoft公司标准:MICROSOFTFORMAT字节字元(Bit)76543210BYTE111LRY7Y6X7X6BYTE200X5X4X3X2X1X0BYTE300Y5Y4Y3Y2Y1Y0注释:L=左键状态R=右键状态1=按下0=释放X0-X7=X距离Y0-Y7=Y距离X7或Y7为±符号位串口特性:波特率=1200Baud,8位数据,无校验位,2停止位。㈡MOUSESYSTEM公司标准:MOUSESYSTEMFORMAT字节字元(Bit)76543210BYTE110000LMRBYTE2X7X6X5X4X3X2X1X0BYTE3Y7Y6Y5Y4Y3Y2Y1Y0BYTE4X7X6X5X4X3X2X1X0中北大学嵌入式实训周实训报告第8页共13页BYTE5Y7Y6Y5Y4Y3Y2Y1Y0注释:L=左键状态R=右键状态M=中间键状态1=按下0=释放X0-X7=X距离Y0-Y7=Y距离X7或Y7为±符号位串口特性:波特率=1200Baud,8位数据,无校验位,2停止位。㈢IBM公司PS/2MOUSE标准:PS/2MOUSEFORMAT字节字元(Bit)76543210BYTE1YVXVYSXS10RLBYTE2X7X6X5X4X3X2X1X0BYTE3Y7Y6Y5Y4Y3Y2Y1Y0注释:L=左键状态R=右键状态1=按下0=释放X0-X7=X距离Y0-Y7=Y距离X7或Y7为±符号位XS,YS=±符号位1---反向移动XV,YV=溢出位1----XY数据溢出2.鼠标的操作方式1.初始化鼠标驱动程序:例如:中断号INT33h功能16h子功能17h中断号:用于请求服务功能号:用于确定用户期望获取哪种服务中北大学嵌入式实训周实训报告第9页共13页子功能号:进一步指定所希望的服务调用寄存器:设置被调用的服务功能所要求的参数返回寄存器:返回服务功能执行结果2.设置图形鼠标光标的形状中断33h的功能9h设置图形模式下的鼠标光标的形状,并定义光标里的一个点为热点。光标由16x16位的视频掩码和16x16位的光标掩码组成。3.取得或设置鼠标光标的位置中断33h的功能4h用于设置鼠标光标位置,功能3h则用于报告光标的位置.AX存放功能号,CX被赋予X坐标,DX被赋予Y坐标。4.定义不显示鼠标光标的屏幕区域中断33h的功能10h定义屏幕的一个区域,当鼠标进入该区域时会自动关掉。进入时,CX存放被保护域的左列号,SI存放右列号;DX存放首行号,DI存放末行号。5.监视鼠标按钮中断33h的功能5h和6h报告鼠标按钮的信息。这两项功能都在AX返回一个按钮状态字节,报告按钮2个或3个当前状态。此状态字节由中断21h的功能3h返回。它报告鼠标光标的位置。3.1.2关于鼠标的算法PID控制软件算法对该交流变频调速系统建模,首先取电压输入为一个随机值,再测得其转速值。取两个数值构成一个数据对,然后对大量数据对用Matlab仿真求得其幅频特性和相频特性,并且对其幅频特性和相频特性进行相似的拟合。根据拟合的曲线可以近似求得其传递函数为:使用神经网络PID自适应控制对系统进行Matlab的仿真测试,效果令人满意。但因其输入层、隐含层、输出层的多阶矩阵运算使得单片机的运算时间大幅中北大学嵌入式实训周实训报告第10页共13页度增加,造成时间上的不确定因素增大;同比使用增量型PID控制,尽管后者需调整3个控制参数,但同样可使精度达到预期的效果,运算时间也大幅度下降,为此选用增量型PID算法作为控制算法。增量式数字PID的控制算法为:其中kp为比列系数,ki为积分系数,kd为微分系数;e(k)为当前位移增量与上一次位移增量的变化量;同理,e(k-1)、e(k-2)各为往前时间间隔的位移变化量。利用单片机串行中断接收功能,可在PC机上实时在线调节PID的kp、ki、kd参数。4.实训周的总结通过此次课程设计,使我更加扎实的掌握了有关Linux技术方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终这次课程设计终于顺利完成了。在设计中遇到了很多问题,最后在老师的指导下和同学的合作下,终于得到解决。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事。课程设计是一门专业课,给我很多专业知识以及专业技能上的提升,同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了关于linux的很多知识还自学鼠标的工作原理,并会实现较为简单的鼠标模块设计等等,通过查询资料,也了解了数码相框的构造及原理。我认为,在这次设计的过程中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法,而这是日后最实用的。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,学到很多很多的东西,同时不仅可以巩固了以前所学过中北大学嵌入式实训周实训报告第11页共13页的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。在实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,只有互相之间默契融洽的配合才能换来最终完美的结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。附件:本人设计的功能模块的源程序以及整体原理图1.鼠标模块的源程序#includestdio.h#includestring.h#includefcntl.h#includestdlib.h#includeunistd.htypedefstruct{intdx;//*鼠标左右移intdy;//*鼠标上下移intdz;//*滚轮charbutton;//*鼠标左右键}mouse_event;intget_m_info(intfd,mouse_event*p){intn=0;ch