简易计算器的设计._第1页
简易计算器的设计._第2页
简易计算器的设计._第3页
简易计算器的设计._第4页
简易计算器的设计._第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉理工大学微机原理与接口技术课程设计实验报告 学 号: 课 程 设 计题 目简易计算器的设计学 院自动化专 业电气工程及其自动化班 级姓 名指导教师2014年1月9日课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 自动化学院 题 目: 简易计算器的设计 初始条件:用8086cpu、8255a并行通信接口、七段led数码管接口、小键盘控制电路接口、外围电路芯片及元器件实现一个简易计算器,完成相应的程序编写。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)可进行2位十进制的加减乘除法运算。(2)键盘输入数据,同时led数码管显示,模拟计算器的

2、工作。(3)键盘上要求有09数字键,+、-、×、÷、=功能键,清除键c。(4)撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。时间安排: 12月26日- 12月 28 日 查阅资料及方案设计 12月29日- 1 月 2 日 编程 1 月 3日- 1 月 7日 调试程序 1 月 8日- 1 月 9日 撰写课程设计报告指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录摘要11设计的任务及要

3、求22方案的设计22.1方案设计论证22.2方案概述与原理硬件电路图33系统模块与功能53.18086cpu芯片53.2 8255a 并行通信接口芯片53.3 译码电路63.4 小键盘电路63.5 四位七段 led 数码管显示电路74软件设计框图与程序84.1计算器系统程序总体流程图84.2 模块程序流程图与程序94.2.1流程图94.2.2键盘扫描流程图94.3输入运算104.3.1输入运算的流程图104.3.2输入运算程序104.4显示部分114.4.1显示部分流程图114.4.2显示部分程序125系统仿真136小结与体会14参考文献15附录:设计源程序16本科生课程设计成绩评定表摘要 这

4、次微机原理的课程设计的题目是简易计算器的设计,设计一个可以实现2位十进制加减乘除运算功能的电路,并用led显示出来。硬件部分采用芯片8086cpu,74ls138译码器,并行接口芯片8255a,四位七段led数码管,和小键盘组成。4×4小键盘作为输入,该小键盘上有09、+、-、*、/和清零c共16个按键构成的;四位七段led数码管作为输出显示,数码管采用的是共阳极的数码管;8086cpu作为运算处理核心来完成计算器的主要功能,包括计算数据、数据保存、发出控制信号等;用8255a并行通行接口来完成本次计算器系统的接口电路,而74ls138译码器、或门电路以及导线是用来产生并行接口芯片8

5、255的片选信号,产生接口电路的端口地址,其中8255的a0、a1分别接cpu的a1、a2而使它的端口地址为偶地址。 本次设计的软件部分是采用8086汇编语言来完成的,主要通过读写端口来实现键值的输入和显示数字的输出,依靠乘法运算指令来实现计算器的计算。硬件电路完成后,用protues进行方真,得到结果。 关键词:计算器 小键盘 数码显示 键盘扫描 protues仿真21简易计算器的设计1 设计的任务及要求初始条件:用8086cpu、8255a并行通信接口、七段led数码管接口、小键盘控制电路接口、外围电路芯片及元器件实现一个简易计算器,完成相应的程序编写。要求完成的主要任务: (包括课程设计

6、工作量及其技术要求,以及说明书撰写等具体要求)(1)可进行2位十进制的加减乘除法运算。(2)键盘输入数据,同时led数码管显示,模拟计算器的工作。(3)键盘上要求有09数字键,+、-、×、÷、=功能键,清除键c。(4)撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。2 方案的设计2.1 方案设计论证 如下是两种方案的原理方框图: 方案一:8086cpu译码电路8255并行通信接口8255并行通信接口四位

