迷你计算器设计.docx

上传人:b****8 文档编号:27754749 上传时间:2023-07-04 格式:DOCX 页数:27 大小:260.75KB
下载 相关 举报
迷你计算器设计.docx_第1页
第1页 / 共27页
迷你计算器设计.docx_第2页
第2页 / 共27页
迷你计算器设计.docx_第3页
第3页 / 共27页
迷你计算器设计.docx_第4页
第4页 / 共27页
迷你计算器设计.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

迷你计算器设计.docx

《迷你计算器设计.docx》由会员分享,可在线阅读,更多相关《迷你计算器设计.docx(27页珍藏版)》请在冰豆网上搜索。

迷你计算器设计.docx

迷你计算器设计

 

《嵌入式系统》课程设计说明书

迷你计算器设计

院、部:

学生姓名

 

湖南工学院嵌入式系统课程设计课题任务书

指导教师

学生姓名

课题名称

迷你计算器设计

内容及任务

一、目标

在GEC210开发板上使用QT设计一个迷你计算器。

二、任务

根据控制要求,明确设计任务,拟定设计方案与进度计划,运用所学的理论知识,进行迷你计算器原理设计、程序框架设计、创新设计,提高理论知识、系统调试能力、分析问题与解决问题的能力。

主要内容包括:

1.嵌入式交叉开发环境搭建。

2.Linux操作系统的移植。

3.根据需求确定外围模块设计并完成相应驱动开发。

4.应用程序原理及框架设计。

5.Linux下应用程序编写及移植。

6.系统总体功能调试。

7.编写设计说明书。

三、要求

1.迷你计算器的功能显示界面示例如下:

2.能够完成十进制数的加、减、乘、除等简单计算。

3.对不正确的表达式能指出其错误。

主要参考资料

 

[1]马忠梅,ARM&Linux嵌入式系统教程(第3版)[M]。

北京:

北京航空航天大学出版社,2014

[2]曹忠明,程姚根。

从实践中学嵌入式Linux操作系统[M]。

北京:

电子工业出版社,2012

[3]宋宝华,Linux设备驱动开发详解(第二版)[M]。

北京:

人民邮电出版社,2010。

[4]韦东山,嵌入式Linux应用开发完全手册[M]。

北京:

人民邮电出版社,2008

[5]陆文周,Qt5开发及实例[M]。

北京:

电子工业出版社,2015

[6]StephenPrata,CPrimerPlus[M]。

北京:

人民邮电出版社,2005

 

教研室

意见

 

教研室主任:

年月日

摘要

 

人类已经进入信息化时代。

信息技术发展如新月异,计算器已经进入人们生活的各个领域,在现代生活中不可或缺。

大型复杂的计算是人脑不能胜任的,而且比较容易出错。

本文针对QT计算器进行研究,设有简单的四则运算:

“+”、“-”、“*”、“/”,给用户带来了很多方便,并且提高了用户的运算效率。

本文从项目背景、需求分析、软件设计等方面详细说明了QT计算器的开发设计过程。

软件采用VM虚拟机,用Linux编写代码,QT设计界面来开发。

计算器包含简单计算功能。

计算器具有界面可视化,方便用户操作等特点,用户只能使用计算器做简单的四则运算,尽管如此,此计算器还是能够满足人们日常简单的运算,为用户提供了有效保证。

 

关键词:

计算器;四则运算;QT设计界面;Linux

 

目录

1嵌入式系统基础1

1.1嵌入式系统的基本概述1

1.1.1嵌入式系统的基本概念1

1.1.2嵌入式系统的体系结构2

1.1.3嵌入式系统发展趋势2

1.2ARM处理器硬件平台3

1.2.1嵌入式处理器简介3

1.2.2ARM处理器简介3

2Qt开发工具简介4

2.1Qt概述4

2.2Qt主要特点4

2.3Qt编程机制简介5

3项目设计8

3.1项目构想8

3.2需求分析8

3.2.1功能需求8

3.2.2功能分析9

3.2.3硬件需求9

3.2.4软件需求9

3.2.5程序流程图10

4嵌入式计算器的设计与实现11

4.1项目实施11

4.1.1创建工程11

4.1.2计算器程序的实现11

4.1.3计算器程序的编译运行13

5项目总结14

致谢15

参考文献16

附录17

1嵌入式系统基础

 

1.1嵌入式系统的基本概述

在社会日益信息化的今天,计算机和网络的应用已经全面渗透到日常生活中。

应用嵌入式系统的电子产品随处可见,如人们平常使用的手机、摄像机、医疗仪器、汽车。

