文档视界 最新最全的文档下载
当前位置:文档视界 › 8255_273实现六位简单计算器课程设计报告

8255_273实现六位简单计算器课程设计报告

8255_273实现六位简单计算器课程设计报告
8255_273实现六位简单计算器课程设计报告

课程设计报告

( 2013 -- 2014 年度第 1 学期)

名 称:微机原理及应用

题 目:8255/273实现六位简单计算器 院 系:控制与计算机工程学院 班 级:创新自1101 学 号:1111190215 学生姓名:苏晴 指导教师:杨国田 设计周数:一周 同 组 人:庄登祥

成 绩:

日期: 2014年 1 月 4日

《微机原理及应用》课程设计

任务书

一、目的与要求

1.通过对微机系统分析和具体设计,使学生加深对所学课程的理解。

2.培养学生分析问题、解决问题的能力。

3.培养学生对微型计算机应用系统的基本设计能力。

4.要求学生掌握汇编语言程序设计的基本方法,学会典型接口的基本设计方法。二、主要内容

1.选定课程设计参考题目及分工负责部分

2.对要求的微机应用系统进行设计,画出系统结构框图、系统接线图。

3.用所设计的微机系统进行典型程序的设计并上机进行调试。

4.写出设计报告,要求文字整洁、语言通顺、制图规范、程序完整正确。

三、进度计划

序号设计内容完成时间备注

1 选择课程设计题目,查阅相关资料2013.12.30

2 进行软硬件设计 2013.12.31

3 上机调试 2014.1.2、3

4 撰写设计报告 2014.1.4

5 演示及答辩 2014.1.4

四、设计成果要求

1.系统硬件设计合理,软件编程达到设计要求。

2.系统硬件结构图和软件流程图绘制清楚规范。

3.设计报告完整规范。

五、考核方式

根据课程设计报告书撰写情况及答辩情况采用五级记分制评定成绩。

学生姓名:苏晴

指导教师:杨国田

2014年1月4日

一、课程设计的目的与要求

目的:在微机原理及应用课程中分别学过了微机原理各个基本组成模块的原理和编程技术的基础上,综合应用各部分知识,在实验室现有设备的情况下,设计一个具有一定功能的应用系统,达到对各部分知识加深理解、融会贯通的目的,并进一步锻炼学生的动手能力和综合分析能力,同时培养学生的团队精神。要求每个同学独立完成自己分担的部分,整体方案可以组内同学讨论确定。

要求:能完成六位十进制数的加、减、乘、除运算,操作过程与普通计算器相同,即先输入一个操作数,然后按下“+”“—”“×”“÷”键,再输入下一个操作数,按等号键开始运算并显示结果,若结果超过六位,则显示“E”。

二、分工及任务:

庄登祥负责硬件架构、算法架构,苏晴负责显示管理按键管理,庄登祥、苏晴共同负责主程序编写三、设计正文

将可编程外围接口芯片8255A 与键盘和七段LED 连接,通过对8255A 编程及对键盘的操作实现计算功能:键盘码包括数字0~9、运算符号+-*/=和清零“CL”键,通过键盘依次输入第一个运算数字、运算符号、第二个运算数字、“=”,在七段LED 灯上显示运算结果,期间数字输入有误可按“CL”键之后重新输入。

四、设计流程图

加号?

减号?

乘号?

除号?

等号?

清零?

设加标志

设减标志

设乘标志

设除标志

进行加减乘除运算,保存

结果

清零显示器

是否溢出?

结果为E

放键?

有标志?

清零显示器,清标志

保存数据

显示扫描

开始 8255初始化

有无按键?

显示扫描

是数字键?

N

Y

N N

N

N

N Y

Y

Y

Y

Y

Y

Y Y

Y N

N

N

N

Y

五、各部分原理

1、6位数码管原理及其功能

每位数码由八段发光二极管构成,这八个发光段分别称为a,b,c,d,e,f,g,dp;数码管分

为共阳和共阴两种,共阳数码管的所有二极管的正极相连,负极引线,输入0时有

效;共阴数码管的所有二极管负极相连,正极引线,输入1时有效;通过控制不同

段的点亮和熄灭,以显示所要得到的数字七段LED 的输出功能也是通过8255的并

行输出实现;仿真时我们采用的是共阳数码管。

2、8255 引脚功能说明:

RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控

制寄存器)均被清除,所有I/O 口均被置成输入方式。

PA0~PA7:端口A 输入输出线,一个8 位的数据输出锁存器/缓冲器,一

个8 位的数据输入锁存器。

PB0~PB7:端口B 输入输出线,一个8 位的I/O 锁存器,一个8 位的输入

输出缓冲器。

PC0~PC7:端口C 输入输出线,一个8 位的数据输出锁存器/缓冲器,一个

8 位的数据输入缓冲器。端口C 可以通过工作方式设定而分成2 个4 位的

端口,每个4 位的端口包含一个4 位的锁存器,分别与端口A 和端口B 配

合使用,可作为控制信号输出或状态信号输入端口。

CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255

与CPU 进行通讯。

RD:读信号线,当这个输入引脚为低电平时,允许8255 通过数据总线向CPU

发送数据或状态信息,即CPU 从8255 读取信息或数据。

WR:写入信号,当这个输入引脚为低电平时,允许CPU 将数据或控制字写

8255。

D0~D7:三态双向数据总线,8255 与CPU 数据传送的通道,当CPU 执行输入输出指令时,通过它实现8 位数据的读/写操作,控制字和状态信息也通过数据总线传送。

8255 的读写控制:

8255 的读/写控制逻辑电路接受CPU 发来的控制口号RD、WR、RESET 和地址信号A1~A0。然后根据命令端口,控制信号的要求,将端口的数据读出选信CPU 或者将CPU送来的数据写入端口,各端口的工作状态。通过用输出指令对8255A 的控制字寄存器编程,写入设定工作方式的控制字,可以让3个数据口以不

同的方式工作,端口A 可工作于3 种方式的任一种,端口B 只能工作于方式0 和方式1,端口C 除了用于

输入输出端口外,还能配合A 口和B 口工作,为这两个端口的输入输出操作提供联系信号

3、8086处理器

当引脚接高电平时,CPU工作于最小方式(单处理器系统方式,适合于较小规模的应用)。此时,引脚功能如下:

(1)AD15~AD0:分时复用的存储器或端口的地址和数据总线。传送地址时为单向的三态输出,而传送数据时为双向三态输入/输出。

(2)IO/M存储器/输入、输出控制信号(输出、三态):它用于区分CPU当前是访问存储器还是访问输入/输出端口。高电表示访问存储器,说明当前要进行CPU与存储器之间的数据传送。低电平表示访问输入/输出设备。表示当前要进行CPU与I/O端口之间的数据传送。在DMA时,它被置为浮空。

(3)WR/LOCK(输出,低电平有效,三态):信号

有效,即为低电平时,表示CPU正在执行存储器或I/O

写操作,在写周期中,WR在T2、T3、Tw期间都

