基于ARM的計(jì)算器設(shè)計(jì)_第1頁
基于ARM的計(jì)算器設(shè)計(jì)_第2頁
基于ARM的計(jì)算器設(shè)計(jì)_第3頁
基于ARM的計(jì)算器設(shè)計(jì)_第4頁
基于ARM的計(jì)算器設(shè)計(jì)_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、嵌入式系統(tǒng)應(yīng)用課程設(shè)計(jì)題目 基于ARM的計(jì)算器設(shè)計(jì) 專業(yè) 通信工程 班級(jí) 2012級(jí)3班 學(xué)生姓名(學(xué)號(hào)) 袁 平 20120343007 學(xué)生姓名(學(xué)號(hào)) 黃 飛 20120343030 學(xué)生姓名(學(xué)號(hào)) 組長(zhǎng) 袁平 2015年 06 月 27日設(shè)計(jì)要求基本要求以友善之臂開發(fā)板及QT為平臺(tái),實(shí)現(xiàn)多功能計(jì)算器的設(shè)計(jì)能單獨(dú)的進(jìn)行簡(jiǎn)單的四則運(yùn)算擴(kuò)展部分能進(jìn)行數(shù)的平方,開根號(hào),及階乘界面要求簡(jiǎn)潔美觀,容易用戶操作 摘要       電子計(jì)算器作為計(jì)算工具,為人們的生活帶來了很多的方便與實(shí)惠。隨著科學(xué)技術(shù)的進(jìn)步,尤其是電子工業(yè)技術(shù)的發(fā)展,計(jì)算

2、器已經(jīng)從先前的半導(dǎo)體技術(shù)實(shí)現(xiàn)到現(xiàn)在的廣泛喜愛用高集成度芯片實(shí)現(xiàn)的多功能計(jì)算器,不管是白領(lǐng)辦公室還是菜市場(chǎng)的小販,計(jì)算器的出現(xiàn)讓他們高效率的完成任務(wù)。計(jì)算器扮演了一個(gè)重要的角色。 本設(shè)計(jì)是用C+編寫的,基于Qt圖形用戶界面應(yīng)用程序框架的計(jì)算器。設(shè)計(jì)出的應(yīng)用程序,實(shí)現(xiàn)了一定的計(jì)算功能。      關(guān)鍵字: Qt   C+   計(jì)算器   第一章 前言1.1設(shè)計(jì)背景計(jì)算器(calculator;counter)一般是指“電子計(jì)算器”

3、,計(jì)算器是能進(jìn)行數(shù)學(xué)運(yùn)算的手持機(jī)器,擁有集成電路芯片,其結(jié)構(gòu)簡(jiǎn)單,比現(xiàn)代電腦結(jié)構(gòu)簡(jiǎn)單得多,可以說是第一代的電子計(jì)算機(jī)(電腦)。計(jì)算器這一小小的程序機(jī)器實(shí)際上是從計(jì)算機(jī)中割裂出來的衍生品,雖然功能較單一,但因其操作模式的方便快捷和價(jià)格的低廉,攜帶方便等特點(diǎn),已經(jīng)被廣泛應(yīng)用于工程、學(xué)習(xí)、商業(yè)貿(mào)易等日常生活中,極大的方便了人們對(duì)于數(shù)字的整合運(yùn)算,成為人們生活和辦公中的必備品之一,深得使用者的青睞。1.2設(shè)計(jì)目的本程序是基于linux下的嵌入式開發(fā),所用軟件為QT Creator,程序雖然簡(jiǎn)單,但是通過本程序的設(shè)計(jì),可以進(jìn)一步了解嵌入式系統(tǒng)開發(fā)工具以及熟悉linux環(huán)境下的常用命令,為以后進(jìn)入嵌入式領(lǐng)