7、七段数码管4*4小键盘图2.1 计算器的组成方框图方案一方案二: 译码电路四位七段数码管4*4小键盘8255并行通信接口 8086cpu图2.2 计算器的组成方框图方案二方案评估:方案一:释放了系统数据总线,但是方案缺乏经济性,因为采用了两片8255,浪费资源,舍弃!方案二:此种方案较为经济,方便,具有模块化的特点,因为将计算和显示电路全部集成在了8255上,应用时,直接挂接8255即可实现要求!2.2 方案概述与原理硬件电路图对上面框图2.2的方案二的概述:本次设计的简易计算器系统是由 8086cpu、8255a 并行通信接口芯片、四位七段 led数码管、小键盘、74ls138 译码器芯片及

8、部分门电路芯片组成,系统组成方框图如图 2.2 所示。整个计算器系统通过 4×4 小键盘控制接口输入需要计算的原始数据和运算符号,这些数据经过 8255a 并行通信接口输入给 8086cpu 并 保存起来,cpu 接收数据后根据不同的运算符来处理数据,然后 cpu 把运算处理后的数据经过 8255a 并行通信接口输出给给四位七段 led 数码管,最后后数码管把接收到的数据显示在数码管屏幕上,而 74ls138译码器和相应的或门是给 8255 提供译码片选信号而设计的,只有 cpu 输出 8255 选通的地址才能使 8255 处于正常工作模式,系统才能有效工作。整个计算器系统的详细电路

9、图如下图2.3图2.3 简易计算器硬件电路图3 系统模块与功能3.1 8086cpu芯片8086cpu 芯片是本次简易计算器系统的核心部件,其主要功能包括完成数据的加减乘除运算,把需要显示的十六进制数转换成与之对应在数码管上显示的十六进制代码,配合小键盘形成不同键值对应的特定十六进制代码。在该次计算器系统中,8086cpu 工作在最小模式,通过 ad0ad7 八位地址/数据总线接口与 8255a 并向通信接口交换计算器系统中所有数据,而数据的交换方向是通过 rd 和 wr 输出的低电平有效控制信号来控制的,同时 cpu 执行系统所有软件程序,控制着系统中其他部件的工作。由于只是简单操作,这次设

10、计我们让8086工作在最小模式下,即mn/mx为高电平。8086cpu引脚图如图3.1所示:图3.1 8086cpu引脚图3.2 8255a 并行通信接口芯片 8255a 并行通信接口芯片,如图 3.2 所示,是8255芯片的引脚图,其具有数据缓冲和锁存作用,可以让多个外设同时工作而又互不干扰,同时也解决了高速 cpu 与低速外设的工作不同步问题。 图3.2 8255芯片引脚图8255a内部包括三个8位的输入输出端口,分别是端口a、端口b、端口c,相应信号线是pa7pa0、pb7pb0、pc7pc0。端口都是8位,都可以作为输入或输出。有三种工作方式:方式0,方式1,和方式2。其中方

11、式0,工作在无条件传输方式下,a,b,c端口都适用,方式1,工作在异步或条件查询方式下,只有a,b端口适用,方式2,是双向传输方式,仅a端口适用。有两个控制端口,a组和b组,其中a组由a口与c高4位组成;b组由b端口和c口低4位组成。在本次计算器系统中,8255a 工作在 0 方式下,pa 口、pb 口和pc 口的低四位输出,pc 口高四位输入,其控制口输入的控制字为 88h,pa 口接七段 led数码管的阴极,pb 口的低四位接数码管的四个阳极,pc 口接 4×4 小键盘的八个接口。工作方式0:8255a中各端口的基本输入/输出方式如图3.3:图3.3 8255a工作方式控制3.3

12、 译码电路译码电路由一片 74ls138 译码器和一个或门电路组成,根据译码器及或门的接线知道 8255 被选通的条件是 ad0、ad3、ad4、ad5、ad7 低电平有效,ad6 高电平有效,而 ad1 和 ad2 分别接 8255 的 a0 和 a1,故经过译码后 8255 的控制口、pa 口、pb 口、pc 口端口地址分别是 40h、42h、44h、46h。3.4 小键盘电路4×4 小键盘是计算器系统的输入部件,其功能是输入计算器系统中的所有运算数据以及运算符号。小键盘上有 16 个按键分为四行四列,相当于如下的电路图3.4,每一个按键就相当于是一个开关,每当按键被按下,该开关

