计算器仿真

计算器仿真
计算器仿真

#include

#include"LCD1602.h"

#define uint unsigned int

#define uchar unsigned char

uchar a[16]={'0','1','2','3','4','5','6','7','8','9','+','-','*','/','='};

uchar b[10],c[10],out[6]; // 显示符号前符号后等号后uchar flag=0,fh=0,ql=0,denghao=0; // 标记

uint n=0,n1=0,n2=0; //位数

uint aa,s1,s2; //运算结果

void keyscan(); //检测按键

void fhq(); //符号前

void fhh(); //符号后

void yunsuan(); //运算

void fenjie(uint ); //分解

void delayms(uint); //延时

void qingling();

void dis() //显示

{

LCD_Prints(1,0,b);

}

void main() //主

{

LCD_Initial();

while(1)

{

keyscan();

if(ql==1)

{qingling();}

else

{

dis();

fhq();

fhh();

if(denghao==1) LCD_Prints(10,1,out);

}

}

}

void delayms(uint xms) //延时

{ uint k,j;

for(j=xms;j>0;j--)

for(k=113;k>0;k--);

}

void keyscan() //检测按键

{ uchar temp,key;

P3=0xfe;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delayms(10);

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case 0xee:

key=0;

break;

case 0xde:

key=1;

break;

case 0xbe:

key=2;

break;

case 0x7e:

key=3;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

b[n]=a[key];

n++;

if(flag==1)

{ c[n2]=a[key];

n2++;

}

else n1++;

}

}

P3=0xfd;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delayms(10);

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case 0xed:

key=4;

break;

case 0xdd:

key=5;

break;

case 0xbd:

key=6;

break;

case 0x7d:

key=7;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

b[n]=a[key];

n++;

if(flag==1)

{ c[n2]=a[key];

n2++;

}

else n1++;

}

}

P3=0xfb;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delayms(10);

if(temp!=0xf0)

{

temp=P3;

switch(temp)

case 0xeb:

key=8;

b[n]=a[key];

n++;

if(flag==1)

{ c[n2]=a[key];

n2++;

}

else n1++;

break;

case 0xdb:

key=9;

b[n]=a[key];

n++;

if(flag==1)

{ c[n2]=a[key];

n2++;

}

else n1++;

break;

case 0xbb:

fh=0; //+

b[n]=a[10];

n++;

flag=1;

break;

case 0x7b: // -

fh=1;

b[n]=a[11];

n++;

flag=1;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

P3=0xf7;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delayms(10);

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case 0xe7:

fh=2; //***

b[n]=a[12];

n++;

flag=1;

break;

case 0xd7:

fh=3; ///chu

b[n]=a[13];

n++;

flag=1;

break;

case 0xb7:

key=14; //====

b[n]=a[14];

denghao=1;

yunsuan();

break;

case 0x77:

key=15; //000

ql=1;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

void fhq() //符号前数

{

if(flag==1)

{

switch(n1)

{ //char转化int十进制

case 1:{ s1= b[0]-0x30;} break;

case 2:{ s1=(b[0]-0x30)*10+b[1]-0x30;} b reak;

case 3:{ s1=(b[0]-0x30)*100+(b[1]-0x30)*10+b[2]-0x30;} break;

case 4:{ s1=(b[0]-0x30)*1000+(b[1]-0x30)*100+(b[3]-0x30)*10+b[3]-0x30;} break;

case

5:{ s1=(b[0]-0x30)*100000+(b[1]-0x30)*1000+(b[2]-0x30)*100+(b[3]-0x30)*10+b[4]-0x30;} break;

}

}

}

void fhh() //符号后数

{

if(flag==1)

switch(n2)

{

case 1:{ s2=c[0]-0x30;} break; //字符型char 转化int十进制

case 2:{ s2=(c[0]-0x30)*10+c[1]-0x30;} break;

case 3:{ s2=(c[0]-0x30)*100+(c[1]-0x30)*10+c[2]-0x30;} break;

case 4:{ s2=(c[0]-0x30)*1000+(c[1]-0x30)*100+(c[3]-0x30)*10+c[3]-0x30;} break;

case

5:{ s2=(c[0]-0x30)*100000+(c[1]-0x30)*1000+(c[2]-0x30)*100+(c[3]-0x30)*10+c[4]-0x30;} break;

}

}

void yunsuan()

{

switch(fh) //检验+ - * 、运算

{

case 0: { aa=s1+s2;fenjie(aa);} break;

case 1: { aa=s1-s2;fenjie(aa);} break;

case 2: { aa=s1*s2;fenjie(aa);} break;

case 3: { aa=s1/s2;fenjie(aa);} break;

}

}

void fenjie(uint b) //分解

{if(100000>b&&b>=10000) //比较数的大小去前面的零{

out[0]=b/10000+0x30;

out[1]=b%10000/1000+0x30;

out[2]=b%1000/100+0x30;

out[3]=b%100/10+0x30;

out[4]=b%10+0x30;

}

if(10000>b&&b>=1000)

{

out[0]=b/1000+0x30;

out[1]=b%1000/100+0x30;

out[2]=b%100/10+0x30;

out[3]=b%10+0x30;

}

if(1000>b&&b>=100)

{

out[0]=b/100+0x30;

out[1]=b%100/10+0x30;

out[2]=b%10+0x30;

}

if(100>b&&b>=10)

{

out[0]=b/10+0x30;

out[1]=b%10+0x30;

}

if(10>b&&b>=0)

{

out[0]=b%10+0x30;

}

}