有效。在DMA时,WR被置为浮空。

(4)INTA:可屏蔽中断响应信号,输出,低电平有

效。 CPU通过信号对外设提出的可屏蔽中断请求做出

响应。为低电平时,表示CPU已经响应外设的中断请求,

即将执行中断服务程序。

(5)ALE:地址锁存允许信号,输出,高电平有效。

CPU利用ALE信号可以把AD15 ~AD0地址/数据、

A19/S6~A16/S3地址/状态线上的地址信息锁存在地

址锁存器中。

(5)DT:数据发送/接收信号,输出,三态。 DT/信号用来控制数据传送的方向。DT/为高电平时,CPU发送数据到存储器或I/O端口;DT/为低电平时,CPU接收来自存储器或I/O端口的数据。

(6)DEN:数据允许控制信号,输出,三态,低电平有效。信号用作总线收发器的选通控制信号。当为低电平时,表明CPU进行数据的读/写操作。

(7)HOLD:总线保持请求信号,输入,高电平有效。在DMA数据传送方式中,由总线控制器8237A 发出一个高电平有效的总线请求信号,通过HOLD引脚输入到CPU,请求CPU让出总线控制权。

(8)HLDA:总线保持响应信号,输出,高电平有效。HLDA是与HOLD配合使用的联络信号。在HLDA 有效期间,HLDA引脚输出一个高电平有效的响应信号,同时总线将处于浮空状态,CPU让出对总线的控制权,将其交付给申请使用总线的8237A控制器使用,总线使用完后,会使HOLD信号变为低电平,CPU 又重新获得对总线的控制权。

(9)RD:读控制信号,三态,输出。当RD=0时,表示CPU执行存储器或I/O端口的读操作。是对内存单元还是对I/O端口读取数据,取决于M/IO信号。在执行DMA操作时,RD被浮空。

(10)READY:“准备好”信号线,输入。该引脚接受被寻址的内存或I/O端口发给CPU的响应信号,高电平时表示内存或I/O端口已准备就绪,CPU可以进行数据传输。CPU在T3状态开始对READY信号采样。若检测到READY为低电平,表示内存或I/O端口尚未准备就绪,则CPU在T3状态之后自动插入等待状态Tw,直到READY信号变为高电平,内存或I/O端口已准备就绪,CPU才可以进行数据传输。

4.74LS138译码器

(1)当选通端S1、S2、S3为有效时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。比如:A2A1A0=110时,则Y6输出端输出低电平信号。

(2)若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。

(3)可用在8086的译码电路中,扩展内存。

74LS273锁存器

(1)MR为使能端,为低电平时,可传送数据

(2)D0-D7是数据输入端,Q0-Q7是锁存数据输出端

(3)CLK是时钟输入端,在一个信号的上升沿,锁存数据

在使用74LS273时,应注意由于8086的数据是下降沿有效的,应在CLK输入端加一个反相器5、键盘原理

键盘使用来获取用户按键操作的,采用矩阵键盘,假设为行列数为n,则行列组合可获取n*n不同的键值。通过行列扫描来获取键值,扫描原理分为3种,以4*4矩阵键盘为例,0输入有效,分别如下:

1.行(列)输入0000,检测列(行),若出现0,记下列(行)数;然后列(行)输入000,检测行(列),若出现0,记下行(列)数;则通过行列数可得出矩阵键盘上对应的键被按下;

2.行输入0111,检测列,若出现0记下列数,则可得出,第一行上相应的列的按键被按下;然后行依次输入1101,检测列,与上同

3.列输入0111,检测行,过程与2类似

在实际扫描矩阵键盘中,具体扫描步骤如下:

1.行输入0000,检测行,若有按键按下,进行2,否则循环执行1

2.采用3种方法中的一种进行键盘扫描

3.有键按下,延时几十毫秒左右,重读结果

4.若按键信号还在,则此次按键非抖动,计算键值储存结果

5.循环检测,等到按键信号消除,则此次按键操作完成

本设计中,没有考虑多个按键同时按下的可能,这是待完善之处

6.仿真电路图

六、算法架构讨论:

本设计完成的计算器中,还有许多不完美之处,一个比较好的计算器应该更加智能化,因此,我们找一个学生用的智能计算器进行实验。

下面讨论中,算符特指实际运算的符号;加减乘除指从键盘获得的按键,可能是算符,也可能是一个数的正负号;满足运算条件指有一个算符和两个参与运算的当前数以及能触发运算的按键操作首先,是连续计算,当然智能计算器是能区分运算符号优先级别的,在4*4矩阵键盘计算器中,计算的连续性应该体现在按下出现下一个算符,在满足运算的条件下,应立即能将之前的式子计算出来,并能显示;

其次,是正负号,正负号便是加减号,比如我们按下+6+-6,智能计算器给出的结果是0,在进行其他含正负符号的运算,得出以下实验结果:

对于加减法:6++6=12,6+++6=12,6+-6=0,6+--6=12,6+---6=0,+6+6=12,+6++6=12,+6+-6=0,+6+--6=12,+6+---6=0,6-+6=0,6-++6=0,6--6=12,6---12=0,-6-+6=-12,-6-++6=-12,对于乘除法:+6*-6=-36,+6*+6=36,-6*-6=36,-6/-6=1,+6-*6(错误),6**6(错误)

容易得出以下规则:

1.无符号的数默认为正;

2.算符先出现且之前无数,则被认为是下一个数的正负号;

3.算符先出现(被认为是正负号的不算)且之前有数,则被认为是算符,

4.在算符已经出现的情况下,出现加减号,被认为是下一个数的正负号,出现乘除则认为运算数正

负号错误(此类错误计为第一类错误)

5.无论一个数有多少个正号这个数都为正;一个数有奇数个负号认为是负,有偶数个负号认为是正

6.以上运算规则应不仅遵循等于号计算结果,还应遵循连续运算规则,即出现下一个算符时立即计

算之前的式子,且保留此运算符

再次,我们考虑等于号的计算规则,对于等号,应能计算上面所提到的所有式子,包括连续运算后的按下等于号,对于一些特殊的,进行以下实验,得出以下结果:+6=+6,-6=-6,*6=(错误),/6=(错误),+6+=(错误),+6-(错误),-6+=(错误),-6-=(错误),+6*(或/ )=(错误),*(或/ )6=(错误),*(或/ )6*(或/ )=(错误),6++=(错误),6**=(错误)

综上,等于号出错规则如下:

在已有算符的情况下,不满足运算条件(此类错误计为第二类错误)

不出错情况如下:

1.若无算符,但有一个有正负号的运算数,则显示此运算数

2.运算条件一个都不满足的条件下,我们默认显示0(此处与智能计算器不同)

3.等于号不出错条件包含第二处的讨论

然后设计清零的的规则,清零键设计从简,不考虑其撤销功能,在任何情况下,按下清零键,计算器恢复初始状态

最终,由于我们的计算器是6位的,运算数和运算结果数超过6位时,也应出现错误(此类错误计为第三类错误)