13、就闭合了,于是位于该行与该列的两接线在键盘部闭合。本次计算器系统让小键盘的纵向接口从分别与 pc 口低四位pc2、pc1、pc0、pc3相连,横向接口从左向右分别与 pc 口高四位pc4、pc5、pc6、pc7相连,由于 pc 口的高四位为输入而低四位为输出,cpu 可以向 pc 口置数使得 pc 口的高四位与低四位的状态不同,每当有按键按下,pc 口的高四位的状态就会通过接通的按键开关被 pc 口的低四位改变,按下的键不同改变后的值就不同,从而就对应不同的键值,于是根据这种特定的对应关系就可以确定按下的键的值了。其中的键值映射图如图3-1和3-2:图3.4 4*4计算器的原理等效电路表3-1

14、 键盘映射图 表3-2 键盘编码图789/456*123-on/c0=+0ebh0dbh0bbh7bh0edh0ddh0bdh7dh0eeh0deh0beh7eh0e7h0d7h0b7h7eh3.5 四位七段 led 数码管显示电路七段 led 数码管是由 8 个发光二极管组成,分别是数字部分 ag 和小数点部分 dp,通过 led 的不同亮灭组合就可以显示出不同的数。七段 led 数码管分为两种,分别为共阳极和共阴极,两者极性接法相反,在这里具体介绍共阳极七段 led 数码管,共阳极七段 led 数码管是把 8 个发光二极管的阳极连在一起由一个公共端口 vcc 引出,阴极互不干扰分别引出 8

15、 个端口 ag 和 dp,由 led 的导通发光原理可知只有阳极输入为高电平时数码管才能正常显示,而显示的具体数字由 8 个阴极输入不同电平组合决定。本次计算器系统要求的是两位十进制数的运算,运算结果最多为四位,故在这里采用四位共阳极七段 led 数码管来构成显示电路,显示电路让四位七段led 数码管的公共阴极 ag 和 dp 依次连接 8255 的 pa0pa7,四个阳极 vcc 从低位到高位分别与 pb0pb3 相连,故 pb0pb3 的输出高电平有效,分别决定数码管低位到高位的显示;而 pa0pa6 的输出决定显示的数字,pa7 输出控制小数点,低电平有效,具体数字显示对应的输出信号如表

16、 3-3所示。表 3-3不带小数点数字显示对应输出表显示的数0123456789pa 输出0c0h0f9h0b4h0b0h99h92h82h0f8h80h90h4 软件设计框图与程序4.1 计算器系统程序总体流程图如图 4.1所示。开始初化8255、清零无键按下?下?键盘逐步扫描,获取值hb键值是符号?根据符号做运算无运算结果?运算结果存入sum输入第二个数?第一个数存入sum第二个数存入sum显示sum中的数结束nynnnynyny图 4.1 计算器系统总体程序流程图4.2 模块程序流程图与程序4.2.1 流程图键值程序获取是通过键盘逐行扫描,扫描不同行时赋给 c 口的值不同,从上到下分别是

17、 0feh、0fdh、0fbh、0f7h,按下不同的键在读 c 口时得到不同的数,然后根据这个数确定对应的键值,键值对应的 c 口读数关系如表 3-1和3-2 所示,该段程序流程图如图 4.2 所示。n扫描键盘开始赋初值dh=0f0h循环次数cx=4,dh送给c口,读入c口程序ah= 0f0h?cx-1=0?根据al确定按下的值,将之存入bh,转入display程序。rol dh,1ny图 4.2 计算器键盘扫描流程图4.2.2键盘扫描程序mov cx,4mov dh,0fehkeyscan:add flagshu,1mov al,dhout 44h,alin al,44hmov ah,ala

