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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

电子时钟系统设计Word格式.docx

1、2曹忠明,程姚根。从实践中学嵌入式Linux操作系统M。电子工业出版社,20123宋宝华,Linux设备驱动开发详解(第二版)M。人民邮电出版社,2010。4韦东山,嵌入式Linux应用开发完全手册M。人民邮电出版社,20085 陆文周,Qt5开发及实例M。电子工业出版社,20156 Stephen Prata,C Primer PlusM。人民邮电出版社,2005教研室意见 教研室主任:(签字)年 月 日摘 要本次课设是基于ARM嵌入式开发板设计一个具有模拟表盘与数字显示的电子时钟,与传统的机械钟相比,它具有走时准确、显示直观,无机械转动装置等优点。该电子时钟系统首先是在QT上通过API函数

2、和C语言进行设计,然后将嵌入式Linux程序下载到开发板上,这样就能够实现简单的计时,并且时间与系统时间一致。关键词:ARM嵌入式 电子时钟 QT 计时目 录1 绪论 11.1 电子时钟的简介 11.2 设计背景 11.3 设计目的及意义 12 嵌入式Linux和QT系统 22.1 嵌入式Linux的简介 22.2 嵌入式Linux的特点 22.3 QT的简介 22.4 QT的优点 33 设计与实现 33.1 时钟功能的设计 43.2 时钟界面的设计 43.3 设计步骤 53.4 工程的调试与运行 54 调试与结果 74.1 嵌入式Linux到开发板的移植 74.2 对Nand Flash进行

3、分区 74.3 实物的调试与结果 8结束语 9参考文献 10致 谢 11附 录 12程序清单 131 绪论1.1 电子时钟的简介 1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。1.2 设计背景嵌入式产品的发展,往往要求嵌入式操作系统有网络和图形的功能。利用源代码开发的Linux搭建的嵌入式操作系统,由于强大的网络功能和低成本,

4、近年来得到了越来越多的应用。在嵌入式Linux操作系统上使用一个功能完备的轻量级、高能级、高可靠、可配置的GUI系统成为可行的解决方案。现如今各种家电多有嵌入式产品,这样不仅为嵌入式市场展现了美好前景,注入了新的生命;同时也对嵌入式系统技术,特别是软件技术提出新的挑战。1.3 设计目的及意义 虽然市场上现在有了众多的GUI应用软件,但随着近年来计算机技术的发展,有许多计算机的体系结构、指令系统和操作系统都可能发生改变,这势必将导致原有的一些功能无法实现。如果舍弃原有软件,这样会浪费大量人力和资金,浪费许多成熟的成果。而QT可以用同一个源程序在不同平台上编译链接,生成目标代码,并取得同样的运行效

5、果,这种技术成为“一次编写,随处编译”,利用这种方法充分实现了程序的跨平台运行。本次设计通过对嵌入式Linux和QT的分析,在嵌入式QT的基础上,开发面向嵌入式终端的模拟时钟应用软件。模拟时钟不仅能精确的显示时间,还能更换皮肤,装饰桌面环境。2 嵌入式Linux和QT系统2.1 嵌入式Linux的简介嵌入式Linux是将标准Linux操作系统进行裁剪修改,使之能在计算机上运行的操作系统。它以应用为中心,以计算机技术为基础,软件、硬件可才裁剪,适用于系统对功能、可靠性、成本、体积、功耗要求严格的计算机系统。嵌入式Linux既继承了Internet上无限的开发源代码资源,又具有嵌入式操作系统的特性

6、。2.2 嵌入式Linux的特点 (1)模块化程度高 Linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分;其独特模块可随客户的需要移动。 (2)源码公开 源码公开,可以使用户不用担心有“后闸”等安全隐患;同时源码开放给个教育机构提供极大的方便,同时也促进了Linux的学习。(3)广泛的硬件支持 Linux能支持x86、ARM、MIPS、ALPHA和PowerPC等多种体系结构的微处理器 。(4)安全性及可靠性好 内核高效稳定。可以使用户方便的建立高效稳定的防火墙、路由器、工作站、服务器等。(5)具有优秀的开发工具(6)有良好的网络的支持利文件系统支