至此,我们对智能计算器运算规则的讨论完毕,下面进行算法架构讨论;架构算法时,应始终考虑这几点,能进行连续运算,能区分算符和正负号,能判别是否满足运算条件,以及最重要的能,能报错。

从连续运算角度出发,很容易想到,要进行连续运算,得有一个循环机制,于是尝试将运算数分为被运算数和当前运算数。为达到连续运算的目的,被运算数必须始终记录运算的历史值,而且永远只考虑当前运算的正负号。似乎这样便完成连续运算功能了,然而,我们不能忽视另外一条规则,在第一次运算时满足运算条件是基于两个运算数的即两个当前数,若按照连续运算设计算法,可能与满足运算条件相冲突;那么,我们是否可以再设置一个当前运算数呢,若如此,则需同时考虑两个运算数的正负号,且增加代码成本,显然是不必要的。也可以设置一个标记,第一次运算时,被运算数是当前数的身份,在完成第一次运算后,恢复被运算数的身份,保留储存历史值的功能。这种方法比较可行,但还是避免不了需同时考虑两个运算数的正负号,也可取。

我们重新审视这三类错误,第一类和第二类错误的本质区别在于,等号出错是基于两个运算数,而第一类错误是基于一个运算数,我们能不能把第二类错误归结到第一类错误呢?这是可以实现的,经过讨论,我们确定了以下规则,采用被运算数和当前运算数,被运算数初始化成+0,算符置成加号,被运算数数值为空,符号为正号,如此,完美的解决了第二类错误问题。

下面是我们最终的算法架构,如图所示:

四、课程设计总结或结论

1.通过这次课程设计,进一步了解了可编程并行I/O接口芯片8255的特性和引脚功能以及基本知识点,了解了该芯片的应用。同时了解了汇编语言对学习其他计算机起到一个比较、对照、参考的促进作用。学习事物总是从最简单基础的开始。那么学习高级语言也当然应当从汇编开始。学习汇编语言实际上是培养了学习计算机语言的能力和素养。个人认为,学习汇编语言对学习其他语言很有促进作用。

2.通过编程实现,熟悉了8255方式控制字,了解了三种工作方式和基本工作原理。

3.通过查阅资料,对于可编程接口芯片有了更深的认识,掌握了基本的微机接口方法。

4.本次课程设计,自己认真地做了资料的查阅,过程中,认真思考,积极探索,之后,提炼总结。总的来说,基本完成了课程设计要求和任务。

附录

程序

DATA SEGMENT

NUMB0 DB 6 DUP(0) ;存放第一个数据值

NUMB1 DB 6 DUP(0) ;存放第二个数据值

NUMB2 DB 6 DUP(0) ;存放一个很怪的数据

RESULT D B 12 DUP(0) ;存放运算结果

S DB 0 ;存放运算符号值

E DB 0 ;按下等号键标记

PD DB 0 ;判断S的值

CC D B 0 ;存放运算数据位数

CC0 DB 0

H DB 0 ;存放按键行号

L DB 0 ;存放按键列号

DISCODE DB

0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0FFH,0FFH,0FFH,0FFH,86H

;段码表

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AL,90H ;设置为A口输入,B口输出,C口输出OUT 46H,AL

KKK: CALL KEY ;扫描按键

JMP KKK

;以下为按键扫描子程序,程序返回后,在变量H和L中存放当前按键的行列号KEY PROC

CHECK:

CMP PD,0

JZ DISP1

DISP2:

CALL DISP0 ;当按下的是运算符时要用另一个显示

JMP ANJIAN

DISP1:

CALL DISP ;等待按键按下的同时进行显示

ANJIAN:

MOV AL,0F0H ;所有行输出低电平

OUT 44H,AL

IN AL,40H

CMP AL,0FFH ;读列值

JZ CHECK ;若都为高电平则无键按下,等待

MOV CX,50

LOOP $ ;延时消抖

IN AL,40H ;重读列值

CMP AL,0FFH

JZ CHECK ;无键按下一直等待

MOV H,0 ;有键按下,先把行列号变量清0

MOV L,0

MOV BL,01H

MOV BH,0FEH ;扫描法读键值:从第一行开始测试,即PC0输出低电平NEXT: MOV AL,BH

OUT 44H,AL

NEXTH: IN AL,40H ;读列值,判断是第几列有键按下

TEST AL,BL ;从第一列开始判断

JZ WAIT0

ROL BL,1

CMP BL,10H ;当前行状态下没有列有键按下,则转为对下一行的测试

JZ NEXTL

INC H ;每判断一列,列号加1

JMP NEXTH ;再对下一列进行判断

NEXTL: MOV H,0

MOV BL,01H

ROL BH,1 ;对下一行测试,让下一个PC口输出低电平

CMP BH,0EFH

JZ EXIT

INC L

JMP NEXT

WAIT0: IN AL,40H ;若有键按下,则等该按键松开后再计算键值CMP AL,0FFH

JNZ WAIT0

MOV CX,50

LOOP $ ;延时消抖

IN AL,40H

CMP AL,0FFH

JNZ WAIT0

CALL KEYV ALUE ;调计算键值子程序

EXIT: RET

KEY ENDP

;以下为计算键值子程序,通过行列号计算键值(键值=行号*4+列号)键值存放在DL寄存器中KEYV ALUE PROC

PUSH BX

PUSH AX

MOV DL,L

MOV DH,H

SHL DL,1

SHL DL,1 ;列号乘4

ADD DL,DH

CMP DL,9 ;按下的是数字键

JNG NUM_CALL

CMP DL,14

JL CONT_CALL ;按下的是运算键

CMP DL,14

JZ OUTP_CALL ;按下的是等于键

CMP DL,15

JZ CLR_CALL ;按下的是清除键

NUM_CALL: ;按下的是数字键的程序

MOV PD,0

CALL NUMBER ;调数字键处理子程序

JMP EXIT1

CONT_CALL: ;按下的是运算建的程序

MOV S,DL ;存放运算键的键值

MOV PD,1 ;因为存放的是运算建,所以判断符号变一下

MOV E,0

MOV CX,6

LEA SI,NUMB0

LEA DI,NUMB1

MOV BX,0

LL:

MOV AL,[DI]

MOV [SI],AL ;把number1中的值赋给number0

MOV AL,[DI] ; 当输入的是运算符时把number1中的数放到number2中,用于这时候的显示

MOV NUMB2[BX],AL ;这里BX对不对啊

INC BX

MOV AL,0

MOV [DI],AL ;对number1清零

INC DI

INC SI

LOOP LL

JMP EXIT1

OUTP_CALL: ;按下的是等号的子程序

MOV PD,0

CALL OUTP ;调等号键处理子程序

JMP EXIT1

CLR_CALL: ;按下的是复位的子程序

MOV PD,0

CALL CLEAR ;调清除键处理子程序

EXIT1: ;最后都会到这里的,哈哈

POPAX

POPBX

RET

KEYV ALUE ENDP

;以下为清除键处理子程序,按下清除键后,变量全部清0 CLEAR PROC