4、域打下一定的基礎(chǔ)。通過該計(jì)算器程序軟件的設(shè)計(jì),培養(yǎng)獨(dú)立思考、綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識(shí)的能力,更好地鞏固C+程序語言設(shè)計(jì)和高級(jí)程序設(shè)計(jì)課程學(xué)習(xí)的內(nèi)容,掌握工程軟件設(shè)計(jì)的基本方法,強(qiáng)化上機(jī)動(dòng)手編程能力,體驗(yàn)理論與實(shí)踐相結(jié)合的過程。第二章 流程圖2.1功能描述本次設(shè)計(jì)的計(jì)算器在功能上大致與Windows系統(tǒng)自帶的計(jì)算器程序相似,對(duì)于所設(shè)計(jì)的科學(xué)計(jì)算器,其功能大致為可以進(jìn)行加(+)、減(-)、乘(*)、除(/)、簡(jiǎn)單算術(shù)計(jì)算及平方和開方。由于接觸QT時(shí)間還不太久,所以目前只能簡(jiǎn)單地實(shí)現(xiàn)這些功能,相信隨著以后逐步的了解,本程序?qū)?shí)現(xiàn)更多的功能。第三章 開發(fā)工具簡(jiǎn)介3.1 QT簡(jiǎn)介由于本次設(shè)計(jì)的小程序是用

5、QT Creator所設(shè)計(jì)的,所以我覺得有必要先介紹下QT開發(fā)工具的背景。Qt是一個(gè)1991年由奇趣科技開發(fā)的跨平臺(tái)C+圖形界面應(yīng)用程序開發(fā)框架。它既可以開發(fā)GUI程式,也可用于開發(fā)非GUI程式,比如控制臺(tái)工具和服務(wù)器。Qt是面向?qū)ο笳Z言,易于擴(kuò)展,并且允許組件編程。QT所具有的優(yōu)勢(shì)是:優(yōu)良的跨平臺(tái)特性,Qt支持下列操作系統(tǒng): Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, A

6、IX, OS390,QNX 等等。 面向?qū)ο螅篞t 的良好封裝機(jī)制使得 Qt 的模塊化程度非常高,可重用性較好,對(duì)于用戶開發(fā)來說是非常 方便的。 Qt 提供了一種稱為 signals/slots 的安全類型來替代 callback,這使得各個(gè)元件 之間的協(xié)同工作變得十分簡(jiǎn)單。 豐富的 API:Qt 包括多達(dá) 250 個(gè)以上的 C+ 類,還提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 類。甚至還包括正則表達(dá)式的處理 功能。支持 2D/3D 圖形渲染,支持 OpenGL大量

7、的開發(fā)文檔。第四章 詳細(xì)設(shè)計(jì)過程4.1工程的創(chuàng)建打開QtCreator,如圖1所示。圖1選擇File->New File or Project,然后在彈出的對(duì)話框中選擇Applications->Qt Gui應(yīng)用(如圖2所示),然后進(jìn)入下一步。圖2定義新工程的工程名JSQ.pro并選擇保存路徑(如圖3所示),然后進(jìn)入下一步,在出現(xiàn)圖4的界面中基類選擇QDialog,最后完成新工程的創(chuàng)建。圖3圖44.2圖形界面的設(shè)計(jì)分析計(jì)算器的按鍵我們可以把按鍵事件分為以下三類,一是簡(jiǎn)單的數(shù)字按鍵,主要進(jìn)行數(shù)字的錄入,這類按鍵包括按鍵09;二是運(yùn)算操作鍵,用于輸入數(shù)學(xué)運(yùn)算符號(hào),進(jìn)行數(shù)學(xué)運(yùn)算和結(jié)果的顯