7、持(7)与UNIX完全兼容目前,在Linux中所包含的工具和实用程序,可以完成UNIX的所有主要功能。2.3 QT的简介QT是一个1991年由奇趣科技开发的跨平台C+图形用户界面应用程序开发框架。它既可以用于GUI程式,也可用于非GUI程式。QT是面向对象语言,易于扩展,并且允许组件编程,支持windows、unix、嵌入式Linux平台。有商业版和开原版,前者提供给商业软件开发,后者仅仅为了开发由和开放源码软件,提供和前者一样的功能。2.4 QT的优点 (1)面向对象 QT的良好封装机制使得QT的模块化程度非常高,可重性较好,对于用户开发来说是非常方便的。(2)丰富的APIQT包括多达250

8、个以上的C+类,还提供模板的collections,serial类等。(3)支持2D/3D图形渲染,支持OpenGL。(4)大量的开发文档(5)XML支持。(6)Webkit引擎的集成,可以实现本地界面与Web内容的无缝集成。(7)信号与槽信号与槽用于对象问的通讯。信号与槽的机制是类型安全的,一个信号的签名与它的接收槽的签名相匹配。3 设计与实现3.1 时钟功能的设计 1.基本走时功能,调用系统时间,每个一秒更新一次时间。2.通过不同函数更换皮肤。3.使时钟与桌面有一定程度的融合。4.可以通过改写函数重写时间。3.2 时钟界面的设计1.窗口设为正方形,使用函数去掉标题栏。2.时钟界面为圆形,使

9、用函数实现。3.使用函数设计时钟的分针、时针和秒针。4.使用函数设计时钟的刻度。5.使用函数设计时针、分针和秒针的颜色、长度和宽度。3.3 设计步骤1.工程的建立首先打开QT软件,然后打开文件窗口建立一个工程,命名为myclock,工程程序如图1所示。图1 工程程序 2.头文件的建立 首先打开文件窗口,选择新建文件,然后在项目中选择C+,在C+中选择C+头文件建立头文件程序,命名为myclock.h。建立步骤如图2所示,头文件程序见附录。图2 建立头文件 3.4源文件的建立 与步骤2一样打开新建文件,在项目C+中选择C+源文件建立。一个文件名为main.cpp,一个命名为myclock.cpp

10、。如图3所示,程序见附录。图3 建立源文件3.4 工程的调试与运行 通过以上步骤基本已经完成,通过调试发现没有发现错误和警告,然后运行得到了时钟界面。调试结果如图4所示,运行如图5所示。图4 调试结果图5 运行结果4 调试与结果4.1 嵌入式Linux到开发板的移植 移植是指将软件从一个平台迁移到另一个平台。在移植过程前,首先要设置超级终端、DNW软件、安装USB下载驱动、USB转串口驱动等等。安装Linux系统主要有以下几个步骤:(1)对Nand Flash进行分区;(2)安装bootloader;(3)移植内核文件;(4)移植文件系统。4.2 对Nand Flash进行分区 用串口线、US

11、B线吧开发板连接到电脑,串口用于通讯,USB用于系统移植时数据的下载。安装好USB转串口驱动,新建一个超级终端,串口使用COM3,设置好相应的参数,一边与实现电脑与开发板的通信。选择串口如图6所示。 图6 选择串口4.3 实物的调试与结果 接通电源,启动开发板,登录系统,在SecureCRT中点击连接,进入后弹出一个对话框,在对话框中输入一下几条命令:(1)pwd(2)ls(3)cd aaa(4)ls(5)source qtconf.sh(6)./myclock输入以上几条命令后,开发板上就出现了需要的时钟界面。输入命令窗口如图7所示。开发板上结果如图8所示。图8 输入命令结果图9 开发板结果

12、 由图9可以看出,开发板上的时钟与系统时间一致,并且随系统时间的变化而变化,说明设计成功。结束语经过两周的努力,终于完成了课程设计。从开始接到课设题目到完成设计,每一步走来对于我来说都是新的尝试和挑战。在这段时间里,我学到了很多知识也有很多感受。在做这次课设中,遇到了许多的难题,比如如何将程序下载到开发板上,这个开始我一点也不会,后来通过查资料和请教同学和老师,终于将程序下载到了板子上,完成了课题的设计。从这次课设中我明白了,只有不断的探索,不断的努力,才能达到自己最终想要的结果。参考文献1徐千洋.LinuxC函数库参考手册.M中国青年出版社.20022陈坚,孙志月.MODEM通信编程技术M.