MOV CX,6

MOV SI,0

AA:

MOV NUMB0[SI],0

MOV NUMB1[SI],0

MOV NUMB2[SI],0

MOV RESULT[SI],0

MOV RESULT[SI+6],0

INC SI

LOOP AA

MOV CC,0

RET

CLEAR ENDP

;以下为等号键处理子程序,根据运算符号,调用相应的运算子程序; OUTP PROC

PUSH AX

PUSH DX

PUSH BX

INC E

CMP S,10

JZ ADD_CALL ;运算符为加号,则调用加法子程序CMP S,11

JZ SUB_CALL ;运算符为减号,则调用减法子程序CMP S,12

JZ MUL_CALL ;运算符为乘号,则调用乘法子程序CMP S,13

JZ DIV_CALL ;运算符为除号,则调用除法子程序

ADD_CALL: CALL ADDP

JMP STORE1

SUB_CALL: CALL SUBP

JMP STORE1

MUL_CALL: C ALL MULP

JMP STORE1

DIV_CALL: CALL DIVP

STORE1:

MOV SI,0

MOV CX,6

BB:

MOV AL,RESULT[SI]

MOV NUMB1[SI],AL

INC SI

LOOP BB

MOV SI,0 ;对number0进行清零

MOV CX,6

BB1:

MOV AL,0

MOV NUMB0[SI],AL

INC SI

LOOP BB1

POPBX

POPDX

POPAX

RET

OUTP ENDP

;以下为数字键处理子程序

;该程序,将输入的数据按位存放在NUMB1变量中,并由CC记录数据的位数NUMBER PROC

PUSH BX

PUSH AX

CMP E,1

JNZ CONTINUE

MOV E,0

CALL CLEAR

CONTINUE:

CALL BITP

CMP CC,0 ;目前数据为0位,即没有数据,则转到SSS

JZ SSS

MOV SI,5

EE:

MOV AL,NUMB1[SI-1]

MOV NUMB1[SI],AL

DEC SI

CMP SI,0

JNZ EE

SSS:

MOV NUMB1[0],DL ;将当前键入的数据存放到NUMB1的最低位

INC CC ;数据位数加1

CMP CC,6 ;判断数据位数

JNG EXIT2

MOV CC,0 ;如果数据超过6位,重新从最低位开始存放MOV NUMB1[5],0

MOV NUMB1[4],0

MOV NUMB1[3],0

MOV NUMB1[2],0

MOV NUMB1[1],0

MOV NUMB1[0],0

EXIT2:

POPAX

POPBX

RET

NUMBER ENDP

;加法程序

ADDP PROC

PUSH DX

PUSH CX

PUSH BX

PUSH AX

MOV BX,0

编写一个计算器程序课程设计报告-范例

学号 《金融IT入门-程序设计》 课程设计报告 中国地质大学长城学院XX 系 2017年月 3 日 目录 一.总体概述: 二.设计目标: 三.程序流程图: 四.程序代码: 评分细则 评分项优秀良好中等差 上课出勤 上课表现 上机情况 平时作业完成情况 期末大作业: (1)书写认真程度 题目:用Python编写简易计算器程序 学号: 专业: 班级: 姓名: 指导教师: 2016-2017学年第二学期

(2)内容详实程度(3)文字表达能力(4)是否体现观点 简短教师签名: 年月日 评 分 等 级 备 注 评分等级有五种:优秀、良好、中等、及格、不及格

一、设计内容 ------------------------------------------------------------------------------------------------- - 1 - 1. 课程设计目的:-------------------------------------------------------------------------------------- - 1 - 2.课程设计任务: --------------------------------------------------------------------------------- - 1 - 3.创新要求:---------------------------------------------------------------------------------------------- - 2 - 4.设计要求: ------------------------------------------------------------------------------------------------ - 2 - 二、原理和分析 ---------------------------------------------------------------------------------------------- - 2 - 1.开发的技术及功能 ----------------------------------------------------------------------------------- - 2 - 2.设计思路------------------------------------------------------------------------------------------------ - 2 - 3.设计效果图--------------------------------------------------------------------------------------------- - 2 - 三、设计过程 ------------------------------------------------------------------------------------------------- - 3 - 1. 程序思路: -------------------------------------------------------------------------------------------- - 3 - 2.功能实现:---------------------------------------------------------------------------------------------- - 4 - 1)加减乘除求余以及指数运算----------------------------------------------------------------- - 4 - 2)其他运算 ------------------------------------------------------------------------------------------ - 4 - 3)主要方法说明------------------------------------------------------------------------------------ - 5 - 4)程序流程图 --------------------------------------------------------------------------------------- - 5 - 3.算法思路:---------------------------------------------------------------------------------------------- - 6 - 4.数据分析:---------------------------------------------------------------------------------------------- - 7 - 四、设计结果和分析------------------------------------------------------------------------------------------ - 7 - ⒈运行调试------------------------------------------------------------------------------------------------ - 7 - 1)进行加减乘除求余以及指数运算----------------------------------------------------------- - 7 - 2)求倒 ------------------------------------------------------------------------------------------------ - 9 - 3)退格 ------------------------------------------------------------------------------------------------ - 9 - 4)清零 ---------------------------------------------------------------------------------------------- - 10 - 5)求余弦、求正切、对e求幂、求平方根、求自然对数、求倒运算 ------------- - 11 - 6)连续运算(例:2*3*4=24.0)------------------------------------------------------------- - 11 - 7)异常处理(例:求倒时输入数为0) --------------------------------------------------- - 11 - 五、设计体会和小结 -------------------------------------------------------------------------------------- - 12 - 六、参考文献 ----------------------------------------------------------------------------------------------- - 13 - 七、源程序--------------------------------------------------------------------------------------------------- - 13 - 一、设计内容 1.课程设计目的: 1)掌握Java语言的程序设计方法; 2)理论联系实际,进一步提高学生的软件开发技术; 3)培养学生分析、解决问题的能力; 4)提高学生实践论文撰写能力。 2.课程设计任务:

计算器课程设计报告

课设报告 福建工程学院软件学院 题目:汇编计算器 班级: 1301 姓名 学号: 指导老师: 日期:

目录 1、设计目的 (3) 2、概要设计 (3) 2.1 系统总体分析 (3) 2.2 主模块框图及说明 (3) 3、详细设计 (4) 3.1 主模块及子模块概述 (4) 3.2各模块详运算 (4) 4、程序调试 (7) 4.1 运行界面分析 (7) 算法分析 (7) 4.2 调试过程与分析 (9) 5、心得体会 (11) 5.1 设计体会 (11) 5.2 系统改进 (11) 附录: (11)