8、示,這類按鍵包括“+”,“-”,“*”,“/”,“=”等等;三是清屏操作鍵,用于顯示框顯示信息的清除。進(jìn)入剛才創(chuàng)建的空工程,雙擊左側(cè)的JSQ.pro,在主編輯框中目前顯示JSQ.pro的內(nèi)容為空(如圖5)。圖5 點(diǎn)擊dialog.ui進(jìn)入其界面(如圖6)。選擇3個(gè)控件分別是PushButton,LCDNumber和BoxLayou。界面設(shè)計(jì)(如圖7)。圖6圖7按鈕設(shè)置:選中要設(shè)置的按鈕右鍵單擊,選擇“改變文本”,然后輸入字符即可。其次,同樣選中按鈕右鍵單擊,選中“改變對(duì)象名稱”出現(xiàn)如下界面:輸入對(duì)象名稱即可。圖8圖94.3程序代碼的實(shí)現(xiàn)計(jì)算器程序主要分以下兩部分工作:一是實(shí)現(xiàn)計(jì)算器的圖形界面;

9、二是實(shí)現(xiàn)按鍵事件和該事件對(duì)應(yīng)的功能綁定,即信號(hào)和對(duì)應(yīng)處理槽函數(shù)的綁定。分析計(jì)算器的按鍵我們可以把按鍵事件分為以下三類,一是簡(jiǎn)單的數(shù)字按鍵,主要進(jìn)行數(shù)字的錄入,這類按鍵包括按鍵09;二是運(yùn)算操作鍵,用于輸入數(shù)學(xué)運(yùn)算符號(hào),進(jìn)行數(shù)學(xué)運(yùn)算和結(jié)果的顯示;三是清屏操作鍵,用于顯示框顯示信息的清除。信號(hào)和對(duì)應(yīng)處理槽函數(shù)的綁定。以數(shù)字1為例:選中按鈕1右鍵單擊,選擇“轉(zhuǎn)到槽.”,在出現(xiàn)的界面單擊“確定”即可計(jì)算器程序源代碼的分析說明1) 對(duì)calculator.h源代碼的簡(jiǎn)要說明#ifndef DIALOG_H#define DIALOG_H#include <QDialog>namespace

10、Ui class Dialog;class Dialog : public QDialog Q_OBJECT public: explicit Dialog(QWidget *parent = 0); Dialog(); private: Ui:Dialog *ui;private slots: void button1(); void button2(); void button3(); void button4(); void button5(); void button6(); void button7(); void button8(); void button9(); void bu

11、tton0(); void buttonPoint(); void buttonAdd(); void buttonSub(); void buttonMul(); void buttonDivision(); void buttonSquare(); void buttonReciprocal(); void buttonEvolution(); void buttonFactorial(); void buttonEqual(); void buttonEmpty(); void buttonDel();#endif / DIALOG_H2) 對(duì)calculator.cpp源代碼的簡(jiǎn)要說明

12、#include "dialog.h"#include "ui_dialog.h"#include <math.h>Dialog:Dialog(QWidget *parent) : QDialog(parent), ui(new Ui:Dialog) ui->setupUi(this); ui->lcdNumber->setNumDigits(10); setWindowTitle("Calculator"); connect(ui->pushButton_1,SIGNAL(clicked(),th