13、西安电子科技大学出版社.19983李现勇.VisualC+串口通信技术与工程实践M.人民邮电出版社.20044何小平.选择适合ARM的嵌入式操作系统J.BMRfechInc.20035马忠梅,马广云,徐英慧,田译.ARM嵌入式处理结构与应用基础M.北京航空航天大学出版社.20026邹思铁.嵌入式Linux设计与应用M.北京清华大学出版社.20027田泽.嵌入式系统开发与应用M.北京航空航天大学出版社.20058陈鑫.嵌入式软件技术的现状与发展动向M.软件世界.2001致 谢本设计是在罗老师的悉心指导下完成的,老师渊博的知识,严谨的治学态度,平易近人的性格都是我学习的楷模。在做课程设计期间,老师

14、给了我很大的支持和鼓励,才使得课设得以顺利的完成,在此谨向罗老师表示忠心的感谢和崇高的敬意。同时还要感谢和我一起完成课设的同学,他们也给了我很大的支持和帮助,才使我们课设完成的这么成功。附 录程序清单工程程序:myclock.pro#-# Project created by QtCreator 2016-11-21T04:30:07QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = myclockTEMPLATE = appSOURCES += main.cpp myclock.cppHEADERS +=

15、 myclock.hFORMS += myclock.ui头文件程序:myclock.h#ifndef MYCLOCK_H#define MYCLOCK_H#include QPainterQPaintEventQTimeQTimerqmath.hnamespace Ui class myclock;class myclock : public QWidgetQ_OBJECTpublic: explicit myclock(QWidget *parent = 0); myclock();protected: void paintEvent(QPaintEvent*);private: Ui:m

16、yclock *ui; QTimer *timer; int i;#endif / MYCLOCK_H源文件程序:main.cpp#include myclock.hQApplicationint main(int argc, char *argv) QApplication a(argc, argv); myclock w; w.show(); return a.exec();myclock.cppui_myclock.hmyclock:myclock(QWidget *parent) : QWidget(parent), ui(new Ui:myclock) ui-setupUi(this

17、); this-resize(350,350); timer = new QTimer(this);/定时器 connect(timer,SIGNAL(timeout(),this,SLOT(update(); timer-start(1000);myclock() delete ui;void myclock:paintEvent(QPaintEvent *) QTime time = QTime:currentTime();/获取系统时间 QPainter mypainter(this);/定义画家 mypainter.setRenderHint(QPainter:Antialiasing

18、);/平滑设置 static const QPoint hourHand3 = QPoint(4, 4), QPoint(-4, 4), QPoint(0, -80) ;/时针 static const QPoint minuteHand3 = QPoint(0, -100)/分针 static const QPoint secondHand4 = QPoint(5, 5), QPoint(0, 30), QPoint(-5, 5), QPoint(0,-120)/秒针 /mypainter.translate(this-width()/100,this-height()/100);/坐标平移

19、 QPen pen;/定义圆画笔 pen.setWidth(5);/设置画笔宽度 pen.setColor(Qt:blue);/设置画笔颜色 mypainter.translate(170,170);/将(0,0)坐标平移到(170,170)的位置 mypainter.setPen(pen); mypainter.drawEllipse(-150,-150,300,300);/画圆 QPen rul;/刻度的画笔 mypainter.setPen(rul); mypainter.save();/保存原有状态 for (int i = 0; i 60; +i) if(i%5 = 0) mypai

20、nter.drawLine(150, 0, 135, 0); mypainter.drawLine(150, 0, 145, 0); mypainter.rotate(6.0); mypainter.restore();/恢复坐标 QPen hourpen;/时针的画笔 hourpen.setWidth(4); /hourpen.setColor(Qt: mypainter.setPen(hourpen);/ mypainter.rotate(30.0 * (time.hour() + time.minute() / 60.0); mypainter.drawConvexPolygon(hou

21、rHand, 3); /mypainter.drawLine(0,0,0,-80); QPen minutepen;/分针的画笔 minutepen.setWidth(3); minutepen.setColor(Qt:yellow); mypainter.setPen(minutepen); mypainter.rotate(6.0 * (time.minute() + time.second() / 60.0); mypainter.drawConvexPolygon(minuteHand, 3); /mypainter.drawLine(0,0,0,-100); QPen secondp

22、en;/秒针的画笔 secondpen.setWidth(1); secondpen.setColor(Qt: mypainter.setPen(secondpen); mypainter.rotate( 6.0 * time.second(); mypainter.drawConvexPolygon(secondHand, 4); /mypainter.drawLine(0,0,0,-120); /画数字 for(int i = 1; 13; i+) QString num = QString:number(i); /mypainter.rotate(30.0);/旋转30度 /mypainter.drawText(0,-120,num); mypainter.rotate(i*30.0); mypainter.translate(0,-125); mypainter.rotate(-i*30.0); mypainter.drawText(-4,0,num);

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

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