1、设计目的 本课程设计是一次程序设计方法及技能的基本训练,通过实际程序的开发及调试,巩固课堂上学到的关于程序设计的基本知识和基本方法,进一步熟悉汇编语言的结构特点和使用,达到能独立阅读、设计编写和调试具有一定规模的汇编程序的水平。 2、概要设计 用8086汇编语言编写一个能实现四则混合运算、带括号功能的整数计算器程序。程序能实现键盘十进制运算表达式的输入和显示(例如输入:“1+2*(3-4)”),按“=”后输出十进制表示的运算结果。 2.1 系统总体分析 在8086的操作环境下,该计算器分成输入,数据存储,运算功能,输出几个大模块,实现了使用者使用该计算器时输入一个算式,能让系统进行计算。此计算器的实现功能是基本的数学的四则运算,结果范围在0~65535。 2.2 主模块框图及说明 此流程图简要的表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的一个总体的框架。 程序流程图说明:通过流程图,可以看出程序运行时,首先输出提示语气,当用户输入后,程序根据所输入内容进行判断,通过判断的结果来决定调用哪个功能模块,首要先要要判断的是否为0-9,“+”“-”“*”“/”这些字符,若不是就会报错,实则根据运算符号调用其功能模块完成运算。最后将运算的结果显示在主频幕上,返回主程序,使用户可以重新输入。

简单计算器c++课程设计

简单计算器 1 基本功能描述 简单计算器包括双目运算符和单目运算符。双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦、阶乘、对数、开方、倒数等运算。可对输入任意操作数包含小数和整数及正数和负数进行以上的所有运算并能连续运算。出现错误会给出提示,同时包含清除、退格、退出功能以及有与所有按钮相对应的菜单项。 2 设计思路 如图1,是输入数据子函数的流程图。打开计算器程序,输入数据,判断此次输入之前是否有数字输入,如果有,则在之前输入的数字字符后加上现有的数字字符;如果没有,则直接使编辑框显示所输入的数字字符。判断是否继续键入数字,如果是,则继续进行前面的判断,如果否,则用UpdateData(FALSE)刷新显示。 如图2,是整个计算器的流程图。对于输入的算式,判断运算符是双目运算符还是单目运算符。如果是双目运算符,则把操作数存入数组a[z+2]中,把运算符存入b[z+1]中;如果是单目运算符,则把字符串转化为可计算的数字,再进行计算。下面判断运算符是否合法,如果合法,则将结果存入a[0],不合法,则弹出对话框,提示错误。结束程序。

输入一个数字 在之前输入的数字字符后面加上现在的数字字符。 Eg :m_str+=”9”。 直接使编辑框显示所输入的数字字符。 Eg :m_str=”9”。 pass3=1表示已有数字输入 开始 之前是否有数字输入? pass3==1? 继续键入数字? 用UpdateData(FALSE)刷新显示 图1 输入数据子函数流程图 Y N Y N

输入开始 双目运算符 是否每一个操作数都存入a[]数组? 把操作数存入a[z+2],把运算符存入b[z+1]。 单目运算符 将字符串转换 为可计算的数进行运算 运算是否合法? 将结果存入a[0] 弹出对话框提示错误 结束Y Y N N 图2 简单计算器总流程图

Java计算器课程设计报告 - 副本

JAVA课程设计 小型计算器 学生姓名: 指导教师:李明江 系别:计算机科学系 专业:计算机科学与技术 年级:2008 应用2班 提交时间:2010年 12 月 22日学号:

目录 一概述 (3) 二总体方案设计 (4) 三详细设计 (6) 四程序的调试与运行结果说明.. 10 五课程设计总结 (19) 六附录...... 错误!未定义书签。

一设计任务书 1.程序具备的功能: (1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮; (2)完成整数、实数的四则运算(加、减、乘、除); (3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。 2.课程设计的主要设计思想 对于此计算器程序,首先要设计其GUI 界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。 文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel 中,添加到整体布局的CENTER,界面设计

完成。 布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。 在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。 二总体方案设计 1.界面设计 界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt 中的BorderLayout和GridLayout布局管理方

Java带计算过程的计算器课程设计报告

保存计算过程的计算器 Java程序设计课程设计报告保存计算过程的计算器 目录 1 概述.............................................. 错误!未定义书签。 1.1 课程设计目的............................... 错误!未定义书签。 1.2 课程设计内容............................... 错误!未定义书签。 2 系统需求分析.......................................... 错误!未定义书签。 2.1 系统目标................................... 错误!未定义书签。 2.2 主体功能................................... 错误!未定义书签。 2.3 开发环境................................... 错误!未定义书签。 3 系统概要设计.......................................... 错误!未定义书签。 3.1 系统的功能模块划分......................... 错误!未定义书签。 3.2 系统流程图................................. 错误!未定义书签。4系统详细设计........................................... 错误!未定义书签。 5 测试.................................................. 错误!未定义书签。 5.1 测试方案................................... 错误!未定义书签。 5.2 测试结果................................... 错误!未定义书签。 6 小结.................................................. 错误!未定义书签。参考文献................................................ 错误!未定义书签。附录................................................ 错误!未定义书签。 附录1 源程序清单...................................... 错误!未定义书签。

C语言课程设计 简单计算器程序

课程设计名称:C语言课程设计课程设计题目:简单计算器程序

目录 第1章需求分析 (1) 1.1设计要求 (1) 1.2任务 (1) 第2章总体设计 (2) 2.1设计简介及设计方案论述 (2) 2.2功能模块层次图 (2) 第3章详细设计 (3) 3.3由(后缀)逆波兰表达式计算中缀表达式原理 (8) 3.3.1算法描述 (8) 第4章调试分析 (10) 4.1程序设计中所遇到的错误及犯错的原因 (10) 4.2错误的解决方法 (10) 第5章用户手册 (11) 总结 (15) 参考文献 (16) 附录(程序清单) (17)

第1章需求分析 1.1 设计要求 (1)用 C 语言数据结构实现程序设计; (2)利用结构体、栈、进行相关信息处理; (2)系统的各个功能模块要求用函数的形式实现; (4)界面简单,可操作性高。 1.2任务 (1)定义一个结构体类型数组,输入0~9 及+、--、*等符号的信息,将其信息存储起来; (2)输入简单的加减乘除算术计算式,并在屏幕上显示逆波兰(后缀式)表达式和计算结果; (3)编写代码; (4)程序分析与调试。 说明: 本课程设计将实现一个简单计算器。在功能上尽量模仿windows 的计算器。系统界面不做牵制要求。该程序能实现标准型中+、-、*、/、(、)、.、的混合运算表达式(一般意义上的中缀表达式),将其转换成逆序波兰表达式(后缀表达式)并计算输出结果。在进行运算后可以选择继续运算或者结束当前运算。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

第2章 总体设计 2.1设计简介及设计方案论述 逆波兰表达式又叫做后缀表达式。在通常的表达式中,二元运算符总是置于与之相 关的两个运算对象之间,所以,这种表示法也称为中缀表达式。波兰逻辑学家 J.Lukasiewicz 于 1929 年提出了另一种表示表达式的方法。按此方法,每一运算符都置 于其运算对象之后,故称为后缀表达式。 后缀表达式的优点是显而易见的, 编译器在处理时候按照从左至右的顺序读取逆波 兰表达式,遇到运算对象直接压入堆栈,遇到运算符就从堆栈提取后进的两个对象进行计算,这个过程正好符合了计算机计算的原理。后缀表达式比前缀表达式更加易于转换,并且它的最左面一定为数字,这一点在实 际编程的时候就会体会到它的好处了。 逆波兰表达式有一个更大的优点,就是拆括号,根据运算符的级别将中缀表达式转 换成逆波兰表达式后,运算顺序就已经替代了运算符的级别,这样也避免了括号提高运 算级别的特殊处理。 2.2功能模块层次图 将算术表达式转化为逆波兰表达式 计算逆波兰表达式的值 简单计算器 表 达 式 格 式 转 换 系统 求 值 计 算 系 统

简易计算器的设计与实现

沈阳航空航天大学 课程设计报告 课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计内容 (1) 1.2设计原理 (1) 1.3设计思路 (2) 1.4实验环境 (2) 第2章详细设计方案 (3) 2.1硬件电路设计 (3) 2.2主程序设计 (7) 2.2功能模块的设计与实现 (8) 第3章结果测试及分析 (11) 3.1结果测试 (11) 3.2结果分析 (11) 参考文献 (12) 附录1 元件清单 (13) 附录2 总电路图 (14) 附录3 程序代码 (15)

第1章总体设计方案 1.1 设计内容 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。显示采用6位8段共阳极数码管动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。 1.2 设计原理 在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。 1)提出方案 以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。 2) 总体方案实现 (1)要解决键值得读入。先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码

