




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、成绩 Xxxxxxxxxxx课程设计说明书(论文)题 目 简易计算器系统设计 课 程 名 称 微型计算机原理与接口技术 二 级 学 院 xxxxxxxxxx 专 业 xxxxxxxxxx 班 级 xxxxxxxxxxxxxxxxxxxxxx学 生 姓 名 xxxxxxxxxxxx 设 计 地 点 xxxxxxx 指 导 教 师 xxxxxxxxxxx 设计起止时间: 2016年6 月13日至2016 年6 月24 日 目录 一、设计任务与要求3二、设计思路3三、硬件电路设计10四、软件编程设计11五、仿真与调试15六、结论与心得18七、参考文献18简易计算器系统设计一、设计任务与要求1、可以进
2、行十进制数四则运算。用按键输入数据;具有清零和复位功能;具有连续运算功能。2、在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。学会掌握和使用各种已有的技术资料,不要盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。二、设计思路根据本次设计的设计目的及设计要求,可有下列两种方案:1.
3、 方案1 模拟简易计算器主要由键盘输入和LED数码管显示两部分组成,其界面如图1所示:要设计一个模拟计算器,要用到可编程并行I/O接口芯片8255A,主要要解决8255A与键盘接口和8255A与LED数码管接口的问题。1.1 8255A与键盘接口键盘是计算器的输入设备,通过键盘把数据和操作命令输入到计算器,实现人机对话。目前使用的键盘分为编码键盘和非编码键盘。编码键盘带有必要的硬件电路,能自动提供按键的ASC编码,并能将数据保持到新键按下为止,还有消除抖动和防止多键、串键等保护装置。编码键盘软件简短,它根据编码就能识别是什么键按下,但硬件电路复杂,价格较贵。 非编码键盘仅仅是按行、列排列起来的
4、矩阵开关,其他的工作如识别键、提供代码、去抖动等由软件来解决。为了识别键盘上的闭合键,通常可以采用两种方式:行扫描法和行反转法。(1)行扫描法行扫描法识别按键的原理如下:首先判别是否有键按下。将所有行线置成0电平,然后通过列线输入全部列值,如果读入的列值全是1,则说明没有任何一个键按下;反之,如果读入的列值不全是1,着说明有键按下。也就是说,在键盘识别的开始先进行全扫描,若有键按下,则必须判别是哪个按键被操作。第二步确定哪个键被按下。一旦发现有键按下,就转入采用逐行扫描的办法来确定是那一个键被按下。先扫描第一行,即使它输出0电平,其余的行线为高电平1,然后读入列值。如果读入的列值中有一位为低电
5、平0,则说明在此行的一个行、列交叉处有键被按下。如果读入的列值全是1,说明这一行所有按键都未被按下。接着扫描第二行。依次类推,逐行扫描,直到扫完全部的行线为止。若在扫描的过程中,发现非全1的列值,就能找出被按下的键。 (2)行反转法行反转法识别闭和键时,要将行线接一个并行口,先让它工作在输出方式下;将列线也接一个并行口,先让它工作在输入方式下。程序使CPU通过输出端口,向各行线上全部送低电平0,然后读入列线的值(列值),如果此时有某一键被按下,则必定会使某一列线为0,输入的列值其中某一位为0。然后,程序在对两个并行端口进行方式设置,使行线工作在输入方式,列线工作在输出方式。利用输出指令,使列线
6、全部输出为0 值。再从行线输入行线值(行值)。行值中闭合键所对应的位必然为底电平0。利用这种反转法,可得到一对行值和列值,每一个按键唯一对应一组行值和列值,行值和列值组合起来可以形成一个按键的识别码。(3)在扫描键盘的过程中,应注意解决以下问题:键抖动:当用手按下一个键时,往往会出现按键在闭合和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况,这就是抖动。这种抖动经常发生在键被按下或抬起的瞬间,一般持续几毫秒到几十毫秒,随键的结构不同而不同。在扫描键盘过程中,必须想办法消除键抖动,否则会引起错误。消除键抖动可以用硬件电路来实现,它利用RS触发器来锁定按键状态,以消除
7、按键的影响。简单的方法是利用软件延时来消除键的抖动。也就是说,一旦发现有键按下,就延时20ms以后再去检测按键的状态,这样就避开了键发生抖动的那一段时间,再读按键状态,数据可靠。重键:重键是指一个以上的按键同时按下而产生的不确定或错误问题。出现重键时,读取的键值必然出现有一个以上的0。于是就产生了到底是否给予识别哪一键的问题。解决重键可采取的方法有:一是无效处理,当发现有一个以上按键同时按下时,认为此次按键输入无效。二是等待释放,将最后释放的按键作为有效键处理。三是硬件封锁,当发现有一按键按下时,硬件电路即刻封锁其他按键的输入直到该键处理完毕。应防止按一次键而产生多次处理的情况:这种情况的发生
8、是由于键扫描速度和键处理速度较快,当某一个按下的按键还未及时释放时,键扫描程序和键处理程序已执行了多遍,这样由于程序执行和按键动作不同步,而造成一次键有多个键输入的错误状态。为了避免发生这种情况,必须保证按一次键,CPU只对该键作一次键处理,为此,在键扫描程序中不仅要检测是否有键按下,在有键按下的情况下,作一次键处理;而且在键处理完毕后,还应检测按下的键是否释放,只有当按下的键释放以后,程序才继续往下执行。这样每按一次键,只有一次键处理,使两者达到了同步。 8*2键盘是一种行列式键盘,如图2所示图中有8行2列,8根行线与PB口相连,2根列线与PC口的PC6、PC7相连按键设置在行、列交交点处(
9、数字或字符为其键号),行、列线分别连接到按键开关的两端。当列线通过上拉电阻接+5V时,接被钳位在高电平行列式键盘电路状态。键盘中有无按键按下是由列线送入全扫描字、列线读入行线状态来判断的。这就是:被行线所有I/O线均置成低电平,然后读入列线电平状态。如果有键按下,总会有一根列线电平被拉至低电平,从而时列线输入不全为1。 键盘中哪一个键是由行线逐行置成低电平后,检查列线输入状态予以确定的。其方法是:依次给行线送低电平,然后查所有行线状态,如果全为1,则所按下之键必在此行。而且与0电平行线相交的交点上的那个键。键盘的工作方式采用编程扫描的工作方式,即通过调用子程序来响应键输入的要求,在按键扫描子程
10、序中完成下述功能:判断键盘上有无键按下。其方法是先使PB7PB00,然后读PC6、PC7的状态,若为全1则键盘中无键按下;若不全为1,则说明键盘中有键按下。去除按键的机械抖动影响。可作这样的处理:当判断有键按下后,软件延时一段时间后再判断键盘状态,如果仍为键按下状态,则认为有一个确定的键按下,否则按按键抖动处理。求按下键的键值及键号。键盘上的每一个键都对应一个键值。键盘中键号排列没有规律,不能通过对键值直接运算得到键号。因此必须先判断按下键是使PC70还是PC6=0,然后再查为零的列线上键按时其8位键值中是否有一位为零,若为零则可得到键值。求按下键值及键号的目的是使程序转到相应的地址去完成该键
11、的操作。一般,对数字键就是直接将该号送到显示缓冲区进行显示,对功能键则必须先找到完成该功能键处理子程序的入口地址,并转去执行该键的命令。因此,当键号求到后,还必须找到功能键处理程序入口。 为保证键闭合一次CPU仅进行一次键功能操作。程序中需要等待键释放以后再将键号送累加器AH。1.2 8255A与LED数码管接口发光二级管数码显示器简称为LED(Light Emitting Diode)数码显示器,它由七段发光二级管组成。这种显示器价格低廉、体积小、功耗低,而可靠性有很好,因此,从单板微型机、袖珍计算机到许多微型机控制系统及数字化仪器都用LED作为输出显示。LED数码管的主要部分是七段发光二极
12、管,如图3所示。这七段发光二极管分别称为a、b、c、d、e、f、g,有的产品还附带有一个小数点h,通过7个发光段的不同组合,可以显示09和AF共16个字母数字或其它异形字符。 LED数码管有共阳极、共阴极两种结构,如图4所示。如为共阳极结构,则共用的阳极应接高电平,各段则输入低电平,方为有效。如为共阴极结构,共用的阴极必须接低电平,而各段处于高电平时便发光。表1表示了共阴极与共阳极结构字符0F的编码表。编码的低位为a,高位为g。表1:七段LED编码表显示数字编码共阴极共阳极0123456789ABCDEF.3FH06H5BH4FH66H6DH7DH07H7FH67H77H7CH39H5EH79
13、H71H80HC0HF9HA4HB0H99H92H82HF8H80H98H88H83HC6HA1H86H8EH7FH要实现计算器的显示功能,需要用6位七段LED数码管来实现多位显示。在这种方案中,硬件上用公共的驱动电路来驱动各数码管;软件上用扫描方法实现数字显示。由于要显示6位十进制数,因此采用6位七段LED动态显示电路,需要一个8位I/O口和一个6位I/O口,其中8位I/O控制段选码,6位I/O控制位选。进行6位字符显示时,采用扫描显示方式,即在每一瞬间只使某一位显示相应字符,在此瞬间,段选控制I/O输出相应字符段选码,位选控制I/O口在该显示位送入选通电平(共阴极送低电平,共阳极送高电平)
14、,以保证该位显示相应字符,如此轮流,使每位显示该位应显示字符,并保持延迟一段时间(15ms),以造成视觉暂留效果,不断循环送出相应的段选码、位选码,就可以获得视觉稳定的显示状态。只要CPU通过段控制端口送出段代码,然后通过位控制端口送出位代码,指定的数码管便显示相应的数字。如果CPU顺序地输出段码和位码,依次让每个数码管显示数字,并不断地重复,当重复频率达到一定程度,利用人眼的视觉暂留特性,从数码管上便可见到相当稳定的数字显示。图5是一个由8255A控制的6位共阴极显示系统,A口输出LED字符7段代码信息,C口输出6个LED位选信号,由程序控制依次使Q0Q5低电平轮流有效,使得LED0LED5
15、轮流显示。2. 方案2 用汇编语言编写程序实现应用程序的功能,从而实现简易计算器汇编程序的设计与实现。2.1 使用设备含有Windows汇编编译环境的MASM软件及Office 2003软件的计算机一台。2.2 参数定义在本程序中,定义了变量B1B8用来显示提示信息的8个参数。定义了变量X和Y用来保存输入的操作数。定义了变量C用来保存除法运算中的余数。定义了变量D用来保存输入的操作符。定义了变量E等于10。3.2.3使用方法在masm环境下运行本程序,按提示依次输入操作数、操作符,回车经运算后便可得到运算结果,在屏幕上显示出来;在提示下按下“g”或是回车,则继续进行运算或是退出程序。3、 硬件
16、电路设计8255A与键盘、显示器的接口见下图6,键盘的16个按键组成8×2矩阵,其中8根作为8255A的输出线与PA7-PA0连接,2根作为8255A的输入线与PC7、PC6连接。PB0-PB7向显示器提供段码,PC0、PC1、PC2给出位码之后经74LS138译码之后选中6个数码管中的一个。4、 软件编程设计1.流程图输入第一个操作数,从DAT_1开始,与0DH(回车)相比,若相同则跳转到DAT_2除以10,保存余数;否则乘以10保存,等待接收下一个数字。部分程序流程如图8所示图 8 输入数据流程图简易计算器程序总流程图如图9。图 9 输入数据流程总图2. 程序设计2.1 程序设计
17、思路经研究分析,本程序设计思路如图7所示:图 7 程序设计思路图2.2 程序中的关键技术INT 21H 指令01H号功能:等待从标准设备输入一个字符,将该字符的ASCII码送给AL,并在标准输出设备上显示该字符。入口参数:无。出口参数:AL的内容为输入字符的ASCII码。02H号功能:显示器输出,用文本坐标下设置光标位置。入口参数:DL的内容为输出字符的ASCII码。出口参数:无09H号功能:在标准输出设备上显示某个字符串。入口参数:DX的内容为要显示的字符串的首地址。出口参数:无从设计方案的可行性及经济技术指标等方面综合考虑,方案二更合理,具有可行性且运算方便快捷。故选择方案二。五 、仿真与
18、调试 1.程序编写第一步:对要实现的功能进行大体分析,画出程序的总流程图。第二步:将这些功能的实现分别编写程序来实现。第三步;编写代码,上机调试和运行程序。 2.上机编译与调试第一步:编辑源程序:即建立.ASM文件。第二步:汇编源程序。源文件建立后,要用汇编程序对源文件进行汇编,以便产生二进制的目标文件(.OBJ文件)。本程序用MASM.EXE编译界面如图10示。图 10 用MASM.EXE编译界面第三步;用LINK程序产生.EXE文件。汇编程序已产生出二进制的代码文件(.OBJ),但.OBJ文件并不是可执行文件,还必须使用(LINK)把.OBJ文件转换为可执行的.EXE文件。用LINK.EX
19、E连接为可执行文件界面如图11所示。图 11 用MASM.EXE编译界面第四步;程序的调试。建立KDW.EXE文件后,就可以直接在DOS下运行此程序,如下所示:C:KDW回车C:_程序运行结束后,返回DOS.如果运算结果正确且程序已把结果直接显示在屏幕上,那么程序运行结束时结果也就得到了。如果程序不显示结果,我们如何知道程序是否正确呢?这时,就要使用TD.EXE调试工具来查看运行结果。此外,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时也要使用TD.EXE。 3.运行结果在masm环境下运行本程序,按提示依次输入操作数、操作符,回车经运算后便可得到运算结果,在屏幕上显示出来;在提示下按下“g”,则继续进行运算或是退出程序。结果图12和图13所示:图 12 加法和减法运行结果图 13 乘法和除法运行结果本课程设计从汇编语言程序的编写及应用出发,设计了一个简易计算器系统,本设计能够完成5位数以内的加减乘除四则运算,并且能够显示除法所得余数,同时具有清零和复位功能,达到了连续运算的效果,可以解决日常生活中一些简单四则运算,通过两种方案的比较最终确定了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年院线经营合作协议书
- 2025年柔性树脂版合作协议书
- 农户农业机械购置与技术服务协议
- 2025年深孔钻项目合作计划书
- 行业资质荣誉证书复印件证明书(5篇)
- 小学教师节班会活动方案
- 个人收入及奖金津贴补助证明(8篇)
- 基础与地基设计试题及答案
- 电子交易市场入驻商家协议
- 人力资源管理市政学试题及答案
- 篮球教学《不同姿势的原地拍球》教案教学设计及反思
- 消防验收签到表
- 商业大厦10kv配电室增容改造工程施工方案
- 防溺水大家访记录表
- 人教版八年级下英语单词默写表格(整理打印)
- FMEA第五版(实例2)
- 量表开发与检验(课堂PPT)
- IABP知情同意书
- 炼铁厂鱼雷罐、铁水罐穿包紧急预案
- 涉密测绘成果保密检查情况记录表
- 《电路分析基础》试题及答案
评论
0/150
提交评论