8086计算器仿真设计Word下载.docx
- 文档编号:13432376
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:33
- 大小:393.84KB
8086计算器仿真设计Word下载.docx
《8086计算器仿真设计Word下载.docx》由会员分享,可在线阅读,更多相关《8086计算器仿真设计Word下载.docx(33页珍藏版)》请在冰豆网上搜索。
8086通过74273锁存器与8255A相连,使8086能够读外部数据和给外部芯片写数据。
8255A的A口设置为输出,B口和C口设置为输入,将8255A分别和4*5矩阵、数码管、蜂鸣器相连接。
8086不断循环扫描键盘使键盘输入的数据能够读入8086,同时,
8086通过8255A,将数据输入给数码管把相应的值显示出来,将高
电平送到蜂鸣器的正极输入端使其发出预定的声音。
本方案在设计
上无错误,应用界面友好的Proteus软件来设计在理论可实现。
在大一时学习了C语言,对于程序设计有一定的基础。
本学期还学习了汇编程序设计,结合C语言,对汇编程序的设计有一定的经验。
此外,小组中有3人曾参加工院的本科生科技创新项目,对
单片机的编程熟练,并有一定的工程实践经验。
本小组成员团结性强,学习能力好。
能够相互协调克服困难。
本实验应用的软件技术成熟,在网上有很多成熟的设计可供借
图2
四、硬件设计
整个设计如图所示,8086通过地址总线与74273相连实现数据
锁存的功能,再通过8255A与外设接口相连接,通过其A、B、C口
实现对其它设备进行控制
这些设备包括:
输入键盘,蜂鸣器,4位数码管,幕运算按钮,
计数按钮五、软件设计
本实验的程序部分,其流程图如下:
开始
结束
六、具体代码实现
由于代码较多,因此放在最后的附录。
七、调试与测试
第一步:
对实现基本加、减、乘、除运算的测试。
分别进行四种基本运算:
1.计算25+37的结果
依次按下2、5、+、3、7、=,在显示器上显示出结果:
63加法运算正确。
2.计算27-9的结果
依次按下2、7、-、9、=,在显示器上显示出结果:
18。
减法运算正确。
3.计算15*2的结果
依次按下1、5、*、2、=,在显示器上显示出结果:
30。
乘法运算正确。
4.计算56/8的结果
依次按下5、6、/、&
二,在显示器上显示出结果:
7。
除法运算正确。
第二步:
对实现每按一次按键蜂鸣器发一次预定声音功能的测试。
执行后,按下按键蜂鸣器出声则此功能可以正常实现。
第三步:
对实现幕运算的功能进行测试
计算83的结果
依次按下&
人、3,在显示器上显示出结果:
524。
幕运算正确。
第四步:
对计数功能进行测试
使整个电路开始工作,按下自动计数开始的按钮,计数开始,到8结束,蜂鸣器发声提示时间到。
此功能执行成功。
第五步:
手动计数加1和减1的功能测试
按下手动加1按钮,数码管上显示的值加1,按下手动减1按钮,数码管上显示的值减1。
功能执行正常。
八、关键技术
1•本实验利用子程序思想将整个程序模块化,使得程序清晰明了,并且调用方便,移植性好,升级简单;
2.运用矩阵键盘扫描和键值比较确保每一个键都能够被8086及时检
测到并正确识别;
3•用大循环将整个程序反复执行,保证程序按设计执行,不会出现跑飞的情况;
4.正确设置8255A工作方式,是8086读取键盘值和送数至数码管高效正确执行。
九、实际完成功能
通过硬件电路的搭接和汇编程序的设计,我们设计出的计算器
可以正确的完成以下功能:
1.对加、减、乘、除的基本运算。
通过键盘输入并显示要计算的数字和执行的运算,通过数码显示器显示计算结果;
2.实现每次按下按钮时蜂鸣器都能发出声响。
表明已有按键按下,可以根据声响的次数来判断输入数字的个数和是否误输的情况,有效避免和降低了用户错误的发生;
3.实现求幕运算的功能。
通过键盘输入底数和幕次,由数码显示器显示计算结果,在简单计算器的基础上,实现了更高级的运算,实用性增强;
4.实现从计数的功能,并有自动计数、手动加1计数和手动减
1计数功能可供选择。
按下自动计数键,电路便开始实现计数的功能并由数码显示器显示,计数到预定值时停止并提示用户。
十、总结(任务分工等)
通过小组人员的共同努力,我们顺利实现了计算器的预计全部功能,并在此基础上增加了一些实用的功能。
我们小组的任务分工如下:
在本次的实验中,使我们熟练地掌握了Proteus软件的运用,对课本的知识理解更加深刻。
学会了运用所学的知识来解决实际的问题,积累了一些动手实践的经验。
在上课时学习的都是基本的程序设计,没有什么子程序,程序短而且简单,分析起来不困难。
而在本实验中,要求设计的是一个完整的系统,这就要求我们从系统出
发,把视野放在整体上,力求各个子模块之间的相互协调和配合共同组成完整可行的系统。
本次实验一改以往做实验的风格,通过一个大的综合实验和小组结对的方式,给学员更多的自由发挥空间,使学员的许多方面得到了锻炼。
在一个系统中,不是通过各个子模块的简单堆积就能够实现整体的功能,而是各个模块相互协调,发挥各自的功能,才能完美实现所需要的功能。
因此,本实验其实难度更大,也更有实际意义。
其实际意义早已超越了实验本身。
通过一个综合实验,我们更加充分的理解了课本的程序语句,不仅知道各条语句之间的相同点,也理解了在不同条件下它们的不同作用。
本实验在做的过程中,我们从一个更高的层次对课本的知识进行了一遍详细的梳理。
这次实验,不管是对于课本的学习,还是今后参加工作或者参加电子设计,都有很大的意义。
十一、附录实验程序源码
DATASEGMENT
X
DB
?
;
存放数据的每一位
X1
DW
存放第一个数据值
X2
Y
存放运算结果
S
存放运算符号值
E
按下等号键标记
CC
存放运算数据位数
H
;
存放按键行号
L
存放按键列号
SJISZHI
DB?
存放计数值的变量
DISCODE
3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,7
9H,71H;
段码表
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOV
MOV
MOVSJISZHI,0
口输出,C口输出
OUT
向X的高位
KKK:
CALL
JMP
AX,DATA
DS,AX
AL,90H;
设置为A口输入,B
46H,AL
DI,OFFSETX+3;
DI指
KEY;
扫描按键
KKK
以下为按键扫描子程序
程序返回后,在变量H和L中存放当
前按键的行列号
KEYPROC
CHECK:
时进行显示
IN
CMP
JZ
键按下,等待
LOOP
列号变量清0
DISP;
等待按键按下的同
AL,0F0H;
所有行输出低电平
44H,AL
AL,40H
AL,0FFH读列值
CHECK若都为高电平则无
CX,50
$;
延时消抖
AL,DX;
重读列值
AL,0FFH
CHECK;
无键按下一直等待
H,0;
有键按下,先把行
L,0
BL,01H
BH,0FEH;
扫描法读键值:
从
第一行开始测试,
即PC0输出低电平
NEXT:
NEXTH:
几列有键按下
AL,BH
读列值,判断是第
TEST
AL,BL
从第一列开始判断
WAIT0
ROL
BL,1
BL,20H
当前行状态下没有
任何列有键按下,则转为对下一行的测试
NEXTL
INC
每判断列,列号加
1
NEXTH
再对下一列进行判
断
NEXTL:
H,0
BH,1
对下一行测试,让下
一个PC口输出低电平
CMPBH,OEFH
EXIT
NEXT
WAITO:
IN
按键松开后再计算键值
JNZ
CALL
EXIT:
RET
KEYENDP
AL,40H;
若有键按下,贝S等该
KEYVALUE;
调计算键值子程序
以下为计算键值子程序,通过行列号计算键值(键值=列号
*5+行号)
键值存放在DL寄存器中
KEYVALUEPROC
PUSHAX
MOVAL,0FFH
OUT42H,AL
DELAY
AL,00H
POPAX
DL,L
DH,H
AL,5
MUL
DL;
列号乘5
DL,AL
ADD
DL,DH
DL,0
QI
DL,1
BA
DL,2
JIU
DL,5
SH
DL,6
WU
DL,7
LIU
DL,9
JISHU_CALL;
自动计数
DL,10
Yl
DL,11
ER
DL,12
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8086 计算器 仿真 设计