迷你计算器设计-《嵌入式系统》课程设计说明书_第1页
迷你计算器设计-《嵌入式系统》课程设计说明书_第2页
迷你计算器设计-《嵌入式系统》课程设计说明书_第3页
迷你计算器设计-《嵌入式系统》课程设计说明书_第4页
迷你计算器设计-《嵌入式系统》课程设计说明书_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《嵌入式系统》课程设计说明书迷你计算器设计院、部:学生姓名:指导教师:专业:班级:完成时间:湖南工学院嵌入式系统课程设计课题任务书学院:电气与课题名称迷你计算器设计内容及任务一、目标在GEC210开发板上使用QT设计一个迷你计算器。二、任务根据控制要求,明确设计任务,拟定设计方案与进度计划,运用所学的理论知识,进行迷你计算器原理设计、程序框架设计、创新设计,提高理论知识、系统调试能力、分析问题与解决问题的能力。主要内容包括:嵌入式交叉开发环境搭建。Linux操作系统的移植。根据需求确定外围模块设计并完成相应驱动开发。应用程序原理及框架设计。Linux下应用程序编写及移植。系统总体功能调试。编写设计说明书。三、要求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教研室意见教研室主任:(签字)年月日绪论1.1项目背景随着计算机的飞速发展,人类已经进入信息化时代。信息技术发展日新月异,计算已经进入人们生活的各个领域,在现代生活中不可或缺,大型复杂的计算是人脑所不能胜任的,而且较易出错。以前的计算器只能进行简单的加减乘除四则运算,而且只能进行单步运算,如果遇到较长的算式时就得让用户一步一步输入,浪费很多时间,还会可能遗漏数据内容,让用户得多次输入算式验证,如果一次错误就得验证多遍,浪费时间效率低下。随着科技的发展,人们所学习的内容越来越多,需求越来越广泛。本文设计的计算器扩大了用户的运算领域。并且考虑到用户有时常用一些算式,提高了用户的效率,方便了用户的操作,本文设计中主要采用的技术为Qt,Qt为设计可视化界面,通过软件的设计可以快速设计出自己需要的界面,然后再到编写各个按键的槽函数与算法。1.2项目内容和要求1.2.1题目介绍设计一个简单功能的QT迷你计算器,具有普通计算窗口,满足生活中简单的需求,并设置算数优先级。1.2.2题目要求本次设计的计算器应具有以下功能:能够实现常用的加减乘除功能;能够实现开方,乘方,返回的功能;定能够实现数值的记忆存储功能当输入错误时,输出错误;可以一键回复计算器到初始状态.1.3项目意义及特点我们日常生活的开支,大额数字或是多倍小数的计算都需要计算器的帮助,处理数字的开方、正余弦都离不开计算器。虽然计算器现在价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格昂贵,操作不便不说,很多功能根本用不到。所以,我们可以运用自己所学的知识设计一款满足日常需求的简易计算器。在本次课程设计中比较好的把C++与Qt结合起来使用。Qt作为面向对象的软件开发工具它使用信号Signal/槽slot机制来进行对象间的通信。信号/槽机制是Qt的一个中心特征并且也许是Qt与其它工具包的最不相同的部分。这样便解决了我们在用户界面上的操作如单击某个按钮与内部对象之间的信号传输。Qt运行速度快、执行效率高再加上它提供了一组更容易理解的GUI类信号与槽易使用它所拥有的插入体系结构使得我们可以将代码加载到一个应用中而无需进行重新编译或重链接等优点为我们本次设计增色不少能使图形界面看起来更加舒服使用起来更加灵活。2需求分析2.1需求分析一在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。我们日常生活的开支,大额数字或是多倍小数的计算都需要计算器的帮助,处理数字的开方、正余弦都离不开计算器。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,操作不便不说,很多功能根本用不到。所以,我们想到可不可以用自己的所学为自己设计开发一个属于自己的简单计算器来完成日常生活的需求。计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用C++和Qt的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。本文的程序设计设计工作环境为Linux+QTCreator,在程序设计中,采用了结构化与面向对象两种解决问题的方法。2.2可行性分析可行性分析计算器是日常生活中非常便捷有效的工具,它具有普通计算和科学计算,能实现加减乘除等普通功能,还可以实现算是运算,并且可以进行进制装换,不再局限于十进制,他大大的提高了我们的效率,节省了时间,可促进科技的发展,还可以用来存储算式,可以方便下次使用,采用Qt编写,Qtdesigner设计的界面美观,还可以用拖拽功能进行设计控件的位置、大小、属性、结构等功能,这样在编写代码时就不用浪费时间对控件进行声明等代码了。这降低了程序员的难度,提高了程序员的效率,并且上手快,具有一定的可行性。技术经济分析是研究技术领域的经济问题和经济规律的科学,是研究一定技术条件下如何提高经济效果的科学,是技术与经济的交叉。在技术上,主要是采用linux,可以进行复杂的数据库操作,进行算是的增、删、改、查等功能。用Qt编写,有些类似C++,但大多数都是Qt封装好的函数。在linux中安装Qt软件,配置环境变量,并安装Qt插件。从而用Qt进行制作界面,做出的效果既美观又快捷方便。使用Qt具有良好美观的界面,必要的信息存储和和较好的健壮性,使用人员能够快捷简单的进行操作,可以快捷的获得计算结果给人们带来方便,对人们的生活有很大的帮助。3系统设计3.1系统流程图系统流程图如下所示:图1:系统流程图3.2模块设计3.2.1基本功能模块1)当用户单击"+"或"-"按钮时,系统将会调用additiveOperatorClicked()槽,additiveOperatorClicked()实现代码如下:voidWidget::additiveOperatorClicked(){QPushButton*clickedButton=qobject_cast<QPushButto*>(sender());QStringclickedOperator=clickedButton->text();doubleoperand=ui->display->text().toDouble();if(!pendingMultiplicativeOperator.isEmpty()){if(!calculate(operand,pendingMultiplicativeOperator)){abortOperation();return;}ui->display->setText(QString::number(factorSoFar));operand=factorSoFar;factorSoFar=0.0;pendingMultiplicativeOperator.clear();}if(!pendingAdditiveOperator.isEmpty()){if(!calculate(operand,pendingAdditiveOperator)){abortOperation();return;}ui->display->setText(QString::number(sumSoFar));}else{sumSoFar=operand;}pendingAdditiveOperator=clickedOperator;waitingForOperand=true;}进入这个函数后,会根据QPushButton*clickedButton=qobject_cast<QPushButto*>(sender());这句代码实现区分+还是-,并且判断存储前运算符变量中是否有值,如果有则将前面的值先算出。如果没有,则将第一个值存入,并将运算符存入。并且继续等待接下来的按钮,或者等号。2)当我们单击"×"或"÷"按钮时,系统将调用voidWidget::multiplicativeOperatorClicked(){QPushButton*clickedButton=qobject_cast<QPushButton*>(sender());QStringclickedOperator=clickedButton->text();doubleoperand=ui->display->text().toDouble();if(!pendingMultiplicativeOperator.isEmpty()){if(!calculate(operand,pendingMultiplicativeOperator)){abortOperation();return;}ui->display->setText(QString::number(factorSoFar));}else{factorSoFar=operand;}pendingMultiplicativeOperator=clickedOperator;waitingForOperand=true;}由于乘除的优先级比加减高,当我们进行混合运算,前面是加减法,再进行乘或除时,比如1+2*3,这是会计算2*3=6,将6存入。此时计算公式相当于1+6。3.2.2附加功能模块1)程序中backspaceClicked()用来实现退格功能.它会移除显示的数值的最后一位.如果显示屏中为空字符串,按下退格键将会显示0.waitingForOperand被设置为0.退格功能实现代码如下:voidCalculator::backspaceClicked(){if(waitingForOperand)return;QStringtext=display->text();text.chop(1);if(text.isEmpty()){text="0";waitingForOperand=true;}display->setText(text);}Clear()函数槽的功能相当于若干次backspaceClicked()的功能,它会一次清除显示屏中的数值.功能实现代码如下:voidCalculator::clear(){if(waitingForOperand)return;display->setText("0");waitingForOperand=true;}clearAll()函数会实现计算器的初始化状态,代码如下:voidCalculator::clearAll(){sumSoFar=0.0;factorSoFar=0.0;pendingAdditiveOperator.clear();pendingMultiplicativeOperator.clear();display->setText("0");waitingForOperand=true;}2)界面中sqrt和x^2是通过直接对界面设置值的方式实现,其代码如下所示voidWidget::sqrClicked(){doublesqr=ui->display->text().toDouble();ui->display->setText(QString::number(sqrt(sqr)));waitingForOperand=true;}voidWidget::squareClicked(){doublesqr=ui->display->text().toDouble();ui->display->setText(QString::number(sqr*sqr));waitingForOperand=true;}3)记忆存储功能功能实现代码如下:voidCalculator::clearMemory(){sumInMemory=0.0;}voidCalculator::readMemory(){display->setText(QString::number(sumInMemory));waitingForOperand=true;}voidCalculator::setMemory(){equalClicked();sumInMemory=display->text().toDouble();}voidCalculator::addToMemory(){equalClicked();sumInMemory+=display->text().toDouble();}clearMemory()函数可以清除存储的数值,readMemory()函数为显示存储的数值.setMemory()函数可以用当前显示的数值代替存储的数值,即设置数值功能,addToMemory(0函数可以把已经存储的数值加上当前显示的值并存储.4系统运行和测试4.1搭建开发环境1、准备安装软件包:启动RedHat9.0的图形界面,以root身份登陆在文本模式下,输入命令startx启动图形界面。进入RedHat9.0图形界面后,打开一个终端窗口(Terminal),点击【红帽SystemToolsTerminal】启动终端窗口。输入以下5条命令:①cd/pxa270_linux/Qt②cpqt-embedded-3.3.0.tar.gztmake-1.11.tar.gzexport.sh/home-arf③cd/home④tarzvxfqt-embedded-3.3.0.tar.gz⑤tarzvxftmake-1.11.tar.gz2、建立QTE开发环境:在上面打开的同一个终端(Terminal)中,输入以下4条命令来搭建整个QTE开发环境:①sourceexport.sh②cdqt-embedded-3.3.0③./configure–xplatformlinux–arm–g++-depths4,8,16,32在configure过程中,会出现如下打印的信息,请您进行如下对话选择:ThisistheQT/EmbeddedFreeEdition.YouarelicensedtousethissoftwareunderthetermsoftheGNUGeneralPublicLicense(GPL).Type'G'toviewtheGNUGeneralPublicLicense.Type'yes'toacceptthislicenseoffer.Type'no'todeclinethislicenseoffer.Doyouacceptthetermsofthelicense?输入:yes回车回车之后,系统就会开始配置,并生成相应的Makefile文件。当出现下列信息是,则表示配置系统完成。Qtisnowconfiguredforbuilding.Justrun/usr/bin/gmake.Toreconfigure,run/usr/bin/gmakeconfcleanandconfigure.当生成Makefile之后,在上面同一个终端窗口下输入第4条命令make对qt-embedded-3.3.0的源码开始进行编译。④make若编译过程中没有出现任何error,则会有如下提示:TheQtlibraryisnowbuiltin./libTheQtexamplesarebuiltinthedirectoriesin./examplesTheQttutorialsarebuiltinthedirectoriesin./tutorialNote:besuretoset$QTDIRtopointtohereortowhereveryoumovethesedirectories.Enjoy!-theTrolltechteam这样便搭建好了QT编译环境了,QtDesigner界面如图5所示: 图5:Qt界面4.2运行及测试在arm板下,/home目录中先执行sourceqtconf.sh运行这个脚本后,在arm上配置qt,加载qt运行的各类库文件。如图6所示:图6加载完QT运行所需要的库文件后即可运行qt文件。在命令行输入./cal,运行结果如图7所示.图7 运行可执行文件cal后,在arm板上显示如图8所示:图8输入1+2*3,计算器显示如图9所示:图9因为*的优先级大于+所以先计算2*3,然后计算1+6,结果为7当输入1/0的时候界面显示如图10所示:图10输入1/0,此时0为分母,公式错误,此时计算器输出###,报错。继续执行多次运算,计算器显示皆无误.关闭计算器,重启再执行运算,运算也无误,故此可断定程序设计正确.参考文献[1]张石,ARM嵌入式系统教程[M]。北京:机械工业出版社,2012[2]曹忠明,程姚根。从实践中学嵌入式Linux操作系统[M]。北京:电子工业出版社,2012[3]宋宝华,Linux设备驱动开发详解(第二版)[M]。北京:人民邮电出版社,2010。[4]韦东山,嵌入式Linux应用开发完全手册[M]。北京:人民邮电出版社,2008[5]陆文周,Qt5开发及实例[M]。北京:电子工业出版社,2015[6]StephenPrata,CPrimerPlus[M]。北京:人民邮电出版社,2005[7]皱思铁,嵌入式Linux

设计与应用[M]。北京:清华大学出版社,2002[8]闫放莺,基于嵌入式Linux

软件平台技术的研究[D]。西安:西北大学,2006

致谢经过两周的努力,在组员的互相协助下我们完成了该课程设计.虽然这次课程设计,充分利用了各种资源.有从网上下载的Qt教程,也有视频教程.还有从图书馆借来的相应参考书与光盘.以及研究生师兄师姐的帮忙.虽然是首次接触Linux系统下的开发以及Qt.其所独有的信号与槽机制也是第一次接触刚开始理解的确很吃力。但这次设计总的来说对我自己很有意义因为是刚接触嵌入式编程对于这次设计自己把它视做一次挑战自己查阅资料自己解决问题这样的过程中给了自己很大的成就感与信心。当然这次课程设计也锻炼了自己分析实现方面的能力。在学习理论知识的同时也能够自己动手去实现加深了自己对嵌入式的理解。这次的简易计算机的编写,能实现基本的加减乘除算法。通过此次的QT学习以及上学期的C++学习,深刻的了解到设计程序并不是一件简单的事情。而且这些学习只是让我了解到编程中的皮毛中的皮毛。并且通过网上了解到QT的强大功能;更使我对编程有了极大的兴趣;虽然现在本人的技术及知识还很贫乏,但是相信通过现在及日后的学习一定可以达到自己想要达到的水平;就这次的课程设计报告来说,从最初的相当陌生到现在的可以理解使用是一个学习的过程,激发了自己的学习兴趣。再次感谢给予我们帮助的同学和老师。附录附录:程序清单Widget.h:#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>#include<QPushButton>#include<cmath>#include<QString>#include<QDebug>namespaceUi{classWidget;}classWidget:publicQWidget{Q_OBJECTpublic:explicitWidget(QWidget*parent=0);~Widget();private:Ui::Widget*ui;doublesumInMemory;doublesumSoFar;doublefactorSoFar;boolwaitingForOperand;QStringpendingAdditiveOperator;QStringpendingMultiplicativeOperator;publicslots:voiddigitClicked();voidclearall();voidpoint();voidadditiveOperatorClicked();voidmultiplicativeOperatorClicked();voidabortOperation();voidequalClicked();voidsqrClicked();voidsquareClicked();voidbackspaceClicked();boolcalculate(doublerightOperand,constQString&pendingOperator);};#endif//WIDGET_HWidget.cpp:#include"widget.h"#include"ui_widget.h"Widget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){this->move(190,60);ui->setupUi(this);sumInMemory=0.0;sumSoFar=0.0;factorSoFar=0.0;waitingForOperand=true;pendingAdditiveOperator.clear();pendingMultiplicativeOperator.clear();ui->display->setText("0");connect(ui->bnt_0,SIGNAL(clicked()),this,SLOT(digitClicked()));connect(ui->bnt_1,SIGNAL(clicked()),this,SLOT(digitClicked()));connect(ui->bnt_2,SIGNAL(clicked()),this,SLOT(digitClicked()));connect(ui->bnt_3,SIGNAL(clicked()),this,SLOT(digitClicked()));connect(ui->bnt_4,SIGNAL(clicked()),this,SLOT(digitClicked()));connect(ui->bnt_5,SIGNAL(clicked()),this,SLOT(digitClicked()));connect(ui->bnt_6,SIGNAL(clicked()),this,SLOT(digitClicked()));connect(ui->bnt_7,SIGNAL(clicked()),this,SLOT(digitClicked()));connect(ui->bnt_8,SIGNAL(clicked()),this,SLOT(digitClicked()));connect(ui->bnt_9,SIGNAL(clicked()),this,SLOT(digitClicked()));connect(ui->bnt_c,SIGNAL(clicked()),this,SLOT(clearall()));connect(ui->bnt_op,SIGNAL(clicked()),this,SLOT(point()));connect(ui->bnt_ad,SIGNAL(clicked()),this,SLOT(additiveOperatorClicked()));connect(ui->bnt_su,SIGNAL(clicked()),this,SLOT(additiveOperatorClicked()));connect(ui->bnt_mu,SIGNAL(clicked()),this,SLOT(multiplicativeOperatorClicked()));connect(ui->bnt_di,SIGNAL(clicked()),this,SLOT(multiplicativeOperatorClicked()));connect(ui->bnt_eq,SIGNAL(clicked()),this,SLOT(equalClicked()));connect(ui->bnt_sqr,SIGNAL(clicked()),this,SLOT(sqrClicked()));connect(ui->bnt_squ,SIGNAL(clicked()),this,SLOT(squareClicked()));connect(ui->bnt_back,SIGNAL(clicked()),this,SLOT(backspaceClicked()));}Widget::~Widget(){deleteui;}voidWidget::digitClicked(){QPushButton*clickedButton=qobject_cast<QPushButton*>(sender());intdigitValue=clickedButton->text().toInt();if(ui->display->text()=="0"&&digitValue==0.0)return;if(waitingForOperand){ui->display->clear();waitingForOperand=false;}ui->display->setText(ui->display->text()+QString::number(digitValue));}voidWidget::clearall(){sumInMemory=0.0;sumSoFar=0.0;factorSoFar=0.0;waitingForOperand=true;pendingAdditiveOperator.clear();pendingMultiplicativeOperator.clear();ui->display->setText("0");}voidWidget::point(){if(waitingForOperand)ui->display->setText("0");if(!ui->display->text().contains("."))ui->display->setText(ui->display->text()+tr("."));waitingForOperand=false;}voidWidget::additiveOperatorClicked(){QPushButton*clickedButton=qobject_cast<QPushButton*>(sender());QStringclickedOperator=clickedButton->text();doubleoperand=ui->display->text().toDouble();if(!pendingMultiplicativeOperator.isEmpty()){if(!calculate(operand,pendingMultiplicativeOperator)){abortOperation();return;}ui->display->setText(QString::number(factorSoFar));operand=factorSoFar;factorSoFar=0.0;pendingMultiplicativeOperator.clear();}if(!pendingAdditiveOperator.isEmpty()){if(!calculate(operand,pendingAdditiveOperator)){abortOperation();return;}ui->display->setText(QString::number(sumSoFar));}else{sumSoFar=operand;}pendingAdditiveOperator=clickedOperator;waitingForOperand=true;}boolWidget::calculate(doublerightOperand,constQString&pendingOperator){if(pendingOperator==tr("+")){sumSoFar+=rightOperand;}elseif(pendingOperator==tr("-")){sumSoFar-=rightOperand;}elseif(pendingOperator==tr("*")){factorSoFar*=rightOperand;}elseif(pendingOperator==tr("/")){if(rightOperand==0.0){pendingAdditiveOperator.clear();pendingMultiplicativeOperator.clear();sumSoFar=0;factorSoFar=0;sumInMemory=0;returnfalse;}factorSoFar/=rightOperand;}returntrue;}voidWidget::multiplicativeOperatorClicked(){QPushButton*clickedButton=qobject_cast<QPushButton*>(sender());QStringclickedOperator=clickedButton->text();doubleoperand=ui->display->text().toDouble();if(!pendingMultiplicativeOperator.isEmpty()){if(!calculate(operand,pendingMultiplicativeOperator)){abortOperation();return;}ui->display->setText(QString::number(factorSoFar));}else{factorSoFar=operand;}pendingMultiplicativeOperator=clickedOperator;waitingForOperand=true;}voidWidget::equalClicked(){doubleoperand=ui->display->text().toDouble();if(!pendingMultiplicativeOperator.isEmpty()){if(!calculate(operand,pendingMultiplicativeOperator)){abortOperation();return;}operand=factorSoFar;factorSoFar=0.0;pendingMultiplicativeOperator.clear();}if(!pendingAdditiveOperator.isEmpty()){if(!calculate(operand,pendingAdditiveOperator)){abortOperation();return;}pendingAdditiveOperator.clear();}else{sumSoFar=operand;}ui->display->setText(QString::number(sumSoFar));sumSoFar=0.0;waitingForOperand=true;}voidWidget::sqrClicked(){doublesqr=ui->display->text().toDouble();ui->display->setText(QString::number(sqrt(sqr)));waitingForOperand=true;}voidWidget::squareClicked(){doublesqr=ui->display->text().toDouble();ui->display->setText(QString::number(sqr*sqr));waitingForOperand=true;}voidWidget::backspaceClicked(){if(waitingForOperand)return;QStringtext=ui->display->text();text.chop(1);if(text.isEmpty()){text="0";waitingForOperand=true;}ui->display->setText(text);}voidWidget::abortOperation(){clearall();ui->display->setText(tr("####"));}Main.cpp:#include"widget.h"#include<QApplication>intmain(intargc,char*argv[]){QApplicationa(argc,argv);Widgetw;w.show();returna.exec();}基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发基于Cygnal单片机的μC/OS-Ⅱ的研究HYPERLINK"/deta

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论