18、nd ah,0f0hcmp ah,0f0hjne getkeyrol dh,1loop keyscan ;键盘逐行扫描4.3输入运算4.3.1输入运算的流程图数据运算模块程序是通过判断运算符标志缓存内容来决定进行哪种运算的,清零运算是把运算符标志和数据缓存清零初始化,加减乘除运算是保存第一个输入运算数准备输入第二个运算数,等号运算是根据加减乘除运算标志符来进行相应的加减乘除运算并保存结果,该部分程序流程图如图 4.3 所示根据符号判断做那种运算开始运算清零c?是=?是+、-、*、/?将结果存入sum,清零缓存。转入displaysum清零数据,缓存。第一个数存入sum转入keycheckynn

19、yyn图 4.3 计算器系统运算程序流程图4.3.2输入运算程序displayshu: cmp flagshu,1 jg displayshu mov sum,bh mov sum1,bh jmp displaysumdisplayshu1:mov al,sum1mov bl,0ahmul bladd al,bhmov sum1,almov sum,aljmp displaysumdisplay:cmp bh,0ahjl displayshumov al,0c0hout 40h,almov al,0fhout 42h,alcall delaymov flagshu,0cmp flagclr,1

20、je clrfacmp flagdeng,1je dengfacmp flagmul,1je chengfa4.4显示部分4.4.1显示部分流程图四位七段 led 数码管的显示并非同时显示的,而是从高位到地位逐位显示的,但指令的执行周期是非常短的且人眼的观察存在视觉停留不能差别先后,而人眼所能观察到的最短时间是相对比较长的,因而程序中每次显示都设计有时间延迟程序。同时先要设计程序把要显示的数分解成个、十、百、千分别保存起来,然后逐位显示,整个显示部分的模块程序流程图如图 4.4 所示显示开始sum 求千、百、十、个位数字分别存入缓存 qian、bai、shi、ge求qian alal从pa输出

21、pb=08h百 alal从pa输出pb=04h求shi alal从pa输出pb=02h求ge alal从pa输出pb=01h转入display图 4.4 计算器键盘扫描流程图4.4.2显示部分程序displaysum:mov ax, summov dx,0mov bx,3e8hdiv bxmov qian,almov ax,dxmov bl,64hdiv blmov bai,almov al,ahmov ah,0mov bl,0ahdiv blmov shi,almov ge,ahmov al,qianmov bl,offset tabxlatout 40h,alout 42h,8hcall

22、delaymov al,baixlatout 40h,alout 42h,4hcall delaymov al,shixlatout 40h,alout 42h,2hcall delaymov al,gexlatout 40h,alout 42h,1hcall delayjmp keycheck5系统仿真 本次实验是基于protues里面的仿真,我们将硬件电路图,在protues器件库里面找到相应的芯片,并按照电路图连接如图5.1,连接好电路图,将编好的程序转化成hex格式,导入到8086cpu里面,然后点击仿真,运行。图5.1 protues连线图图5.1 protues仿真图武汉理工大学微

23、机原理与接口技术课程设计实验报告小结与体会通过本次微机原理与接口技术课程设计,我更深入的掌握了在微机原理与接口技术理论课上学习到的各种基本控制理论,了解学习了很多课堂上没有涉及的知识,锻炼了我多方面的能力,以下是我本次设计的具体体会。(1)通过理论联系实际的真实设计,我更加深入的了解了汇编语言的编程思想,学会了用汇编语言编写一些不太复杂的应用程序。通过本次设计,我深深的体会到汇编语言是一门接近硬件的语言,它与 c 语言等其他高级语言有很大不同,往往在高级语言很容易实现的功能通过汇编来实现很复杂,比如说 c 语言编写加减乘除运算只需要简单的一两条语句,而汇编语言编写需要很复杂的程序段来实现;但汇

24、编语言有它的长处,汇编语言的运行速度比其他高级语言更快,对于实现硬件功能有着极大的优越性。(2)本次课程设计由于所设计的知识涉及很广,许多设计中的硬件工作方式以及功能的实现方法都是我以往并不知道的,这迫使我去查阅许多相关资料文献,学习相关知识,这些不但使我学习了许多新的知识,而且锻炼了我独立学习新知识的能力。(3)我还通过本次设计锻炼了我独立思考和动手解决控制系统实际问题的能力,由于我们的设计是以小组为单位,如果一个小组不能很好的配合工作学习是不能把设计做好的,这些都锻炼了我与其他同学互相配合、互相帮助的团队协作能力。参考文献1 彭虎, 周佩玲, 傅忠谦编著. 微机原理与接口技术(第 2 版)