13、is,SLOT(button1(); connect(ui->pushButton_2,SIGNAL(clicked(),this,SLOT(button2(); connect(ui->pushButton_3,SIGNAL(clicked(),this,SLOT(button3(); connect(ui->pushButton_4,SIGNAL(clicked(),this,SLOT(button4(); connect(ui->pushButton_5,SIGNAL(clicked(),this,SLOT(button5(); connect(ui->pu

14、shButton_6,SIGNAL(clicked(),this,SLOT(button6(); connect(ui->pushButton_7,SIGNAL(clicked(),this,SLOT(button7(); connect(ui->pushButton_8,SIGNAL(clicked(),this,SLOT(button8(); connect(ui->pushButton_9,SIGNAL(clicked(),this,SLOT(button9(); connect(ui->pushButton_0,SIGNAL(clicked(),this,SLO

15、T(button0(); connect(ui->pushButton_point,SIGNAL(clicked(),this,SLOT(buttonPoint(); connect(ui->pushButton_add,SIGNAL(clicked(),this,SLOT(buttonAdd(); connect(ui->pushButton_sub,SIGNAL(clicked(),this,SLOT(buttonSub(); connect(ui->pushButton_mul,SIGNAL(clicked(),this,SLOT(buttonMul(); con

16、nect(ui->pushButton_division,SIGNAL(clicked(),this,SLOT(buttonDivision(); connect(ui->pushButton_equal,SIGNAL(clicked(),this,SLOT(buttonEqual(); connect(ui->pushButton_empty,SIGNAL(clicked(),this,SLOT(buttonEmpty(); connect(ui->pushButton_del,SIGNAL(clicked(),this,SLOT(buttonDel(); conne

17、ct(ui->pushButton_square,SIGNAL(clicked(),this,SLOT(buttonSquare(); connect(ui->pushButton_reciprocal,SIGNAL(clicked(),this,SLOT(buttonReciprocal(); connect(ui->pushButton_evolution,SIGNAL(clicked(),this,SLOT(buttonEvolution(); connect(ui->pushButton_factorial,SIGNAL(clicked(),this,SLOT(

18、buttonFactorial();Dialog:Dialog() delete ui;/QString sum,sum1;int aa; void Dialog:button1() sum = sum.append('1'); ui->lcdNumber->display(sum);void Dialog:button2() sum = sum.append('2'); ui->lcdNumber->display(sum);void Dialog:button3() sum = sum.append('3'); ui-

19、>lcdNumber->display(sum);void Dialog:button4() sum = sum.append('4'); ui->lcdNumber->display(sum);void Dialog:button5() sum = sum.append('5'); ui->lcdNumber->display(sum);void Dialog:button6() sum = sum.append('6'); ui->lcdNumber->display(sum);void Dia

20、log:button7() sum = sum.append('7'); ui->lcdNumber->display(sum);void Dialog:button8() sum = sum.append('8'); ui->lcdNumber->display(sum);void Dialog:button9() sum = sum.append('9'); ui->lcdNumber->display(sum);void Dialog:button0() sum = sum.append('0&#

21、39;); ui->lcdNumber->display(sum);void Dialog:buttonPoint() sum = sum.append('.'); ui->lcdNumber->display(sum);void Dialog:buttonEmpty() sum = ' ' ui->lcdNumber->display(0);void Dialog:buttonDel() sum = sum.left(sum.size()-1); ui->lcdNumber->display(sum);/void

22、 Dialog:buttonAdd() sum1 = sum; sum = ' ' aa = 0; QString str = sum1; str = str.append('+'); ui->label->setText(str);void Dialog:buttonSub() sum1 = sum; sum = ' ' aa = 1; QString str = sum1; str = str.append('-'); ui->label->setText(str);void Dialog:button

23、Mul() sum1 = sum; sum = ' ' aa = 2; QString str = sum1; str = str.append('*'); ui->label->setText(str);void Dialog:buttonDivision() sum1 = sum; sum = ' ' aa = 3; QString str = sum1; str = str.append('/'); ui->label->setText(str);void Dialog:buttonSquare()

24、QString str; str = sum; double a = str.toDouble();/ str = str.append;/ ui->label->setText(str); ui->lcdNumber->display(a*a); sum = sum.setNum(a*a);void Dialog:buttonReciprocal() QString str; str = sum; double a = str.toDouble();/ str = str.append; / ui->label->setText(str); ui->

25、lcdNumber->display(1/a); sum = sum.setNum(1/a);void Dialog:buttonEvolution() QString str; str = sum; double a = str.toDouble();/ str = str.append;/ ui->label->setText(str); a = sqrt(a); ui->lcdNumber->display(a); sum = sum.setNum(a);void Dialog:buttonFactorial() QString str; str = sum

26、; int a = str.toInt(); int b = a; for(int i = 1; i<b;i+) a = a * i; / str = str.append;/ ui->label->setText(str); ui->lcdNumber->display(a); sum = sum.setNum(a);void Dialog:buttonEqual() QString first,second,str; first = sum; second = sum1; double a = first.toDouble(); double b = second.toDouble(); sw

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論