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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

电子时钟系统设计方案.docx

1、电子时钟系统设计方案嵌入式系统课程设计说明书电子时钟系统院 部:学生姓名:指导教师: 职称专 业:班 级:学 号:指导教师课题名称湖南工学院嵌入式系统课程设计课题任务书学生姓名电子时钟系统设计内 容 及 任 务在GEC21叭发板上设计一个基于 QT的电子时钟系统来显示当前的系统时间。二、任务根据控制要求,明确设计任务,拟定设计方案与进度计划,运用所学的理论知 识,进行电子时钟系统原理设计、硬件系统设计、软件系统设计、创新设计,提高 理论知识工程应用能力、系统调试能力、分析问题与解决问题的能力。主要内容包 括:1.嵌入式交叉开发环境搭建。2.Linux操作系统的移植。3.根据需求确定外围模块设计

2、并完成相应驱动开发4.应用程序原理及框架设计。5.Linux下应用程序编写及移植。6.系统总体功能调试。7.编写设计说明书。三、要求1 .本系统显示结果示例如下:2 .显示的时间为开发板当前的系统时间,显示的结果随着系统时间变化而变 化。1马忠梅,ARM & Linux嵌入式系统教程(第3版)M 。北京:北京航空航天大 学出版社,2014主2曹忠明,程姚根。从实践中学嵌入式 Linux操作系统M 。北京:电子工业出要版社,2012参考3宋宝华,Linux设备驱动开发详解(第二版)M 。北京:人民邮电出版社,资2010。料4韦东山,嵌入式Linux应用开发完全手册M。北京:人民邮电出版社,200

3、8 陆文周,Qt5开发及实例M 。北京:电子工业出版社,2015 Stephen Prata C Primer PlusM。北京:人民邮电出版社,2005教研室意见教研室主任:(签字)年 月曰摘要嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统 ( 包括硬、软件系统 ) 极为重要的组成部分,通常包括与硬件相关的底层驱动软件、 系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等 Browser 。嵌入 式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源; 能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够 提供库函数、驱动程

4、序、工具集以及应用程序 。与通用操作系统相比较,嵌入式操 作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方 面具有较为突出的特点。嵌入式技术已成为信息产业中发展最快、应用最广的计算 机技术之一,并被广泛应用于网络通信、消费电子、医疗电子、工业控制和交通系 统等领域。本次设计采用QT程序开发框架开发的模拟时钟程序,使用Linux系统到嵌入式 终端移植和交叉编译环境搭建,最终成功实现了在嵌入式终端的运行。关键词:嵌入式系统;QT;模拟时钟;Linux系统1 绪论 . 01.1 设计背景 . 11.2 设计目的和意义 . 12 嵌入式 Linux 系统 22.1 嵌入式 Li

5、nux 概念 . 22.2 嵌入式 Linux 组成 . 23 Qt 工具 . 33.1 Qt 简介 33.2 Qt 优点 34 模拟时钟的设计 44.1 代码的编写 . 44.2 代码的调试与运行 . 45 模拟时钟到开发板的下载 65.1 交叉编译环境的构建 75.2 模拟时钟到开发板的下载运行 7结论 10参考文献 11致 谢 12附录 131绪论嵌入式 Linux 操作系统在广泛和深入的应用于各个领域, 应用的技术也越来 越复杂。而随着城市信息化和行业信息化的持续深入, 嵌入式技术已成为信息产 业中发展最快、 应用最广的计算机技术之一, 并被广泛应用于网络通信、 消费电 子、医疗电子、

6、工业控制和交通系统等领域。嵌入式 Linux 开始采用较为复杂的 图形用户界面。QT以其强大的功能,良好的可移植性成为一种被广泛使用的 GUI 系统。于是嵌入式操作系统及其相应图形用户界面的不断发展, 嵌入式软件的开 发显得越来越重要。 本次设计模拟时钟能够以简洁的外观为用户提供时间信息成 为了系统中的重要组成部分,在基于QT的嵌入式系统中模拟时钟具有深刻的实 用价值。1.1设计背景源代码开放的 Linux 搭建的嵌入式操作系统由于其强大的网络功能和低成 本,近年来得到了越来越多的应用。 其能够提供全功能的桌面计算, 定制非常方 便并且支持大多数嵌入式系统上使用的芯片。 在嵌入式 Linux

7、操作系统上使用一 个功能完备的轻量级、高性能、高可靠、可配置的 GUI 系统成为可行的解决方 案。全过程自动化产品制造、 大范围电子商务活动、 高度协同科学实验以及现在 化家庭起居, 为嵌入式产品造就了崭新而巨大的商机。 日趋增长的功能密度、 灵 活的网络链接、轻便的移动应用和多媒体的信息处理对嵌入式系统软件技术提出 了新的挑战。1.2 设计目的和意义随着近年来计算机技术的迅速发展, 当新硬件、 新技术出现时, 计算机的体 系结构、指令系统和操作系统都可能发生相应的改变, 这势必会导致一部风应用 在新环境下无法正常运行。 如果舍弃原有软件重新开发, 将会耗费大量的人力和 财力,而浪费了许多成熟

