资源描述
成绩
Xxxxxxxxxxx
课程设计阐明书(论文)
题 目 简易计算器系统设计
课 程 名 称 微型计算机原理与接口技术
二 级 学 院 xxxxxxxxxx
专 业 xxxxxxxxxx
班 级 xxxxxxxxxxxxxxxxxxxxxx
学 生 姓 名 xxxxxxxxxxxx
设 计 地 点 xxxxxxx
指 导 教 师 xxxxxxxxxxx
设计起止时间: 6 月13日至 年6 月24 日
目录
一、设计任务与规定 3
二、设计思路 3
三、硬件电路设计 10
四、软件编程设计 11
五、仿真与调试 15
六、结论与心得 18
七、参照文献 18
简易计算器系统设计
一、设计任务与规定
1、可以进行十进制数四则运算。用按键输入数据;具备清零和复位功能;具备持续运算功能。
2、在设计中可以引用所需参照资料,避免重复工作,加快设计进程,但必要和题目规定相符合,保证设计对的。学会掌握和使用各种已有技术资料,不要盲目地、机械地抄袭资料,必要详细分析,使设计质量和设计能力都获得提高。要在教师指引下制定好自己各环节详细设计进程筹划,按给定期间筹划保质保量完毕个阶段设计任务。设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计效率,保证准时完毕设计工作并交出合格设计报告。
二、设计思路
依照本次设计设计目及设计规定,可有下列两种方案:
1. 方案1
模仿简易计算器重要由键盘输入和LED数码管显示两某些构成,其界面如图1所示:
要设计一种模仿计算器,要用到可编程并行I/O接口芯片8255A,重要要解决8255A与键盘接口和8255A与LED数码管接口问题。
1.1 8255A与键盘接口
键盘是计算器输入设备,通过键盘把数据和操作命令输入到计算器,实现人机对话。当前使用键盘分为编码键盘和非编码键盘。
编码键盘带有必要硬件电路,能自动提供按键ASCⅡ编码,并能将数据保持到新键按下为止,尚有消除抖动和防止多键、串键等保护装置。编码键盘软件简短,它依照编码就能辨认是什么键按下,但硬件电路复杂,价格较贵。 非编码键盘仅仅是按行、列排列起来矩阵开关,其她工作如辨认键、提供代码、去抖动等由软件来解决。
为了辨认键盘上闭合键,普通可以采用两种方式:行扫描法和行反转法。(1)行扫描法
行扫描法辨认按键原理如下:一方面鉴别与否有键按下。将所有行线置成0电平,然后通过列线输入所有列值,如果读入列值全是1,则阐明没有任何一种键按下;反之,如果读入列值不全是1,着阐明有键按下。也就是说,在键盘辨认开始先进行全扫描,若有键按下,则必要鉴别是哪个按键被操作。
第二步拟定哪个键被按下。一旦发既有键按下,就转入采用逐行扫描办法来拟定是那一种键被按下。先扫描第一行,虽然它输出0电平,别的行线为高电平1,然后读入列值。如果读入列值中有一位为低电平0,则阐明在此行一种行、列交叉处有键被按下。如果读入列值全是1,阐明这一行所有按键都未被按下。接着扫描第二行。依次类推,逐行扫描,直到扫完所有行线为止。若在扫描过程中,发现非全1列值,就能找出被按下键。
(2)行反转法
行反转法辨认闭和键时,要将行线接一种并行口,先让它工作在输出方式下;将列线也接一种并行口,先让它工作在输入方式下。程序使CPU通过输出端口,向各行线上所有送低电平0,然后读入列线值(列值),如果此时有某一键被按下,则必然会使某一列线为0,输入列值其中某一位为0。然后,程序在对两个并行端口进行方式设立,使行线工作在输入方式,列线工作在输出方式。运用输出指令,使列线所有输出为0 值。再从行线输入行线值(行值)。行值中闭合键所相应位必然为底电平0。运用这种反转法,可得到一对行值和列值,每一种按键唯一相应一组行值和列值,行值和列值组合起来可以形成一种按键辨认码。
(3)在扫描键盘过程中,应注意解决如下问题:
①键抖动:当用手按下一种键时,往往会浮现按键在闭合和断开位置之间跳几下才稳定到闭合状态状况;在释放一种键时,也会浮现类似状况,这就是抖动。这种抖动经常发生在键被按下或抬起瞬间,普通持续几毫秒到几十毫秒,随键构造不同而不同。在扫描键盘过程中,必要想办法消除键抖动,否则会引起错误。消除键抖动可以用硬件电路来实现,它运用R—S触发器来锁定按键状态,以消除按键影响。简朴办法是运用软件延时来消除键抖动。也就是说,一旦发既有键按下,就延时20ms后来再去检测按键状态,这样就避开了键发生抖动那一段时间,再读按键状态,数据可靠。
②重键:重键是指一种以上按键同步按下而产生不拟定或错误问题。浮现重键时,读取键值必然出既有一种以上0。于是就产生了究竟与否予以辨认哪一键问题。解决重键可采用办法有:一是无效解决,当发既有一种以上按键同步按下时,以为本次按键输入无效。二是等待释放,将最后释放按键作为有效键解决。三是硬件封锁,当发既有一按键按下时,硬件电路即刻封锁其她按键输入直到该键解决完毕。
③应防止按一次键而产生多次解决状况:这种状况发生是由于键扫描速度和键解决速度较快,当某一种按下按键尚未及时释放时,键扫描程序和键解决程序已执行了多遍,这样由于程序执行和按键动作不同步,而导致一次键有各种键输入错误状态。为了避免发生这种状况,必要保证按一次键,CPU只对该键作一次键解决,为此,在键扫描程序中不但要检测与否有键按下,在有键按下状况下,作一次键解决;并且在键解决完毕后,还应检测按下键与否释放,只有当按下键释放后来,程序才继续往下执行。这样每按一次键,只有一次键解决,使两者达到了同步。
8*2键盘是一种行列式键盘,如图2所示图中有8行2列,8根行线与PB口相连,2根列线与PC口PC6、PC7相连按键设立在行、列交交点处(数字或字符为其键号),行、列线分别连接到按键开关两端。当列线通过上拉电阻接+5V时,接被钳位在高电平行列式键盘电路状态。键盘中有无按键按下是由列线送入全扫描字、列线读入行线状态来判断。这就是:被行线所有I/O线均置成低电平,然后读入列线电平状态。如果有键按下,总会有一根列线电平被拉至低电平,从而时列线输入不全为1。 键盘中哪一种键是由行线逐行置成低电平后,检查列线输入状态予以拟定。其办法是:依次给行线送低电平,然后查所有行线状态,如果全为1,则所按下之键必在此行。并且与0电平行线相交交点上那个键。键盘工作方式采用编程扫描工作方式,即通过调用子程序来响应键输入规定,在按键扫描子程序中完毕下述功能:
①判断键盘上有无键按下。其办法是先使PB7~PB0=0,然后读PC6、PC7状态,若为全1则键盘中无键按下;若不全为1,则阐明键盘中有键按下。
②去除按键机械抖动影响。可作这样解决:当判断有键按下后,软件延时一段时间后再判断键盘状态,如果仍为键按下状态,则以为有一种拟定键按下,否则按按键抖动解决。
③求按下键键值及键号。键盘上每一种键都相应一种键值。键盘中键号排列没有规律,不能通过对键值直接运算得到键号。因而必要先判断按下键是使PC7=0还是PC6=0,然后再查为零列线上键准时其8位键值中与否有一位为零,若为零则可得到键值。求按下键值及键号目是使程序转到相应地址去完毕该键操作。普通,对数字键就是直接将该号送到显示缓冲区进行显示,对功能键则必要先找到完毕该功能键解决子程序入口地址,并转去执行该键命令。因而,当键号求到后,还必要找到功能键解决程序入口。
④为保证键闭合一次CPU仅进行一次键功能操作。程序中需要等待键释放后来再将键号送累加器AH。
1.2 8255A与LED数码管接口
发光二级管数码显示屏简称为LED(Light Emitting Diode)数码显示屏,它由七段发光二级管构成。这种显示屏价格低廉、体积小、功耗低,而可靠性有较好,因而,从单板微型机、袖珍计算机到许多微型机控制系统及数字化仪器都用LED作为输出显示。
LED数码管重要某些是七段发光二极管,如图3所示。这七段发光二极管分别称为a、b、c、d、e、f、g,有产品还附带有一种小数点h,通过7个发光段不同组合,可以显示0~9和A~F共16个字母数字或其他异形字符。
LED数码管有共阳极、共阴极两种构造,如图4所示。如为共阳极构造,则共用阳极应接高电平,各段则输入低电平,方为有效。如为共阴极构造,共用阴极必要接低电平,而各段处在高电平时便发光。
表1表达了共阴极与共阳极构造字符0~F编码表。编码低位为a,高位为g。
表1:七段LED编码表
显示数字
编码
共阴极
共阳极
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
.
3FH
06H
5BH
4FH
66H
6DH
7DH
07H
7FH
67H
77H
7CH
39H
5EH
79H
71H
80H
C0H
F9H
A4H
B0H
99H
92H
82H
F8H
80H
98H
88H
83H
C6H
A1H
86H
8EH
7FH
要实现计算器显示功能,需要用6位七段LED数码管来实现多位显示。在这种方案中,硬件上用公共驱动电路来驱动各数码管;软件上用扫描办法实现数字显示。
由于要显示6位十进制数,因而采用6位七段LED动态显示电路,需要一种8位I/O口和一种6位I/O口,其中8位I/O控制段选码,6位I/O控制位选。进行6位字符显示时,采用扫描显示方式,即在每一瞬间只使某一位显示相应字符,在此瞬间,段选控制I/O输出相应字符段选码,位选控制I/O口在该显示位送入选通电平(共阴极送低电平,共阳极送高电平),以保证该位显示相应字符,如此轮流,使每位显示该位应显示字符,并保持延迟一段时间(1~5ms),以导致视觉暂留效果,不断循环送出相应段选码、位选码,就可以获得视觉稳定显示状态。只要CPU通过段控制端口送出段代码,然后通过位控制端口送出位代码,指定数码管便显示相应数字。如果CPU顺序地输出段码和位码,依次让每个数码管显示数字,并不断地重复,当重复频率达到一定限度,运用人眼视觉暂留特性,从数码管上便可见到相称稳定数字显示。
图5是一种由8255A控制6位共阴极显示系统,A口输出LED字符7段代码信息,C口输出6个LED位选信号,由程序控制依次使Q0—Q5低电平轮流有效,使得LED0—LED5轮流显示。
2. 方案2
用汇编语言编写程序实现应用程序功能,从而实现简易计算器汇编程序设计与实现。
2.1 使用设备
具有Windows汇编编译环境MASM软件及Office 软件计算机一台。
2.2 参数定义
在本程序中,定义了变量B1~B8用来显示提示信息8个参数。定义了变量X和Y用来保存输入操作数。定义了变量C用来保存除法运算中余数。定义了变量D用来保存输入操作符。定义了变量E等于10。
3.2.3用法
在masm环境下运营本程序,按提示依次输入操作数、操作符,回车经运算后便可得到运算成果,在屏幕上显示出来;在提示下按下“g”或是回车,则继续进行运算或是退出程序。
三、 硬件电路设计
8255A与键盘、显示屏接口见下图6,键盘16个按键构成8×2矩阵,其中8根作为8255A输出线与PA7-PA0连接,2根作为8255A输入线与PC7、PC6连接。PB0-PB7向显示屏提供段码,PC0、PC1、PC2给出位码之后经74LS138译码之后选中6个数码管中一种。
四、 软件编程设计
1.流程图
输入第一种操作数,从DAT_1开始,与0DH(回车)相比,若相似则跳转到DAT_2除以10,保存余数;否则乘以10保存,等待接受下一种数字。
某些程序流程如图8所示
图 8 输入数据流程图
简易计算器程序总流程图如图9。
图 9 输入数据流程总图
2. 程序设计
2.1 程序设计思路
经研究分析,本程序设计思路如图7所示:
图 7 程序设计思路图
2.2 程序中核心技术
INT 21H 指令
01H号功能:等待从原则设备输入一种字符,将该字符ASCII码送给AL,并在原则输出设备上显示该字符。
入口参数:无。
出口参数:AL内容为输入字符ASCII码。
02H号功能:显示屏输出,用文本坐标下设立光标位置。
入口参数:DL内容为输出字符ASCII码。
出口参数:无
09H号功能:在原则输出设备上显示某个字符串。
入口参数:DX内容为要显示字符串首地址。
出口参数:无
从设计方案可行性及经济技术指标等方面综合考虑,方案二更合理,具备可行性且运算以便快捷。故选取方案二。
五 、仿真与调试
1.程序编写
第一步:对要实现功能进行大体分析,画出程序总流程图。
第二步:将这些功能实现分别编写程序来实现。
第三步;编写代码,上机调试和运营程序。
2.上机编译与调试
第一步:编辑源程序:即建立.ASM文献。
第二步:汇编源程序。源文献建立后,要用汇编程序对源文献进行汇编,以便产生二进制目的文献(.OBJ文献)。本程序用MASM.EXE编译界面如图10示。
图 10 用MASM.EXE编译界面
第三步;用LINK程序产生.EXE文献。汇编程序已产生出二进制代码文献(.OBJ),但.OBJ文献并不是可执行文献,还必要使用(LINK)把.OBJ文献转换为可执行.EXE文献。用LINK.EXE连接为可执行文献界面如图11所示。
图 11 用MASM.EXE编译界面
第四步;程序调试。
建立KDW.EXE文献后,就可以直接在DOS下运营此程序,如下所示:
C:>KDW<回车>
C:>_
程序运营结束后,返回DOS.如果运算成果对的且程序已把成果直接显示在屏幕上,那么程序运营结束时成果也就得到了。如果程序不显示成果,咱们如何懂得程序与否对的呢?这时,就要使用TD.EXE调试工具来查看运营成果。此外,大某些程序必要通过调试阶段才干纠正程序执行中错误,调试程序时也要使用TD.EXE。
3.运营成果
在masm环境下运营本程序,按提示依次输入操作数、操作符,回车经运算后便可得到运算成果,在屏幕上显示出来;在提示下按下“g”,则继续进行运算或是退出程序。成果图12和图13所示:
图 12 加法和减法运营成果
图 13 乘法和除法运营成果
本课程设计从汇编语言程序编写及应用出发,设计了一种简易计算器系统,本设计可以完毕5位数以内加减乘除四则运算,并且可以显示除法所得余数,同步具备清零和复位功能,达到了持续运算效果,可以解决寻常生活中某些简朴四则运算,通过两种方案比较最后拟定了可行性较高方案2。同步,此方案也具备其优缺陷;长处:设计构造比较简朴,成本比较低,可以满足生活中普通需求。缺陷:由于构造比较简朴(只能显示5位数据),因而不能解决位数不不大于5位数数据,运算速度和能力不是很高。
六、结论与心得
通过本次微机原理及应用课程设计,收获颇多。一方面是对汇编语言知识加深了结识,在课程设计中参照某些资料时,发现大量用汇编语言编写实例或者用8086和其她芯片组合成电路解决大量问题,涉及各个方面,使我结识到微机应用某些方面,同步通过设计巩固了《微机原理与接口技术》这门课知识,在平时只是‘纸上谈兵’,只是学习课本上知识,没有真正运用过,就是在平时上机实验时,也就是运用一、两个知识点,并且没有考察真正实际能力。而在课程设计中就不同了,必要运用大量知识,并且要使她们综合运用,这就不同于普通简朴编程了。另一方面,通过这短短一周实践,我感觉到自己在课本上学到理论知识和实践仍有一定差距。有知识,自己感觉已经掌握得差不多了,但是实际操作起来就有问题浮现了,也许这就是要咱们搞课程设计目吧。再次,在课程设计中拓宽了我视野,通过查找程序和参阅书籍,使我结识到课本上关于微机原理知识只是咱们学习微机入门知识准备而已,要想应用到实际设计中还必要进一步学习,这就无形中咱们知识从拓宽了许多,这些都是课程设计某些功劳。
七、参照文献
[1] 康华光.模仿电子技术基本(第五版)[M].北京:高等教诲出版社,
[2] 童诗白,华成英,模仿电子技术基本(第三版).高等教诲出版社,
展开阅读全文