单片机计算器的课程设计报告

目录 一、设计任务和性能指标 (1) 1.1设计任务 (2) 1.2性能指标 (2) 二、设计方案 (2) 3 3 4 5 5 6 6 7 7 20 20 20 20 21 参考文献 (21) 附录1、系统硬件电路图 (22) 附录2、硬件实物图 (23) 附录3、器件清单 (24)

一、设计任务和性能指标 1.1设计任务 自制一个单片机最小系统,包括复位电路,采用外部小键盘输入数据,能够实现加法、乘法及一个科学计算,计算结果显示在四位一体的数码管上。 要求用Protel 画出系统的电路原理图(要求以最少组件,实现系统设计所要 显 位 监测模块采用二极管和扬声器(实验室用二极管代替)组成电路。 键盘电路采用4*4矩阵键盘电路。 显示模块采用4枚共阳极数码管和74ls273锁存芯片构成等器件构成。 整个单片机的接口电路: P0用于显示输出; P1用于键扫描输入; P2用于数码管位选控制; P3用于键盘扩展(部分运算符输入);

三.系统硬件设计 3.1单片机最小系统 单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。 主控芯片选取STC89C52RC芯片,因其具有良好的性能及稳定性,价格便宜应用方便。 扩展键:“log”,“ln”,“x^2”“小数点”,“开方” 共计25个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的8个公共端分别接P1.0~P1.7,这样扫描P1口就可以完成对矩阵键盘的扫描,通过对16个按键进行编码,从而得到键盘的口地址,对比P1口德扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘的功能。 以下为键盘接口电路的硬件电路图

LABVIEW计算器设计报告

虚拟仪器大作业——模拟计算器 班级:电1004 姓名: 学号:20102389

一、设计思想: .创建3个字符串显示控件num1,num2,num3,其中: 1、第一个输入数据存储在num1中 2、第二个输入数据存入num2中 3、将其赋给 num3,并使num2为空,以便输入的数据存入num2 4、所有的运算是在num1和 num3间进行 5、运算结果都赋给result,同时赋给num1,用于下一次的运算 .创建4个布尔开关按钮change,change1,change2,change3,其中: 1、Change的真假用来判断是第一个数据还是第二个数据 2、change1的功能是在输入=,运算完后,不需要初始化即可进行下一次运算 3、change2用来去掉数据小数末尾的0 4、change3用来保证backspace键仅对输入的数据有效,对运算结果无效 .创建2个数值显示控件type1,type2,并分别在其后面板的属性——数据类型——表示法中选择U8其中: 1、type1用来存储运算符号 2、type2用来保证连续“+、-、*、/”的正确性 3、所有的运算结果都赋给result 4、result经过去零处理后得到result1,将数据显示在前面板上。 二、实现过程 1、面板按键的设计及感应 首先,在前面板上建立一个簇 然后在簇中再建立布尔量,复制20个以满足键的需求(0--9十个数字键,一个小数点键,一个等号键,四则运算键,一个开方键,一个平方键,一个倒数键,一个反号键,一个清零键及一个退出键并注意按键的顺序)。 将按键给值并作适当的美化处理

在后面板中通过将簇中元素按产生的顺序组成一个一维数组,这样就实现了每个键与数字(0--20)之间的对应。每次按下一个键时,通过 查找出对应的键并把结果(对应的数字)连接到一个case结构,然后执行对应case结构中的程序,至此就完成了对一个键的感应过程。 2、数字的键入(0~8键入1~9数字) 由于第一个输入和第二个输入所存放的地方不同(第一个存于num1,第二个存于num2→mun3再清空num2),所以有必要对此分开处理。创建2分支(真、假)的case结构。 用change控制分支的选择:在处创建局部变量并转换为读入。由于数字的键入是数据输入,change3用来保证backspace键仅对输入的数据有

科学计算器课程设计报告C课程设计修订稿

科学计算器课程设计报告C课程设计 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

计算机科学与技术学部 C++课程设计 题目科学计算器 学部计算机科学与技术 班级计科1103 指导教师李军 姓名刘明 学号 2012年6月27日

摘要 计算器的产生和发展是建立在电子计算机基础之上的。硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。 在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。此系统在Windows 7环境下,使用VC++ 进行编写。 简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。并且包含清除,退格功能等。我们所做的计算器其功能较Windows 7下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。 关键词:计算器;运算;VC++等

java课程设计报告_简单图形界面计算器的设计

Java 课程设计 简单图形界面计算器的设计 课程名称 Java程序设计 选题名称简单图形界面计算器的设计 专业 班级 姓名 学号 指导教师 简单图形界面计算器的设计

一、设计任务与目标 本次java程序设计我的设计任务是设计一个图形界面(GUI)的计算器应用程序并且能够完成简单的算术运算。本次任务的基本要求是这个计算器应用程序可以完成十进制的加、减、乘、除、求倒、取余、开方运算,且有小数点、正负号、退格和清零功能。而我要在此基础上添加一项千位符分隔符的功能,即以三位为一级,在输入的一串数字中每三位加入一个逗号,这项功能国际通用,并已经成为惯例,会计记账都用这种方法便于账目核算与管理。 GUI计算器设计的具体目标: 1.完成十进制的加、减、乘、除、求倒、取余和开方运算; 2.有小数点和正负号加入运算; 3.有退格、复位和清零的功能; 4.有千位符分隔符的功能,即在输入的一串数字中每三位加入一个逗号。 二、方案设计与论证 1.设计目标的总体分析 (1)设计目标的需求分析:计算器是现在一个普遍应用的工具,能够解决许多人工所无法计算的数据,节省大量宝贵的时间。 (2)设计目标的功能分析:实现计算器系统的功能,主要有两个功能模块:输入和输出。 (3)设计原则:基于计算器系统要具有适用性广、操作简便等特点,本系统预计要达到以下几个目标:①满足以上的基本功能要求;②能够在常见的计算机及其操作系统上运行。 2.设计的基本思路 利用GUI的界面设计,将整个大设计分为三块,分别是数据的输入,运算符

功能符的控制和数据的输入输出显示。利用Swing控件,数据的输入由0~9这10个按钮来表示,用“+”、“-”、“*”、“/”、“1/x”、“%”、“sqrt”这7个按钮来表示加、减、乘、除、求倒、取余、开方运算,用“.”和“±”这2个按钮来表示小数点和正负号,用“Back”、“CE”和“C”这3个按钮来表示退格、复位和清零的功能,数据的输入输出显示由文本字段来表示。将计算器的总体界面设计好后,再将代码分别写入不同的按钮的源程序中。 我要完成的一项改进,即添加一个拥有千位符分隔符功能的按钮,按下这个按钮能够在输入的一串数字中每三位加入一个逗号并且显示出来。我要在之前的界面设计的基础上多添加一个按钮“$”来表示千位符分隔符,并且将功能代码写入这个按钮的源程序中。 三、程序流程图,程序清单与调用关系 1. 程序流程图:

简易计算器课程设计

评阅教师评语:课程设计成绩 考勤成绩 实做成绩 报告成绩 总评成绩指导教师签名: 课程设计报告 论文题目基于ARM的简易计算器设计 学院(系):电子信息与自动化学院 班级:测控技术与仪器 学生姓名:同组同学: 学号:学号: 指导教师:杨泽林王先全杨继森鲁进时间:从2013年 6 月10 日到2013年 6 月28 日 1

目录 1、封面—————————————————————P1 2、目录—————————————————————P2 3、前言—————————————————————P3 4、关键字————————————————————P3 5、原理与总体方案————————————————P3 6、硬件设计———————————————————P6 7、调试—————————————————————P10 8、测试与分析——————————————————P11 9、总结—————————————————————P13

10、附件—————————————————————P14 前言 近几年,随着大规模集成电路的发展,各种便携式嵌入式设备,具有十分广阔的市场前景。嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。在嵌入式系统中,数据和命令通过网络接口或串行口经过ARM程序处理后,或显示在LCD上,或传输到远端PC上。 本文通过周立功的LPC2106芯片完成的简易计算器,正是对嵌入式应用的学习和探索。 一、摘要: 计算器一般是指“电子计算器”,是能进行数学运算的手持机器,拥有集成电路芯片。对于嵌入式系统,以其占用资源少、专用性强,在汽车电子、航空和工控领域得到了广泛地应用。本设计就是先通过C语言进行相应程序的编写然后在ADS中进行运行最后导入PROTUES进行仿真。最后利用ARM中的LPC2106芯片来控制液晶显示器和4X4矩阵式键盘,从而实现简单的加、减、乘、除等四则运算功能。 关键字:中断,扫描,仿真,计算 二、原理与总体方案: 主程序在初始化后调用键盘程序,再判断返回的值。若为数字0—9,则根据按键的次数进行保存和显示处理。若为功能键,则先判断上次的功能键,根据代号执行不同功能,并将按键次数清零。程序中键盘部分使用行列式扫描原理,若无键按下则调用动态显示程序,并继续检测键盘;若有键按下则得其键值,并通过查表转换为数字0—9和功能键与清零键的代号。最后将计算结果拆分成个、十、百位,再返回主程序继续检测键盘并显示;若为清零键,则返回主程序的最开始。 电路设计与原理:通过LPC2106芯片进行相应的设置来控制LCD显示器。 而通过对键盘上的值进行扫描,把相应的键值通过MM74C922芯片进行运算从而

简单计算器设计报告

简单计算器设计报告 045 一、基本功能描述 通过文本编辑框实现基本整数的加减乘除运算 二、设计思路 如下图是整个程序进行的流程图,基本方法是在ItemText文本编辑框输入字符,程序对字符进行判断,若输入不是数字则提示错误。输入正常时,通过下拉框ComboBox_InsertString 选择相应运算符。点击等号IDC_OK,即可得出运算结果。操作简便,算法简单。 三、软件设计 1、设计步骤 打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名zhoutong及其所在位置,点击确定 1

将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成 MFC AppWizard就建立了一个基于对话窗口的程序框架

四、主要程序分析 1、字符判定函数 BOOL IsInt(TCHAR*str) { int i=atoi(str); TCHAR strtemp[256]; wsprintf(strtemp,"%i",i); if(strcmp(str,strtemp)!=0) { return FALSE; } Else { return TRUE; } } 该函数通过atoi把文本编辑框读取的字符转换为数字,再通过wsprintf把转换数字转换为字符,通过strcmp比较原字符和转换得来的字符。如相同返回true,不通则返回false. 3、运算符选择程序 BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { HWND hwndComboOP=GetDlgItem(hwnd,IDC_COMBOOP); ComboBox_InsertString(hwndComboOP,-1,TEXT("+")); ComboBox_InsertString(hwndComboOP,-1,TEXT("-")); ComboBox_InsertString(hwndComboOP,-1,TEXT("*")); ComboBox_InsertString(hwndComboOP,-1,TEXT("/")); return TRUE; } 3

计算器课程设计报告

高级语言程序(JAVA)课程设计报告 系部名称:商学系专业班级:营销*** 学生姓名:墨璇 墨兰学号: ********** ********** 指导教师:王芬教师职称:讲师 2014年06月26日

目录 一、课程设计目的及意义 .................................... 错误!未定义书签。 二、课程设计任务 .......................................... 错误!未定义书签。 2.1程序设计要求....................................... 错误!未定义书签。 三、课程设计时间 .......................................... 错误!未定义书签。 四、课程设计地点 .......................................... 错误!未定义书签。 五、课程设计内容 .......................................... 错误!未定义书签。 5.1开发工具与平台..................................... 错误!未定义书签。 (1).开发工具 ...................................... 错误!未定义书签。 (2).开发平台 ...................................... 错误!未定义书签。 5.2设计思路........................................... 错误!未定义书签。 5.3 程序测试 .......................................... 错误!未定义书签。 5.4实验总结........................................... 错误!未定义书签。 六、课程设计感想 .......................................... 错误!未定义书签。 七、附录(程序代码) ...................................... 错误!未定义书签。

计算器设计的java课程设计报告

】 · ( 华东交通大学课程设计 课 程: Java 程序设计 题 目: 计算器设计 年 级: 2010级 专 业: 信息一班 * 学 号: 姓 名: 组 员: 指导教师: 课程设计题目:计算器设计

课程设计(论文)任务书 基础学院信息与计算科学专业2010—1 班 一、课程设计(论文)题目计算器的设计 二、课程设计(论文)工作自2013 年 6 月23日起至2013 年6月27日止。 三、课程设计(论文) 地点: 计算机中心 · 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握系统各功能模块的基本工作原理; (2)掌握Java的基本编程原理和基本的编程方法; (3)使学生学会系统调试; (4)培养学生分析、解决问题的能力; (5)提高学生的软件文档写作能力和团队合作精神。 2.课程设计的任务及要求 ' 1)基本要求: (1)分析系统各功能模块的工作原理; (2)提出系统的设计方案; (3)对所进行编程、调试、修改。 2)创新要求: 在基本要求达到后,可进行创新设计,如:用虚函数,文件流,重载流插入运算符等。3)课程设计论文编写要求 (1)要按照书稿的规格打印誊写设计论文; > (2)论文包括目录、摘要、正文、总结等; (3)毕业论文装订按学校的统一要求完成。 4)答辩与评分标准: (1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分; (2)能正确回答老师所提问题,可增加10分; (3)课程设计报告书写规范整齐,可增加10分; (4)心得体会认真总结,可增加10分; (5)程序有创新性,可增加10分; [ 成绩评定实行优秀、良好、中等、及格和不及格五个等级。不及格者需重做。 5)参考文献:

简易计算器课程设计

基于单片机的计算器的设计 摘要:本设计是一个实现加减乘除的计算器,它的硬件主要由四部分构成,一个8051单片机芯片,两个八段共阴极数码管,一个4*4键盘,它可以实现一位数的加减乘除运算。 显示部分:采用LED动态显示。 按键部分:采用4*4键盘。采用软件识别键值,并执行相应的操作。 关键词:LED接口;键盘接口;8255A;汇编语言 一、概述 1.1设计要求及任务: (1)设计4*4的键盘,其中10个数字键0~9,其余六个键“+”、“—”、“*”、“/”、“=”、和“C”键; (2)设计两位LED接口电路; (3)实现1位数的简单运算 1.2设计原理 (1)LED显示器接口技术 LED动态显示接口技术 (2)键盘显示技术 逐行(逐列扫描法) 二、系统总体方案和硬件设计 2.1计算器总体思想 显示部分:采用LED动态显示。 按键部分:采用4*4键盘。采用软件识别键值,并执行相应的操作。 执行过程:开机显示零,等待键入数值,当键入数字,经通过数码管显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。 图1 系统设计框图

2.2硬件的选择与连接 图二硬件连接总图 2.2.1硬件选择 (1)由于本设计比较简单,因此选用内部含有4KBE2PROM的89C51单片机作为系统的核心。 (2)扩展输入/输出端口 在扩展输入/输出端口时,要求输入口能够缓冲,,输出口能够锁存。常用小规模集成电路芯片74LS244或74LS245等扩展输入端口,用74LS273、74LS373、 74LS377扩展输出端口。这种扩展方法的特点是电路简单,但功能单一、灵活性差。因而常采用中规模的可编程并行接口芯片8255A扩展输入/输出端口。 (3)锁存电路采用74LS373 2.2.2接口设计 (1)单片机与8255A的接口设计 8255A中的数据总线缓冲器为三态双向数据缓冲存储器,用于将8255A的数据线 D0~D7和单片机的数据总线(P0口)连接,实现单片机和接口间的数据传送。 读写控制部件的接口设计 1、/CS为片选信号,接成低电平表示8255A 被选中。/CS与P2.7相连,用P2口的最高位控制8255A是否工作。即将P2.7控制为低电平。 2、RESET-复位信号,高电平有效,接在单片机的RST端。 3、/RD和/WR为读写控制信号,低电平有效。分别将两个端口接单片机的/RD和/WR 4、A1和A0-端口选择信号,分别与单片机的低两位地址线P1.1和P1.0相连。用于选择不同端口。采用74LS373三态锁存器,用于分离P0口第八位地址线,将它的Q0和Q1口接至8255A的地址输入端A0和A1。

计算机技术综合课程设计报告

计算机技术综合课程设计 设计题目锅炉液位控制系统学生姓名史婷艳 专业班级自动化1302班学号20134460203 指导老师洪镇南 2017年1 月3日

目录 前言 (2) 1 锅炉汽包水位控制对象与控制指标 (4) 1.1锅炉汽包水位的特征 (4) 1.2汽包水位动态特性 (4) 1.2.1汽包水位在给水流量W作用下的动态特性 (4) 1.2.2汽包水位在蒸汽流量D扰动下的动态特性 (5) 1.2.3燃料量B扰动下汽包水位的动态特性 (6) 2. 汽包水位控制方案 (7) 2.1单冲量控制方式 (7) 2.2 双冲量控制方式 (8) 2.3 三冲量控制方式 (9) 3. 三冲量串级PID控制 (11) 3.1 串级PID控制 (11) 3.2 智能整定PID控制 (12) 4 汽包水位模糊控制器设计及仿真 (12) 4.1 输入输出变量 (12) 4.2 隶属度函数 (15) 4.3基于MATLAB/Simulink 环境建立的系统仿真分析 (16) 4.3.1 基于MATLAB/Simulink 的系统模型 (16)

4.3.2 仿真结果分析 (18) 总结与体会 (18) 参考文献 (20) 前言 锅炉是典型的复杂热工系统,目前,中国各种类型的锅炉有几十万台,由于设备分散、管理不善或技术原因,使大多数锅炉难以处于良好工况,增加了锅炉的燃料消耗,降低了效率。同时,锅炉工作过程中各项指标的调节难以建立数学模型,具有非线性、不稳定性、时滞等特点,所以如何改善对锅炉的控制,保证其正常工作,提高效率一直是人们关注的焦点。而汽包液位是锅炉安全、稳定运行的重要指标,保证液位在给定范围内,对于高蒸汽品质、减少设备损耗和运行损耗、确保整个网络安全运行具有要意义。 现代锅炉的特点之一就是蒸发量显著提高,汽包容积相对变小,水位变化速度很快,稍不注意就容易造成汽包满水或者烧成干锅,这都对汽包液位控制系统提出了更高的要求。汽包液位过高,会影响汽包内汽液分离效果,使汽包出口的饱和蒸汽带水增多,蒸汽带水会使汽轮机产生水冲击,引起轴封破损、叶片断裂等事故。同时会使饱和蒸汽中含盐量增高,降低过热蒸汽品质,增加在过热器管壁和汽轮机叶片上的结垢。水位过低,则可能破坏自然循环锅炉汽水循环系统中某些薄弱环节,以致局部水冷管壁被烧坏,严重时会造成爆炸事故。 目前,对汽包液位位控制大多采用常规PID控制方式,从控制方式来看,它们要么系统结构简单成本低,不能有效的控制锅炉汽包“虚假水位”现象,要么能够在一定程度上控制“虚假现象”,系统却过于复杂,成本投入过大。常用的蒸汽锅炉液位调节系统有三种基本结构:单冲量调节系统结构、双冲量调节系统结构、串级三冲量调节系统结

相关文档
相关文档 最新文档