8、的软件成果。而 QT在源代码级上实现了跨平台特性, 极大地支持了跨平台通用软件的开发。 QT可以用同一个源程序在不同平台上编 译链接,生成目标代码, 并取得相同的运行效果, 充分实现了程序的跨平台运行。 这种基于源代码的跨平台特性不仅解决了性能的问题, 而且可以发挥各个平台的 优势,充分利用每个平台自身的特点; 并且即可以在新环境下实现原有软件的功 能和特点,减少开发费用,还可以改进原有软件的不足,增加新的需求,从而提 高软件的质量, 延长软件生命期。 模拟时钟需要编写代码来实现它的功能, 然后 对代码进行编译运行,检查是否达到了预期的效果。2嵌入式 Linux 系统2.1 嵌入式 Linux

9、 简介嵌入式 Linux 是将标准 Linux 操作系统进行裁剪修改, 使之能在嵌入式计算 机系统上运行的一种操作系统。它以应用为中心,以计算机技术为基础,软件、 硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等有严格要求的 专用计算机系统。 Linux 从 1991 年问世到现在,短短的十几年时间已经发展成 为功能强大、 设计完善的操作系统之一, 不仅可以与各种传统的商业操作系统分 庭抗争,在新兴的嵌入式操作系统领域内也获得了飞速发展。 嵌入式系统的发展 方向是与目标密切相关的嵌入性能、 操控能力与控制的可靠性。 嵌入式操作系统 从它的产生到现在经历了几个阶段, 全入市系统是以应用

10、为中心的计算机技术为 基础并且软硬件是可裁剪的适用于对功能、 可靠性、 成本、功耗等有严格要求的 专用计算机系统嵌入式系统最典型的特点是与人们的日常生活紧密相关, 任何一 个普通人都可能拥有各种运用了嵌入式技术的电子产品。 各种新型嵌入式设备在 数量上已经远远超过了通用计算机。2.2 嵌入式 Linux 的组成一个最小的嵌入式系统基本组成为:一个用作引导的可用设施(工具); 一个具备内存管理,进程管理和定时器服务的 Linux 微内核;一个初始进程;硬 件的驱动程序; 一个或几个应用进程以提供必要的应用功效。 嵌入式 Linux 既继 承了 Internet 上无限的开放源代码资源,又具有嵌入

11、式操作系统的特性。(1)硬件层:硬件层包含嵌入式微处理器、 存储器(SDRAM、ROM、Flash 等)、通用设备接口和 I/O 接口( A/D、 D/A、 I/O 等)。在意嵌入式处理器基础 上添加电源电路、 时钟电路和存储电路就构成了一个嵌入式核心控制模块。 其中 操作系统和应用程序多都可以固化在 ROM 中。( 2)中间层: 硬件层与软件层之间为中间层, 也称为硬件抽象层 ( Hardware Abstract Layer, HAL )或者板级支持包(Board Support Package BSP),它半 系统上层软件与底层硬件分离开来, 使系统的底层驱动程序与硬件无关, 上层软 件

12、开发人员无需关心底层硬件的具体情况,根据 BSP 层提供的接口即可进行开 发。该层一般包含相关底层硬件的初始化、数据的输入 /输出操作和硬件设备的配置功能。(3)系统软件层: 系统软件层由实时多任务操作系统 ( Real-time Operation System, RTOS)、文件系统、图形用户接口( Graphic User In terface, GUI)、 网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。3Qt 工具3.1Qt 简介Qt是一个1991年由奇趣科技开发的跨平台C+图形用户界面应用程序开发 框架。它给应用程序开发者提供了一套功能齐全的进行艺术级的图形用

13、户界面程 序设计所需的功能。Qt很容易扩展,并且允许真正地组件编程。基本上Qt和X Window 上的 GTK, Openwin , Motif 等图形界面库和 Windows 平台上的 ATL , CL, OWL, VMFC 是非常类似的。 QtCreator 主要是为了帮助新 Qt 用户更快速 入门并运行项目,还可提高有经验的 Qt 开发人员的工作效率。 Qt Creator 包括 项目生成向导、高级的 C+ 代码编辑器、浏览文件及类的工具、集成了 Qt Designer Qt Assistant、Qt Linguist、图形化的 GDB 调试前端,集成 qmake 构 建工具等。3.2Q