void qingling()

{

uint i ,j;

for(i=0;i<=n;i++)

{

b[i]='\n';

}

for(j=0;j<6;j++)

{

out[j]='\n';

}

LCD_Prints(1,0,b);

LCD_Prints(10,1,out);

n=0;

flag=0;

n1=0;

n2=0;

denghao=0;

ql=0;

}

计算器模拟系统设计-毕业设计

计算器模拟系统设计 学生:XXX 指导教师:XXX 内容摘要:本设计是基于51系列的单片机进行的简易计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED 上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件选择AT89C51单片机和 74lS164,输入用4×4矩阵键盘。显示用5位7段共阴极LED静态显示。软件从分析计算器功能、流程图设计,再到程序的编写进行系统设计。选用编译效率最高的Keil 软件用汇编语言进行编程,并用proteus仿真。 关键词:LED 计算器 AT89C51芯片 74LS164

Calculator simulation system desig n Abstract:The design is a simple calculator based on 51 series microcontroller system design, to complete the calculator keyboard input, add, subtract, multiply, and in addition to three unsigned numeric simple four operations, and the corresponding result will be displayed on the LED. The design process of hardware and software aspects of the synchronous design. Hardware choose AT89C51 microcontroller and 74ls164--enter the 4 × 4 matrix keyboard. Static display with five 7-segment common cathode LED display. Software calculator function from the analysis, flow charts, design, and then program the preparation of system design. Selected to compile the most efficient Keil software in assembly language programming, and with proteus simulation. Keywords: LED calculator AT89C51 chip 74LS164

计算机仿真技术与CAD习题答案

第0章绪论 0-1 什么是仿真?它所遵循的基本原则是什么? 答: 仿真是建立在控制理论、相似理论、信息处理技术和计算机技术等理论基础之上的,以计算机和其他专用物理效应设备为工具,利用系统模型对真实或假想的系统进行试验,并借助专家经验知识、统计数据和信息资料对试验结果进行分析和研究,进而做出决策的一门综合性的试验性科学。 它所遵循的基本原则是相似原理。 0-2 仿真的分类有几种?为什么? 答: 依据相似原理来分:物理仿真、数学仿真和混合仿真。 物理仿真:就是应用几何相似原理,制作一个与实际系统相似但几何尺寸较小或较大的物理模型(例如飞机模型放在气流场相似的风洞中)进行实验研究。 数学仿真:就是应用数学相似原理,构成数学模型在计算机上进行研究。它由软硬件仿真环境、动画、图形显示、输出打印设备等组成。 混合仿真又称数学物理仿真,它是为了提高仿真的可信度或者针对一些难以建模的实体,在系统研究中往往把数学仿真、物理仿真和实体结合起来组成一个复杂的仿真系统,这种在仿真环节中有部分实物介入的混合仿真也称为半实物仿真或者半物理仿真。 0-3 比较物理仿真和数学仿真的优缺点。 答: 在仿真研究中,数学仿真只要有一台数学仿真设备(如计算机等),就可以对不同的控制系统进行仿真实验和研究,而且,进行一次仿真实验研究的准备工作也比较简单,主要是受控系统的建模、控制方式的确立和计算机编程。数学仿真实验所需的时间比物理仿真大大缩短,实验数据的处理也比物理仿真简单的多。 与数学仿真相比,物理仿真总是有实物介入,效果直观逼真,精度高,可信度高,具有实时性与在线性的特点;但其需要进行大量的设备制造、安装、接线及调试工作,结构复杂,造价较高,耗时过长,灵活性差,改变参数困难,模型难以重用,通用性不强。 0-4 简述计算机仿真的过程。 答: 第一步:根据仿真目的确定仿真方案 根据仿真目的确定相应的仿真结构和方法,规定仿真的边界条件与约束条件。 第二步:建立系统的数学模型 对于简单的系统,可以通过某些基本定律来建立数学模型。而对于复杂的系统,则必须利用实验方法通过系统辩识技术来建立数学模型。数学模型是系统仿真的依据,所以,数学模型的准确性是十分重要。

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