在经济发达国家,每个家庭平均拥有255个嵌入式系统,如每辆汽车平均装有35个嵌入式系统。

嵌入式系统的应用广泛进入到工业、军事、宇宙、通信、运输、金融、医疗、气象、农业等众多领域。

1.1.1嵌入式系统的基本概念

在嵌入式系统行业内有一个被普遍接受的定义:

嵌入式系统是以应用为中心,以计算机控制系统为基础,并且软硬件可裁减,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

将一套计算机控制系统嵌入到已具有某种完整的特定功能的(或者将会具备完整功能的)系统内(例如各种机械设备),以实现对原有系统的计算机控制,此时将这个计算机控制系统叫做嵌入式系统。

简单地说,嵌入式系统就是被嵌入到电子设备中的专用计算系统。

嵌入式系统通常由特定功能模块和计算机控制模块组成,主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用软件等部分组成。

它具有“嵌入性”、“专用性”、与“计算机系统”的三个基本要素。

嵌入式系统的特点如下。

(1)面向特定应用。

(2)嵌入式系统的硬件和软件都必须进行高效地设计。

(3)嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合的产物。

(4)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片中或单片机本身,而不是存储于磁盘中。

(5)嵌入式开发的软件代码尤其要求高质量、高可靠性。

(6)嵌入式系统本身不具备二次开发功能,即设计完成后用户通常不能在该平台上直接对程序进行修改,必须有一套开发工具和环境才能进行再次开发。

 

1.1.2嵌入式系统的体系结构

嵌入式系统是一类特殊的计算机系统,一般包括硬件设备、嵌入式操作系统和应用软件。

它们之间的关系如图1所示。

 

图1嵌入式系统的组成

硬件设备包括嵌入式处理器和外围设备。

其中的嵌入式处理器是嵌入式系统的核心部分,它与通用处理器最大的区别在于,嵌入式处理器大多工作在为特定用户群所专门设计的系统中,它将通用处理器中许多由板卡完成的任务集成到芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。

外围设备是指嵌入式系统中用于完成存储、通信、调试、显示等辅助功能的其他部件。

目前常用的嵌入式外围设备按功能可以分为存储设备(如RAM、SRAM、Flash等)、通信设备(如RS-232接口、SPI接口、以太网接口、USB接口、无线通信等)和显示设备(如显示屏等)3类。

1.1.3嵌入式系统发展趋势

1.提供强大的网络服务

针对外部联网要求,嵌入设备必须配有通信接口,相应需要TCP/IP协议簇软件支持;为满足家用电器相互关联及实验现场仪器的协调工作等要求,新一代嵌入式设备还需要具备IEEE1394、USB、CAN、Bluetooth或IrDA通信接口,同时也需要提供相应的通信组网协议软件和物理层驱动软件。

为了支持应用软件的特定编辑模式,还需要相应的浏览器。

2.小型化、低成本、低功耗

为满足这种特性,要求嵌入式产品设计者相应降低处理器的性能,限制内存容量和复用接口芯片。

这就相应提高了对嵌入式软件设计技术要求。

3.人性化的人机界面

用户之所以乐于接受嵌入式设备,其重要因素之一是它们与使用者之间的亲和力。

它具有自然的人机交互界面。

人们与信息终端交互要求以GUI屏幕为主的多媒体界面。

4.完善的开发平台

随着Internet技术的成熟、带宽的提高,ICP和ASP在网上提供的信息内容日趋丰富、应用项目多种多样。

为了满足应用功能的升级,设计者一方面采用更强大的嵌入式处理器,如32位、64位RISC芯片或数字信号处理器(DSP)增强处理能力;同时还采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性,简化应用程序设计、保障软件质量和缩短开发周期。

1.2ARM处理器硬件平台

1.2.1嵌入式处理器简介

嵌入式系统的核心部件是各种类型的嵌入式处理器,据不完全统计,全世界嵌入式处理器的品种总量已经超过1000种,流行的体系结构有30多个系列,数据总线宽度从8位到32位,处理速度从0.1到2000MIPS(MIPS指每秒执行的百万条指令数)。

按功能和内部结构等因素,嵌入式系统硬件平台可以分为嵌入式RISC微处理器、嵌入式CISC微处理器两种。

它们之间主要区别如表1所示。

表1RISC和CISC之间的主要区别

指标

RISC

CISC

指令集

一个周期执行一条指令,通过简单指令的组合实现复杂操作;指令长度固定

指令长度不固定,执行需要多个周期

流水线

流水线每周期前进一步

指令的执行需要调用微代码的一个微程序