14、t 优点Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户 开发来说是非常方便的。 Qt 提供了一种称为 signal/slots 的安全类型来替代 callback,这使得各个元件之间的协同工作变得十分简单。 Qt有丰富的API包括多达250个以上的C+类,还是提供基于模板的 collections,serialization,file, l/Odevice,directory managemen,date/time类,还包括正则表达式的处理功能。 支持2D/3D图形渲染、OpenGL、大量的文档开发、XML支持和实现本地界面 与 Web 内容的无缝集成。4模拟时钟的设计设

15、计要求指针式的表盘为原型,并且圆周上有分布均匀的 12 个刻度,钟面上有长度不同的指针,即时针、分针、秒针,间隔一秒更新一次时间。显示的时 间为开发板当前的系统时间,显示的结果随着系统时间变化而变化。4.1 代码的编写模拟时钟每一个模块的功能是在 cpp 文件中实现的, h 文件是类、 槽、函数、 变量的定义, main 主函数用来调用现实,头文件和主函数的代码如下:myclock.h 文件#ifndef MYCLOCK_H#define MYCLOCK_H#include #include #include #include #include #include namespace Ui cl

16、ass myclock;class myclock : public QWidgetQ_OBJECTpublic:explicit myclock(QWidget *parent = 0);myclock();protected:void paintEvent(QPaintEvent*);private:Ui:myclock *ui;QTimer *timer;int i;#endif / MYCLOCK_Hmain 主函数:main.cpp#include myclock.h#include int main(int argc, char *argv)QApplication a(argc,