matlab课程教学设计(简单计算器的设计)

matlab课程设计报告 题目简易计算器的设计 学院电子信息工程学院 专业电子信息 学生姓名和学号 指导教师

一、选题目的及意义 GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作,而在matlab有很简单的gui设计工具,我们可以通过这个工具轻松地构建我们想要的程序,从而实现与用户的信息交互。本次课程设计是使用了matlab中的guide生成了简单的计算器程序。 二、源代码 function varargout = Calculator(varargin) %Simple Calculator %@Anhui University % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Calculator_OpeningFcn, ... 'gui_OutputFcn', @Calculator_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

51单片机的简单计算器设计和仿真

基于单片机的简易计算器设计与仿真

设计题目:基于单片机的简易计算器设计与仿真 一、设计实验条件: 地点:自动化系实验室 实验设备:PC机(装有Keil;Protues;Word ;Visio ) 二、设计任务: 本系统选用AT89C51单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下: (1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD 显示数据和结果。 (2)采用键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键(on\c)和等号键(=),故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示围时,计算器会在LCD上提示overflow;当除数为0时,计算器会在LCD上提示error。 设计要求:分别对键盘输入检测模块;LCD显示模块;算术运算模块;错误处理及提示模块进行设计,并用Visio画系统方框图,keil与protues仿真 分析其设计结果。 三、设计时间与设计时间安排:

1、设计时间:6月27日~7月8日 2、设计时间安排: 熟悉课题、收集资料:3天(6月27日~6月29日) 具体设计(含上机实验):6天(6月30日~7月5日) 编写课程设计说明书:2天(7月6日~7月7日) 答辩:1天(7月8日) 四、设计说明书的容: 1、前言:(自己写,组员之间不能相同,写完后将红字删除,排版时注意对齐) 本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除基本四则运算,并在LCD上显示相应的结果;设计电路采用AT89C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入;显示采用字符LCD静态显示;软件方面使用C语言编程,并用PROTUES仿真。 2、设计题目与设计任务: 现实生活中人们熟知的计算器,其功能主要如下:(1)键盘输入;(2)数值显示;(3)加、减、乘、除四则运算;(4)对错误的控制及提示。 针对上述功能,计算器软件程序要完成以下模块的设计:(1)键盘输入检测模块;(2)LCD显示模块;(3)算术运算模块;(4)错误处理及提示模块。 3、主体设计部分: (1)、系统模块图:

8086简易计算器的设计

一、设计题目及目的 本次课程设计的实验目的是:通过该实验掌握较复杂程序的设计;能独立完成用程序对8086、8255A控制键盘和LED显示的控制,完成计算器加减法的应用;独立编写程序,明白和掌握程序的原理和实现方式;学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用;进一步加强理论知识与应用相结合的实践和锻炼,为以后的设计提供经验。这次设计实践,加深了我对专业知识和理论知识学习的认识和理解,使我的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。我们的具体任务是用8086设计一个能实现0~9整数加减乘除法的运算器,并用2位LED数码显示,键盘包括0-9,+ ,-,×,÷,=,NO/C共16个按键。 二、小组成员分工及成果 在实验课程要求下,我们选择基于8086CPU的模拟计算器设计。要完成设计首先需要构建简单的微型计算机应用系统,其次是确定组成各部件的芯片,然后画原理图,根据相应的原理以及实现过程,编写出相应的汇编代码。再根据原理图连接硬件电路,电路连接完成后进行调试。设计过程中我们用到了8086CPU、可编程并行输入/输出芯片8255A、 74HC138、74HC373、矩阵式键盘、LED数码管。我们的模拟计算器能实现2位十进制数以内的加减乘除法运算。 首先,本组的三个成员一起讨论研究简易计算器设计的主要方案。 粗略设计程序流程图以确定简易计算器设计的大概框架。 明确目的后各自查询资料了解设计原理、逐步清晰设计思路。 以下为大体分工:主要负责:1、设计主要程序,编写; 2、查找资料验证修改; 主要负责:1、选择需要用的各个芯片; 2、设计硬件原理图; 主要负责:1、各个芯片功能的资料查找; 2、设计程序流程图 三、设计方案思路 用8086设计一个能实现0~9整数加减乘除法的运算器,并用2位LED数码显示,键盘包括0-9,+ ,-,×,÷,=,NO/C共16个按键。 1、通过小键盘做加减乘除运算。 2、数码管显示器作输入数据和结果数据的显示。 3、数字用小键盘0~9,“C、+、-、×、÷、= ”做功能键 4、运算顺序:a.首先输入一个原始数据(在0~9之间,否则无反应)显示器跟随显示 b.按“+、-、×、÷”显示器内容不变 c.再次输入一个数据(在0~9之间,否则无反应)显示器跟随显示 d.按“=”显示器显示结果数据 e.按C显示“00”数据清0,并重新开始运算 f.若输入一个数据后直接按“=”则数据不变 设计思路: 将整个程序划分为键盘扫描部分,显示部分,运算程序部分。首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序实现运算。运算完成后将运算的结果储存并显示到LED显示器上。 软件流程大致如下:开始,然后是系统的初始化,进行键盘扫描,对扫描的键值进行判断(分为数字键和功能键),若为数字键,则执行数字键处理程序,即显示数字并将数值存储;若为功能键,则先判断是否为清屏,如是清屏,则执行清屏子程序,如是加减乘除运算键则调用相应程序运算,如是等号键,则先判断上个符号位,调用相对应的运算子程序进行运算,如此就可以得到需要的结果了。

用MATLAB做一个计算器_包括加减乘除_平方_清空等功能

广西科技大学MATLAB课程设计说明书 课题:设计简易计算器 开发环境:MATLAB GUIDE 作者: 系别: 专业: 时间:

实验目的:1、熟悉MATLAB的主要控件使用方法。 2、熟悉MATLAB的GUI设计流程。 实验环境: 编程软件:MATLAB7.0 实验内容与结果: 使用MATLAB的GUI接口设计一个简单的计算器。 效果图: 一、布局GUI。 1.打开Matlab,输入Guide 回车或者在工具栏上点击图标出现Guide 窗口:

2.然后双击“Blank GUI(Default)”出现GUI窗口 3.添加按钮

4.根据按钮的作用及视觉效果做一定的修改 把按钮的字符串大小、颜色进行设置,对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。最终设置的静态文本框为白色,其他按钮均为分红色。 5.保存、添加功能函数 把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应的pushbutton添加功能函数。以下是相应按钮的功能函数。 (1)数字按键编写。 在function pushbutton1_Callback(hObject, eventdata, handles)下输入:textString = get(handles.text1,'String'); textString =strcat(textString,'0'); set(handles.text1,'String',textString) 这是使用句柄handles指向对象text1,并以字符串形式来存储数据文本框text1的内容,并存储数个“0”, 然后由set(handles.text1,'String','textString'在text1中输出。

基于8086与Proteus仿真的44键盘计算器的设计

基于8086与Proteus仿真的4*4键盘计算器的设计 一、设计目的 本次课程设计的实验目的是通过该实验掌握较复杂程序的设计。能够独立完成用程序对8086、8255控制键盘和LED显示的控制,完成计算器加减法的应用。独立编写程序,明白和掌握程序的原理和实现方式。为以后的设计提供经验。学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。 二、设计内容 设计计算器,要求至少能完成多位数的加减乘除运算。独立完成用程序对8086、8255控制键盘和LED显示的控制,完成计算器加减乘除的应用。 三、设计原理与硬件电路 设计的思路是:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序完成数据的储存或者是加减的运算。运算完成后将运算的结果储存并显示到LED显示器上。 各部分硬件功能:

可编程并行通信接口芯片8255A 8255A内部结构:1. 并行输入/输出端口A,B,C 8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7~PA0、PB7~PB0、PC7~PC0。端口都是8位,都可以作为输入或输出。通常将端口A和端口B定义为输入/输出的数据端口,而端口C则既可以作数据端口,又可以作为端口A和端口B的状态和控制信息的传送端口。 2.A组和B组控制部件 端口A和端口C的高4位(PC7~PC4)构成A组;由A组控制部件实现控制功能。端口B和端口C的低4位(PC3~PC0)构成B组;由B组控制部件实现控制功能。 A组和B组利用各自的控制单元来接收读写控制部件的命令和CPU通过数据总线(D0~D7)送来的控制字,并根据他们来定义各个端口的操作方式。 3. 数据总线缓冲存储器 三态双向8位缓冲器,是8255A与8086CPU之间的数据接口。

计算机仿真课程设计

附件1: 北京理工大学珠海学院 《计算机仿真》课程设计说明书题目: 控制系统建模、分析、设计和仿真 学院:信息学院 专业班级: 学号: 学生姓名: 指导教师: 2012年6 月16 日 附件2: 北京理工大学珠海学院 课程设计任务书 2011 ~2012 学年第2学期 学生姓名:专业班级: 指导教师:工作部门:信息学院 一、课程设计题目 《控制系统建模、分析、设计和仿真》 本课程设计共列出10个同等难度的设计题目,编号为:[0号题]、[1号题]、[2号题]、[3号题]、[4号题]、[5号题]、[6号题]、[7号题]、[8号题]、[9号题]。 学生必须选择与学号尾数相同的题目完成课程设计。例如,学号为8xxxxxxxxx2的学生必须选做[2号题]。

[0号题] 控制系统建模、分析、设计和仿真 设连续被控对象的实测传递函数为: 用零阶保持器离散化,采样周期取秒,分别设计一单位加速度信号输入时的最少拍有波纹控制器Dy(z)和一单位速度信号输入时的最少拍无波纹控制器Dw(z)。具体要求见(二)。 [1号题] 控制系统建模、分析、设计和仿真 设连续被控对象的实测传递函数为: 用一阶保持器离散化,采样周期取秒,分别设计一单位加速度信号输入时的最少拍有波纹控制器Dy(z)和一单位速度信号输入时的最少拍无波纹控制器Dw(z)。具体要求见(二)。 [2号题] 控制系统建模、分析、设计和仿真 设连续被控对象的实测传递函数为: 用零阶保持器离散化,采样周期取秒,分别设计一单位加速度信号输入时的最少拍有波纹控制器Dy(z)和一单位速度信号输入时的最少拍无波纹控制器Dw(z)。具体要求见(二)。 [3号题] 控制系统建模、分析、设计和仿真 设连续被控对象的实测传递函数为: 用一阶保持器离散化,采样周期取秒,分别设计一单位加速度信号输入时的最少拍有波纹控制器Dy(z)和一单位速度信号输入时的最少拍无波纹控制器Dw(z)。具体要求见(二)。 [4号题] 控制系统建模、分析、设计和仿真 设连续被控对象的实测传递函数为: 用零阶保持器离散化,采样周期取秒,分别设计一单位加速度信号输入时的最少拍有波纹控制器Dy(z)和一单位速度信号输入时的最少拍无波纹控制器Dw(z)。具体要求见(二)。 [5号题] 控制系统建模、分析、设计和仿真 设连续被控对象的实测传递函数为: 用一阶保持器离散化,采样周期取秒,分别设计一单位加速度信号输入时的最少拍有波纹 控制器Dy(z)和一单位速度信号输入时的最少拍无波纹控制器Dw(z)。具体要求见(二)。 [6号题] 控制系统建模、分析、设计和仿真 设连续被控对象的实测传递函数为: 用零阶保持器离散化,采样周期取秒,分别设计一单位加速度信号输入时的最少拍有波纹 控制器Dy(z)和一单位速度信号输入时的最少拍无波纹控制器Dw(z)。具体要求见(二)。 [7号题] 控制系统建模、分析、设计和仿真

用MATLAB GUI设计简单计算器

HUBEI NORMAL UNIVERSITY 《MATLAB与仿真》课程设计论文 Course’s Thesis

摘要 基于MATLAB GUI的计算器设计是利用GUIDE创建图形用户界面进行计算器设计。设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进行计算器界面与功能的设计。通过调整控件和文本的布局及颜色,使界面简单大方、布局合理,达到界面友好的效果。 计算器设计时主要利用到get和set两个函数进行各个控件属性值的传递和设置。计算器实现的功能有:数字0~9和小数点的输入显示,平方、开平方和对数的输入显示。进行四则运算、正弦计算、余弦计算、正切计算和余切计算,可以求阶乘、求百分数和求倒数。可以进行括号及变量x与变量y的输入,结合坐标轴编辑框和曲线颜色编辑框实现函数的曲线绘制。最后运行调试,实现基于MATLAB GUI的计算器的设计。 MATLAB GUI介绍 MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。 MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂,主要面对科学计算、可视化以及交互式程设计的高科技计算环境。MATLAB是将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效 数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,特别是所附带的30多种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。 MATLAB的图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。MATLAB的图形用户界(GUI)是由光标,窗口,菜单、文字说明等对象构成一个用户界面。用户可以通过键盘输入相关的参数,通过鼠标选择、激活这些对象,使计算机完成相关的计算或者绘制波形等功能。MATLAB的GUI为开发者提供了一个不脱离MATLAB的开发环境,有助于MATLAB程序的GUI集成。这样可以使开发者不必理会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界面,甚至达到多媒体的效果。可以说MATLAB提供了一个简便的开发环境,可以让开发者快速上手,提高了开发者的工作效率。 MATLAB的图形界面设计是通过对各种图形对象的操作来实现的,因此用户在使用的过程需要深入了解各种图形对象的特征、属性和操作。由此可见,图形用户界面的设计、制作是一件比较繁琐的工作。图形用户界面的创建一般有两种常用的方式:第一是通过使用m文件直接动态添加控件;第二是使用GUIDE快速生成GUI界面。这两种实现的方法都需要使用M语言编程,但是技术的侧重点不同。所谓的GUIDE就是图形用户界面开发环境 (Graphical User Interface Development Environment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。GUIDE可以完成的任务有如下两点:第一是输出GUI,第二是GUI编程。GUIDE

基于单片机的简易计算器设计与仿真

专业课程设计 ————基于单片机的简易计算器设计与仿真 学院:电气工程学院 班级:10自动化1班 学号:P101813378 姓名:陈辉、马维谦 指导老师:吴韬

基于单片机的简易计算器设计与仿真 摘要 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。 计算机在人们的日常生活中是比较常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计是用AT89C52 单片机、LCD显示器、控制按键为元件来设计的计算器。利用此设计熟悉单片机微控制器及C语言编程,对其片资源及各个I/O端口的功能和基本用途的了解。掌握Microsoft Visual C++ 6.0应用程序开发环境,常用的LCD显示器的使用方法和一般键盘的使用方法。 关键字:AT89S51 LCD 控制按键

目录 第一章绪论.................................................................................. 4 1.1 课题简介 .......................................................................... 4 1.2 设计目的 .......................................................................... 4 1.3 设计任务 .......................................................................... 4 2.1 单片机发展现状 .............................................................. 5 2.2 计算器系统现状 .............................................................. 62.3 MCS-51系列单片机简介 ...................................................... 7 2.4 矩阵按键 ...................................................................... 11 2.5 计算器设计总体思想 .................................................. 11第三章硬件系统设计 ............................................................. 12 3.1 键盘接口电路 .............................................................. 12 3.2 LCD显示模块 ............................................................... 13 3.3 运算模块 ...................................................................... 14 4.1 汇编语言和C语言的特点及选择 ................................... 144.2 键扫程序设计 ................................................................... 14 4.3 算术运算程序设计 ...................................................... 15 4.4 显示程序设计 .............................................................. 16第五章系统调试与存在的问题 ............................................. 17 5.1 硬件调试............................................................................ 175.2 软件调试............................................................................ 17参考文献.................................................................................... 19

MATLAB计算机仿真设计

《计算机仿真技术》 课程设计 姓名: 学号: 班级: 1 专业: 学院: 2016年12月24日

目录 一、设计目的 (1) 二、设计任务 (1) 三、具体要求 (1) 四、设计原理概述 (1) 五、设计内容 (2) 六、设计方案及分析 (2) 1、观察原系统性能指标 (2) 2、手动计算设计 (6) 3、校正方案确定 (8) 七、课程设计总结 (14)

模拟随动控制系统的串联校正设计 一、设计目的 1、通过课程设计熟悉频域法分析系统的方法原理。 2、通过课程设计掌握滞后-超前校正作用与原理。 3、通过在实际电路中校正设计的运用,理解系统校正在实际中的意义。 二、设计任务 控制系统为单位负反馈系统,开环传递函数为) 1025.0)(11.0()(G ++=s s s K s ,设计校正装置,使系统满足下列性能指标:开环增益100K ≥;超调量30%p σ<; 调节时间ts<0.5s 。 三、具体要求 1、使用MATLAB 进行系统仿真分析与设计,并给出系统校正前后的 MATLAB 仿真结果,同时使用Simulink 仿真验证; 2、使用EDA 工具EWB 搭建系统的模拟实现电路,分别演示并验证校正前 和校正后的效果。 四、设计原理概述 校正方式的选择:按照校正装置在系统中的链接方式,控制系统校正方式分 为串联校正、反馈校正、前馈校正和复合校正4种。串联校正是最常用的一种校 正方式,这种方式经济,且设计简单,易于实现,在实际应用中多采用这种校正 方式。串联校正方式是校正器与受控对象进行串联链接的。本设计按照要求将采 用串联校正方式进行校正。 校正方法的选择:根据控制系统的性能指标表达方式可以进行校正方法的确 定。本设计要求以频域指标的形式给出,因此采用基于Bode 图的频域法进行校 正。 几种串联校正简述:串联校正可分为串联超前校正、串联滞后校正和滞后- 超前校正等。 超前校正的目的是改善系统的动态性能,实现在系统静态性能不受损的前提

最新8086简易计算器的设计微机原理计硬报告整理

计算机硬件技术实践报告 题目简易计算器的设计 姓名 专业自动化(电站方向) 班级 学号 上海电力学院自动化工程学院

实践报告内容(目录) 一. 设计题目 二. 开发目的 三. 小组成员分工及成果 四. 设计方案以及论证 五. 硬件原理图(包括芯片的选型介绍) 六. 程序流程图(包括各个子系统和子过程的程序流程) 七. 程序清单,要有适当的注释 八. 程序运行结果分析与预测 九. 结果评述或总结(对实验结果进行分析,对实验过程进行总 结,系统改进升级建议或者提出新的方案等。)

一. 设计题目: 用8086设计一个能实现0~9整数加法运算的计算器,并用2位LED数码显示. 键盘包括0-9,+ ,-,*,/,=,ON/C;共16个按键.能实现简单的清零操作,减法运算,乘法运算. 二.开发目的: 通过课程设计,熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机 开发应用方面的初步训练。培养集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,做到理论联系实际,提高动手能力和分析问题、解决问题的能力, 实现由学习知识到应用知识的初步过渡。通过本次课程设计熟练运用程序对8255控制键盘和LED显示的控制,完成计算器加减法的应用,并熟练应用8086汇编语言编写应用程序 和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。 三.小组成员分工及成果: 本组的三个成员一起讨论研究简易计算器设计的主要方案。 粗略设计程序流程图以确定简易计算器设计的大概框架。 明确目的后各自查询资料了解设计原理、逐步清晰设计思路。 以下为大体分工:主要负责:1、设计主要程序,编写; 2、查找资料验证修改; 主要负责:1、选择需要用的各个芯片; 2、设计硬件原理图; 主要负责:1、各个芯片功能的资料查找; 2、设计程序流程图 四.设计方案以及论证: 利用程序不断扫描所设的按钮键盘是不是有输入,如果没有就一直扫描,如果有就调 用子程序进行判断,是数值则进行存储并同时进行显示,是运算符号等就调用相应的子程 序进行操作,操作后则继续利用程序不断扫描键盘是不是有输入,从而实现部分十进制数 的加、减、乘、除的运算。运算完成后根据程序将运算的结果储存到锁存器中并显示到LED 显示器上。主要器件选择是采用8086CPU做主控制器,8255作为并行接口电路实现按键扫 描以及数码管的显示。通过8255A的C口和A口实现键盘的接入,通过键盘的不断扫描, 如果有键按下,通过查表法分别将输入的数据读到AL中并保存在第一个和第二个数里, 将8255A的B端口接上共阴极LED灯,将输入的数据通过查表法,将四段码送共阴极LED 灯显示,当按下‘=’时,通过判断字符,8086来实现不同的操作,并将结果在LED灯上显示,当按下“C”时,将数据先清零,同时LED灯上显示为“00”。

基于MATLAB计算器设计与开发

六.主要参考文献 . (19) 一、课程设计应达到的目的 本课程是为自动化专业本科生开设的专业课程设计课。通过本课程的课程设计实践帮助学生巩固关于数据结构、算法、程序设计的基础知识。通过本课程设计,学生可以初步掌握开发一个小型实用系统的基本方法,提高运用编程软件实现GUI 程序设计的能力。 二、 课程设计的基本要求: 要求利用MATLAB GUI设计实现一个图形用户界面的计算器程序,要求实现: A. 具有友好的用户图形界面。实现十进制数的加、减、乘、除、乘方、取模等简单计算。(必做) B. 科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行。(必做) C. 能够保存上次历史计算的答案,先是答案存储器中得内容。(必做) D. 有清除键,能清除操作,并对不正确的表达式能指出其错误原因。(必做) E. 独立存储器功能,使之可以直接输入存储器,可与存储器中的数值相加减。能够清除独立存储器中的内容。(选做) 利用MATLAB GUI 功能,在绘制一个静态文本框和一个文本编辑框,以及命令按钮,调整好各控件大小、颜色,整体布局如图所示: 然后通过双击个按钮来改写其属性,在m 文件中编写其回调函数,最后在运行调试。 成绩

三、课题设计内容与步骤 3.1 各功能界面设计 GUI设计界面: 3.2 各功能模块实现 算法设计: A. 数字键设计:0—9以及小数点函数都一样,只是参数不同: global jj textString = get(handles.text1,'String'); if(strcmp(textString,'0.')==1)&(jj==0) set(handles. edit1,'String','1') ; else textString =strcat(textString,'1'); set(handles. edit1,'String',textString) end jj=0;

VerilogHDL简单计算器设计

目录 第一章设计目的及任务要求..................................................................................... 错误!未定义书签。 设计目的................................................... 错误!未定义书签。 设计任务................................................... 错误!未定义书签。 课设要求................................................... 错误!未定义书签。第二章设计思路............................................... 错误!未定义书签。 设计总体框图............................................... 错误!未定义书签。 设计原理................................................... 错误!未定义书签。 计算其原理............................................. 错误!未定义书签。 数码显示原理........................................... 错误!未定义书签。 八位数码管扫描的原理................................... 错误!未定义书签。第三章设计源程序及分析....................................... 错误!未定义书签。 计算器模块................................................. 错误!未定义书签。 计算器源程序........................................... 错误!未定义书签。 计算器程序分析......................................... 错误!未定义书签。 数码管显示部分...................................................................................................... 错误!未定义书签。 数码管显示源程序.......................................................................................... 错误!未定义书签。 数码管显示程序分析..................................................................................... 错误!未定义书签。 循环扫描模块........................................................................................................... 错误!未定义书签。 循环扫描程序................................................................................................... 错误!未定义书签。 循环程序分析................................................................................................... 错误!未定义书签。 总程序及其分析...................................................................................................... 错误!未定义书签。第四章时序仿真和结果验证..................................................................................... 错误!未定义书签。

计算机仿真课程设计

计算机仿真课程设计 Prepared on 22 November 2020

附件1: 北京理工大学珠海学院 《计算机仿真》课程设计说明书题目: 控制系统建模、分析、设计和仿真 学院:信息学院 专业班级: 学号: 学生姓名: 指导教师: 2012年 6 月 16 日 附件2: 北京理工大学珠海学院 课程设计任务书 2011 ~2012 学年第 2学期 学生姓名:专业班级: 指导教师:工作部门:信息学院 一、课程设计题目 《控制系统建模、分析、设计和仿真》 本课程设计共列出10个同等难度的设计题目,编号为:[0号题]、[1号题]、[2号题]、[3号题]、[4号题]、[5号题]、[6号题]、[7号题]、[8号题]、[9号题]。

学生必须选择与学号尾数相同的题目完成课程设计。例如,学号为8xxxxxxxxx2的学生必须选做[2号题]。 二、课程设计内容 (一)《控制系统建模、分析、设计和仿真》课题设计内容 [0 [1号题] 控制系统建模、分析、设计和仿真 设连续被控对象的实测传递函数为: 用一阶保持器离散化,采样周期取秒,分别设计一单位加速度信号输入时的最少拍有波纹控制器Dy(z)和一单位速度信号输入时的最少拍无波纹控制器Dw(z)。具体要求见(二)。 [2号题] 控制系统建模、分析、设计和仿真 设连续被控对象的实测传递函数为: 用零阶保持器离散化,采样周期取秒,分别设计一单位加速度信号输入时的最少拍有波纹控制器Dy(z)和一单位速度信号输入时的最少拍无波纹控制器Dw(z)。具体要求见(二)。 [3号题] 控制系统建模、分析、设计和仿真 设连续被控对象的实测传递函数为: 用一阶保持器离散化,采样周期取秒,分别设计一单位加速度信号输入时的最少拍有波纹控制器Dy(z)和一单位速度信号输入时的最少拍无波纹控制器Dw(z)。具体要求见(二)。 [4号题] 控制系统建模、分析、设计和仿真 设连续被控对象的实测传递函数为: 用零阶保持器离散化,采样周期取秒,分别设计一单位加速度信号输入时的最少拍有波纹控制器Dy(z)和一单位速度信号输入时的最少拍无波纹控制器Dw(z)。具体要求见(二)。 [5号题] 控制系统建模、分析、设计和仿真

相关文档
最新文档