25、. 北京: 电子工业出版社, 20082 沈美明, 温东婵编著. ibm-pc 汇编语言程序设计(第 2 版). 北京: 清华大学出版社, 20013 潘新民, 王燕芳编著. 微型计算机控制技术. 北京: 高等教育出版社, 20014 段承先编著. 微型计算机原理及接口技术. 北京: 兵器工业出版社, 20005 黄国建, 虞平良, 曾芬芳编著. 微型机算机应用技术. 上海: 上海交通大学出版社, 1995附录附录一程序代码:data segment tab db 0c0h,0f9h,0b4h,0b0h,99h,92h,82h,0f8h,80h,90h flagshu db 0 flagmul

26、 db 0 flagclr db 0flagdeng db 0 sum dw 0 sum1 db 0 sum2 db 0 qian db 0 bai db 0 shi db 0 ge db 0 data ends code segment assume cs:code, ds:data start: mov ax,datamov ds,ax mov al,88h ;8255初始化10001000 out 46h,al ;46h,44h,42h,40h分别为8255控制口,pc,pb,pa xor bh,bh keycheck:mov al,0f0h out 44h,alin al,44hcmp

27、 al,0f0h je display call delay ;去抖动 cmp al,0f0h je display mov cx,4 ;循环4次 mov dh,0feh keyscan: add flagshu,1 mov al,dh out 44h,al in al,44h mov ah,aland ah,0f0h cmp ah,0f0h jne getkey rol dh,1 loop keyscan ;键盘逐行扫描 getkey: ;获取键盘值 cmp al,0eeh ;第一行je l1 cmp al,0deh je l2 cmp al,0beh je l3 cmp al,7eh je

28、 ljiacmp al,0edh ;第二行 je l4 cmp al,0ddh je l5 cmp al,0bdh je l6 cmp al,7dh je ljian cmp al,0ebh ;第三行 je l7 cmp al,0dbh je l8 cmp al,0bbh je l9 cmp al,7bh je ldeng cmp al,0e7h ;第四行 je l0 cmp al,0d7h je lcheng cmp al,0b7h je lchu jmp lclr l1: ; 1按下 mov bh,1 jmp displayl2: ;2按下 mov bh,2 jmp display l3:

29、 ;3按下 mov bh,3 jmp display ljia: ;+按下 mov bh,0ah jmp display l4: ;4按下 mov bh,4 jmp display l5: ;5按下 mov bh,5 jmp displayl6: ;6按下 mov bh,6 jmp displayljian: ;-按下 mov bh,0bh jmp display l7: ;7按下 mov bh,7 jmp displayl8: ;8按下 mov bh,8 jmp display l9: ;9按下 mov bh,9jmp display ldeng: ;=按下 mov bh,0ch mov f

30、lagdeng,1 jmp display l0: ;0按下 mov bh,0 jmp display lcheng: ;*按下 mov bh,0dh mov flagmul,1 jmp display lchu: ;/按下mov bh,0eh jmp display lclr: ;清零c按下 mov bh,0fh mov flagclr,1 jmp display display: cmp bh,0ah jl displayshu mov al,0c0h out 40h,al mov al,0fh out 42h,al call delay mov flagshu,0cmp flagclr,1 je clrfa cmp flagdeng,1 je dengfa cmp flagmul,1 je chengfa jmp keycheck chengfa: ;+按下 mov al,sum1 mov sum2,al jmp keycheck clrfa: ;清零 mov sum,0 mov sum1,0 mov sum2,0 mov flagmul,0 mov flagdeng,0 mov flagclr,0 jmp ke

温馨提示

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

评论

0/150

提交评论