17、 argv); myclock w;w.show();return a.exec();模拟时钟的走时为调用系统时间,用定时器每一秒更新一次 draw 函数,在 表盘上显示为秒针跳动一格, 由于始终与系统时间保持一致, 所以完全可以作为 直接的时间显示工具。实现的代码如下:myclock:myclock(QWidget *parent) :QWidget(parent), ui(new Ui:myclock) ui-setupUi(this); this-resize(350,350); timer = new QTimer(this);/ 定时器connect(timer,SIGNAL(tim

18、eout(),this,SLOT(update(); timer-start(1000); myclock:myclock()delete ui; 时钟的指针绘制也是根据定义的坐标用画笔画出需要的指针形状, 其中绘制 指针的实现代码如下:QPen hourpen;/ 时针的画笔 hourpen.setWidth(4);/ 设置画笔宽度 /hourpen.setColor(Qt:blue);/ 设置画笔颜色 mypainter.setPen(hourpen);mypainter.save();/mypainter.rotate(30.0 * (time.hour() + time.minute(

19、) / 60.0);mypa in ter.drawC onv exPolyg on( hourHa nd, 3);/mypai nter.drawL in e(0,0,0,-80);mypa in ter.restore();QPe n minu tepe n; 分针的画笔mi nu tepe n.setWidth(3);minu tepe n. setColor(Qt:yellow); 设置画笔颜色mypai nter.setPe n( mi nu tepe n);mypa in ter.save();mypainter.rotate(6.0 * (time.minute() + time

20、.second() / 60.0);mypai nter.drawC onv exPolyg on (mi nuteHa nd, 3);/mypai nter.drawL in e(0,0,0,-100);mypa in ter.restore();QPen seco ndpe n; 秒针的画笔sec on dpe n. setWidth(1);seco ndpe n. setColor(Qt:blue); 设置画笔颜色4.2代码的调试和运行通过以上步骤代码编写已经完成,在 Windows系统下的QT运行。通过调试发现没有发现错误和警告,就会出现如下的到模拟时钟的界面,如图 1所示。 my c

21、lock X图1模拟时钟界面5模拟时钟到开发板的移植5.1交叉编译环境的构建在开发板上移植Linux系统之前,必须确保已经安装了 USB驱动,并把开发 版设置为NOR Flash启动。系统更新和安装完毕后设置为 Nand Flash启动。然后对Na nd Flash进行分区,安装bootloader,移植内核文件,移植文件系统。 做完这些就可以进行交叉编译环境构建。在Linux平台下,要为开发板编译内核, 图形界面Qtopia,bootloader,还有其他一些英勇程序,均需要交叉编译工具 链。(1) 安装gcc编译工具用于arm平台程序的编译工具,arm-linux-gcc , arm-li

22、 nu x-g+ 等,把程序源码包复制到用户目录下面解压(2) 设置环境变量,(3) 保存设置最后在终端输入以下命令:arm-li nux-gcc -v 等待出现信息成功安装。4.2模拟时钟到开发板的下载与运行交叉编译好的程序到开发板的下载用到串口,用串口线连接好开发板和电 脑,串口使用COM3接通电源,启动开发板,登录系统,在 SecureCRT中点击连接。图2串口连接设置进入后弹出一个对话框,在对话框中输入一下几条命令:(1) pwdIs(3) cd aaa(4) Is(5) source qtconf.sh(6) ./myclock输入以上命令后可以在SecureCRT中看到如下信息:图

23、4开发板显示结果由图 4 可以看出,开发板上的时钟与系统时间一致, 并且随系统时间的变化 而变化,说明设计成功。在下载运行时会遇到这些问题: 调用驱动时要保证实际驱动名字与应用程序 名字相同; 通过串口显示的数据是乱码, 原因是波特率设置的不正确, 导致双方 数据交互出现错误;开发板的系统上电后,不能重新启动,究其原因是内核、根 目录系统或者 bootloader 没有正确的烧写,重新烧写后正常启动;程序下载到 开发板上不能正确运行,提示缺少某个动态库,将缺少的库文件从 Qt 的安装包 拷贝到 lib 目录下完成后可正常启动。结论本次课程设计实现了一种基于 Qt 的模拟时钟的开发过程,实现了预

24、期的功 能。编写好的模拟时钟代码在Linux系统、Windows系统下都能编译并运行成功, 还讲交叉编译好的程序下载到开发板上运行,冲锋体现了 Qt 的跨平台特性。为 了 Windows 系统下编写编译的 Qt 程序能够在嵌入式 Linux 环境里运行,需要在 搭建交叉编译环境时, 要配置环境变量, 设计编译参数, 任何一个依赖库的确实 或编译参数的疏忽都可能导致交叉编译不成功。交叉编译好的 Qt 程序到开发板 移植时,嵌入式 Linux 中要有 Qt 程序运行的环境,移植时往往缺少很多库文件 导致不能运行, 需要不断测试并在交叉编译环境中找到相应的库文件下载到开发 板。由于个人能力以及时间的

25、限制, 此次设计最终能实现了一些基本功能, 但是 还有很大的扩展性, 比如时间设置等功能。 希望在今后的学习中可以学到更多完 善自己。参考文献1 马忠梅,ARM & Linux嵌入式系统教程(第3版)M 。北京:北京航空航天 大学出版社, 20142 曹忠明,程姚根。从实践中学嵌入式 Linux操作系统M 。北京:电子工业 出版社, 20123 宋宝华,Linux设备驱动开发详解(第二版)M 。北京:人民邮电出版社, 2010。4 韦东山,嵌入式Linux应用开发完全手册M。北京:人民邮电出版社,2008 陆文周,Qt5开发及实例M 。北京:电子工业出版社,2015 Stephen Prata

26、 C Primer PlusM。北京:人民邮电出版社,2005致谢首先我要感谢我的老师在课程设计上给予我的指导,提供给我的支持和帮 助,这是我能顺利完成这次报告的主要原因, 更重要的是老师帮我解决了许多技 术上的难题, 让我能把系统做得更加完善。 在此期间,我不仅学到了许多新的知 识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同 学,他们也为我解决了不少我不太明白的设计商的难题。 最后再一次感谢所有在 设计中曾经帮助过我的良师益友和同学这段时间以来, 在老师的耐心指导下, 我 终于完成了本次的课程设计。附录程序清单工程程序:myclock.pro# #Project cr

27、eated by QtCreator 2016-11-2 仃04:30:07# QT += core guigreaterTha n( QT_MAJOR_VERSION, 4): QT += widgets TARGET = myclockTEMPLATE = appSOURCES += mai n.cppmyclock.cppHEADERS += myclock.hFORMS += myclock.ui头文件程序:myclock.h#ifndef MYCLOCK_H#defi ne MYCLOCK_H#include #in clude #i nclude #i nclude #i nclu

28、de #i nclude vqmath.hn amespace Ui class myclock;class myclock : public QWidgetQ_OBJECTpublic:explicit myclock(QWidget *pare nt = 0);m yclock();protected:void pai ntEve nt(QPai ntEve nt*); private:Ui:myclock *ui;QTimer *timer;int i;#e ndif / MYCLOCK_H源文件程序:main .cpp#i nclude myclock.h#in clude vQApp

29、licatio n int main (i nt argc, char *argv) QApplicati on a(argc, argv); myclock w;w.show();return a.exec(); myclock.cpp#i nclude myclock.h#i nclude ui_myclock.hmyclock:myclock(QWidget *pare nt):QWidget(pare nt).ui(new Ui:myclock)ui-setupUi(this);this-resize(350,350);timer = new QTimer(this);/ 定时器con

30、n ect(timer,SIGNAL(timeout(),this,SLOT(update();timer-start(1000);myclock:myclock()delete ui;void myclock:pa in tEve nt(QPa in tEve nt *)QTime time = QTime:curre ntTime(); 获取系统时间QPai nter mypai nter(this);/ 定义画家mypai nter.setRe nderHi nt(QPai nter:A ntialiasi ng); 平滑设置static const QPoint hourHa nd3 = QPoi nt(4, 4),QPoi nt(-4, 4),QPoi nt(0, -80);/ 时针static const QPoint minu teHa nd3 = QPoi nt(4, 4),QPoi nt

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

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