寄存器

更多通用寄存器

用于特定目的的专用寄存器

Load/Store结构

独立的Load和Store指令完成数据在寄存器和外部存储器之间的传输

处理器能够直接处理存储器中的数据

1.2.2ARM处理器简介

ARM有3种含义,它是一个公司的名称,是一类微处理器的通称,还是一种技术的名称。

ARM公司是微处理器行业的一家知名企业,其设计了大量高性能、廉价、低耗能的RISC芯片,并开发了相关技术和软件。

ARM处理器具有高性能、低成本和低功耗的特点,适用于嵌入式控制、消费/教育类多媒体、DSP和移动式应用等领域。

ARM处理器的产品分为多个系列,包括ARM7、ARM9、ARM9E、ARM10E、ARM11和SecurCore等。

每个系列提供一套特定的性能来满足设计者对功耗、性能、体积的需求。

SecurCore是独立的一个产品系列,是专门为安全设备而设计的。

2Qt开发工具简介

Qt作为嵌入式Linux环境下图形用户界面的强大编成工具,能给用户提供精美图形界面所需要的所有元素,已经得到越来越广泛的应用。

2.1Qt概述

Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司开发,目前包括Qt/X11、基于Framebuffer的Qt/Embedded、快速开发工具QtDesigner以及国际化工具QtLinguist等。

人们所熟知的Linux下面的KDE环境就是基于Qt开发而成的。

Qt支持Unix和Linux系统以及Windows系统。

Qt能以漂亮的用户界面,快速而有效地开发软件。

专业版,用于创造成功地商业贸易方面的跨平台软件,技术支持可依赖于TrollTech公司。

Qt自由版已经成为用C++GUI工具包在Unix上自由软件的开发的主流,并获得广泛的认可,它是Linux上流行的KDE桌面环境的基础。

这意味着在Internet上有很多关于Qt编程的有用资源,比如Qt发布程序和一个动态的Qt编程人员的E-mail列表。

Qt有广阔的应用前景,开发Qt绝对安全,TrollTech公司将负责维护Qt,他们将持续地为最新的版本在公布给自由软件联盟方面提供合法保障。

2.2Qt主要特点

Qt的主要特点有:

面向对象,很容易扩展,并且允许真正的组件编程;Qt对各个模块进行了良好的封装,使各模块可重用性较好;优良的跨平台特性,使用Qt类编写的程序可以实现“一次编码,到处编译”,极大的降低了跨平台开发的难度(丁丁等,2004);构件支持,对于对象间通信,Qt没有采用函数回调的方法,而是采用了一种全新并且可选的被称为“信号与槽”的对象间通信机制,通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间的通信安全而且高效。

Qt的这些特点使它非常适合于真正的构件编程,同时使各个组件之间的协同工作变得十分简单,并且Qt是直接基于Xlib的,不依赖Motif工具包,所以它的执行效率比一般的基于平台的代码的执行效率要高。

2.3Qt编程机制简介

1.Qt系统的信号与槽机制简介

信号/槽机制是Qt的一个中心特征并且也许是Qt与其它工具包的最不相同的部分。

在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件。

更一般地,我们希望任何一类的对象可以和其它对象进行通讯。

较老的工具包使用一种被称作回调的通讯方式来实现同一目的。

回调是指一个函数的指针,所以如果你希望一个处理函数通知你一些事件,你可以把另一个函数(回调)的指针传递给处理函数。

处理函数在适当的时候调用回调(倪继利,2006)。

回调有两个主要缺点。

首先他们不是类型安全的。

我们从来都不能确定处理函数使用了正确的参数来调用回调。

因此容易造成进程崩溃,另外一个问题是,回调这种方式紧紧的绑定了图形用户接口的功能元素,因而很难把开发进行独立的分类。

Qt的信号与槽机制是不同的。

Qt的信号与槽均以函数形式出现,Qt的窗口部件有很多预定义的信号,但我们也可以通过继承来加入我们自己的信号。

槽就是一个可以被调用处理特定信号的函数。

Qt的窗口部件有很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号。

我们可以用connect()函数对需要的信号和槽进行连接。

当对象的内部状态发生改变,信号就被发射。

从某种意义上讲,它们也许对外面的世界感兴趣。

这就是所有的对象通讯时所做的一切。

它不知道也不注意无论有没有东西接收它所发射的信号。

当一个信号被发射,它所连接的槽会被立即执行,就像一个普通函数调用一样(见图2.1)。

信号/槽机制完全不依赖于任何一种图形用户界面的事件回路。

当所有的槽都返回后发射的信号也将返回。

信号与插槽机制并不要求类之间互相知道细节,这样就可以相对容易的开发出代码可高重用的类(MatthiasDalheimer,2002)。

信号和槽的机制是类型安全的:

一个信号的签名必须与它的接收槽的签名相匹配。

(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签名。

)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。

它以警告的方式报告类型错误,而不会使系统产生崩溃。

信号和槽是宽松地联系在一起的:

一个发射信号的类不用知道也不用注意哪个槽要接收这个信号(JohanThelin,2007)。

Qt的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。

信号和槽可以使用任何数量、任何类型的参数。

它们是完全类型安全的:

不会再有回调核心转储(coredump)。

你可以把许多信号和你所希望的单一槽相连,并且一个信号也可以和你所期望的许多槽相连。

把一个信号和另一个信号直接相连也是可以的。

(这时,只要第一个信号被发射时,第二个信号立刻就被发射。

总体来看,信号和槽构成了一个强有力的组件编程机制。

如果一个类要使用信号与槽机制,它就必须是从QObject或QObject的子类继承,而且类的定义必须加上Q_OBJECT宏。

signals、slots和emit是Qt特有的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用标准的C++编译器。

槽同其他函数一样也具有访问权限,只是槽的访问权限决定了谁可以和它相连,如一个publicslots:

包含了任何信号都可以相连的槽(AndrewKrause,2007)。

一个protectedslots:

包含了只有这个类和它的子类的信号才能连接的槽。

这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。

一个privateslots:

包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连接的权利。

2.Qt元对象系统

Qt中的元对象系统是用来处理对象间通讯的信号/槽机制、运行时的类型信息和动态属性系统。

它基于下列三类:

QObject类、类声明中的私有段中的Q_OBJECT宏、元对象编译器(moc)。

moc读取C++源文件。

如果它发现其中包含一个或多个类的声明中含有Q_OBJECT宏,它就会给含有Q_OBJECT宏的类生成另一个含有元对象代码的C++源文件。

这个生成的源文件可以被类的源文件包含(#include)到或者和这个类的实现一起编译和连接。

除了提供对象间通讯的信号和槽机制之外(介绍这个系统的主要原因),QObject中的元对象代码实现其它特征:

className()函数在运行的时候以字符串返回类的名称,不需要C++编译器中的本地运行类型信息(RTTI)的支持。

inherits()函数返回这个对象是否是一个继承于QObject继承树中一个特定类的类的实例。

tr()和trUtf8()两个函数是用于国际化中的字符串翻译。

setProperty()函数和property()函数,这两个函数是用来通过名称动态设置和获得对象属性的。

metaObject()函数返回这个类所关联的元对象。

虽然使用QObject作为一个基类而不使用Q_OBJECT宏和元对象代码是可以的,但是如果Q_OBJECT宏没有被使用,那么这里的信号和槽以及其它特征描述都不会被提供。

根据元对象系统的观点,一个没有元代码的QObject的子类和它含有元对象代码的最近的祖先相同。

举例来说就是,className()将不会返回你的类的实际名称,返回的是它的这个祖先的名称。

故强烈建议QObject的所有子类使用Q_OBJECT宏,而不管它们是否实际使用了信号、槽和属性(JonathanCorbet,2005)。

 

3项目设计

3.1项目构想

根据《嵌入式Linux应用开发》课程设计说明以及网上的一些介绍,我决定此次课程设计将制作一个简易的四则计算器。

当今社会,计算器已经成了人们工作生活中必不可少的一种计算工具,有了计算器,人们在需要算数的时候就会很快的得出答案,并且能保证结果的准确性。

以前,人们有算盘之类的算数工具,但相比计算器而言就没那么直观、方便,还不易学习。

计算器的发明无疑成了人们最好的帮手。

因此,通过这样的启发,我决定自己亲手尝试做一个简易计算器,从而能够让自己了解计算器内部的程序结构。

3.2需求分析

3.2.1功能需求

在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。

在程序设计中,可以用两种方法解决问题:

一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。

而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。

我们日常生活的开支大额数字或是多倍小数的计算都需要计算器的帮助处理数字的开方、正余弦都离不开计算器。

虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,操作不便不说,很多功能根本用不到。

所以,我们想到可不可以用自己的所学为自己设计开发一个属于自己的简单计算器来完成日常生活的需求。

计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。

要实现计算功能,可以用C++和Qt的知识编写程序来解决此问题。

该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。

该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。

本文的程序设计设计工作环境为Fedora-VMwareworkstation、QtCreator,在程序设计中,采用了结构化与面向对象两种解决问题的方法。

3.2.2功能分析

该计算器采用简单的四则运算模块。

这一模块要求进行加减乘除运算。

支持十进制的直接输入、计算,并设有清除键、等号键。

当输入等号键时直接给出当前算式的运算结果。

3.2.3硬件需求

GEC210开发板简介

GEC210是一款高性能的CortexA8核心板,它由广州粤嵌股份设计、生产和发行销售。

它采用三星S5PV210作为主处理器,运行主频可高1GHz。

S5PV210内部集成了PowerVRSGX540高性能图形引擎,支持3D图形流畅运行,并可流畅播放1080P大尺寸视频。

 

  GEC210主要采用了2.0mm间距的双排针,引出CPU大部分常用功能引脚,另外还根据S5PV210芯片的特性,分别引出了标准的miniHDMI接口,GEC210板载512MDDR2内存,可流畅运行Android,Linux和WinCE6等高级操作系统。

它非常适合开发高端物联网终端,广告多媒体终端,智能家居,高端监控系统,游戏机控制板等设备。

3.2.4软件需求

要实现项目需求目标,完成项目任务,需要解决软件方案的确定问题,以下详细列出了8个需要安装的软件。

1.配置超级终端

2.安装与配置DNW

3.安装与配置虚拟机

4.安装Linux操作系统

5.实现Windows共享

6.配置NFS服务

7.配置FTP服务

8.安装与配置交叉编译工具链

 

3.2.5程序流程图

本项目为嵌入式计算器,具体流程图如下图2所示。

 

 

 

 

图2流程图

 

4嵌入式计算器的设计与实现

本章内容主要为大家详细讲述一下嵌入式计算器的设计过程以及需要用到的一些程序代码。

4.1项目实施

4.1.1创建工程

1.打开QtCreator,选择File->NewFileorProject,然后在弹出的对话框中选择“其他控件”->“空的Qt项目”,然后进入下一步。

2.定义新工程的工程名并选择保存路径,然后进入下一步。

3.选择创建于“桌面”,点击完成,即可完成新工程的创建。

如图3所示。

图3系统工程图

4.1.2计算器程序的实现

计算器程序主要分以下两部分工作:

一是实现计算器的图形界面;二是实现按键事件和该事件对应的功能绑定,即信号和对应处理槽函数的绑定。

1.计算器图形界面的实现

通过分析计算器的功能我们可知,需要16个按键和一个显示框,同时考虑到整体的排布,还需要水平布局器和垂直布局器。

通过组织这些类我们可以实现一个简单的带有数字0~9,可以进行简单四则运算且具有清屏功能的计算器。

对于这些类的具体操作会在后面的代码中详细说明。

2.信号和对应槽函数的绑定

3.分析计算器的按键我们可以把按键事件分为以下三类,一是简单的数字按键,

4.主要进行数字的录入,这类按键包括按键0~9;二是运算操作键,用于输入数学运算符号,进行数学运算和结果的显示,这类按键包括“+”,“-”,“*”,“/”,“=”;三是清屏操作键,用于显示框显示信息的清除。

5.进入刚才创建的空工程,双击左侧的Calculator.pro,在主编辑框中目前显示Calculator.pro的内容为空,如上图4.1所示。

这是因为目前什么文件都没有添加的缘故。

6.添加文件calculator.h

7.在工程Calculator上面点击右键,然后点击AddNew,选择添加C++HeaderFile,进入下一步后输入文件名calculator.h,然后完成文件的添加。

8.添加文件calculator.cpp和main.cpp

9.与添加文件calculator.h的过程类似,只是在选择文件类型时选择为C++SourceFile。

完成后可以查看Calculator.pro文件的内容,整个工程的文件结构如图4所示。

图4系统工程图

4.1.3计算器程序的编译运行

1.完成程序的编辑后,可以直接点击运行按钮,这时QtCreator会自动编译源程序并生成可执行程序。

2.计算器在PC机上的界面如图5所示,可以进行简单的计算来测试计算器的功能。

图5计算器界面图

3.将其下载到目标机上运行,在此之前要先进行交叉编译。

利用FTP登录到目标机,将应用程序下载到目标机的/home/plg/jisuanqi下。

修改应用程序执行权限,最后运行应用程序。

计算器应成功的在目标机中显示,此时便可对计算器做相应的测试工作,至此,项目全部完成。

 

5项目总结

本文围绕用户的基本需求,提出了一个基于嵌入式Qt的计算器设计

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

当前位置:首页 > 总结汇报 > 学习总结

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

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