学号××××××××《微型计算机原理与接口技术》课程设计(2008级本科)题目:简易计算器系统设计系(部)院:××××××××××专业:电气工程及其自动化作者姓名:×××××××指导教师:××职称:××完成日期:××年×月×日课程设计任务书学生姓名×××学号××××专业方向电气工程及其自动化班级××××题目名称简易计算器系统设计一、设计内容及技术要求:设计一个可以进行十进制数四则运算的计算器;1.用按键输入数据;2.能够完成加减乘除运算;3.具有清零和复位功能;4.具有连续运算功能;二、课程设计说明书撰写要求:1.选用8086/8088CPU和适当的储存储器芯片、接口芯片完成相应的功能。2.用汇编语言编写程序实现应用程序的功能,并添加适当注释。3.设计子程序及源程序。4.给出程序设计思路、画出各程序适当的流程图。5.给出所有程序清单并加上必要注释。6.完成设计说明书(包括封面、目录、设计任务书、设计思路、硬件设计图、程序流程框图、程序清单、所用器件型号、总结体会、参考文献等)。三、设计进度第一周星期一上午讨论论文题目星期一下午查资料星期二至星期五查找分析资料,确定各程序模块的功能第二周星期一至星期二完成硬件设计,软件流程图及软件设计星期三至星期四完成设计,进行编程,调试,画图星期五答辩指导老师签字:目录一、设计目的................................................................................................................1二、设计任务与要求....................................................................................................1三、总体方案论证........................................................................................................13.1方案1.................................................................................................................13.1.18255A与键盘接口.....................................................................................23.1.28255A与LED数码管接口........................................................................53.2方案2.................................................................................................................83.2.1使用设备......................................................................................................83.2.2参数定义.....................................................................................................83.2.3使用方法......................................................................................................8四、硬件设计................................................................................................................9五、软件设计................................................................................................................95.1程序设计思路....................................................................................................95.2程序中的关键技术..........................................................................................10六、流程图设计..........................................................................................................11七、程序调试运行......................................................................................................137.1程序编写...........................................................................................................137.2上机编译与调试..............................................................................................137.3运行结果..........................................................................................................14八、总结......................................................................................................................16参考文献......................................................................................................................17微机原理与接口技术课程设计成绩评定表..............................................................241789/456*123—0=C+图1模拟计算器一、设计目的1、进一步加深对微机系统的理解和认识,提高微机系统的应用水平。2、进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程序调试方法。3、初步加强自己的科学研究方法训练和实践锻练,增强分析问题和解决问题的能力,了解微机原理和接口技术的新发展。二、设计任务与要求1、可以进行十进制数四则运算。用按键输入数据;具有清零和复位功能;具有连续运算功能。2、在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。学会掌握和使用各种已有的技术资料,不要盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。三、总体方案论证根据本次设计的设计目的及设计要求,可有下列两种方案:3.1方案1模拟简易计算器主要由键盘输入和LED数码管显示两部分组成,其界面如图1所示:2要设计一个模拟计算器,要用到可编程并行I/O接口芯片8255A,主要要解决8255A与键盘接口和8255A与LED数码管接口的问题。3.1.18255A与键盘接口键盘是计算器的输入设备,通过键盘把数据和操作命令输入到计算器,实现人机对话。目前使用的键盘分为编码键盘和非编码键盘。编码键盘带有必要的硬件电路,能自动提供按键的ASCⅡ编码,并能将数据保持到新键按下为止,还有消除抖动和防止多键、串键等保护装置。编码键盘软件简短,它根据编码就能识别是什么键按下,但硬件电路复杂,价格较贵。非编码键盘仅仅是按行、列排列起来的矩阵开关,其他的工作如识别键、提供代码、去抖动等由软件来解决。为了识别键盘上的闭合键,通常可以采用两种方式:行扫描法和行反转法。(1)行扫描法行扫描法识别按键的原理如下:首先判别是否有键按下。将所有行线置成0电平,然后通过列线输入全部列值,如果读入的列值全是1,则说明没有任何一个键按下;反之,如果读入的列值不全是1,着说明有键按下。也就是说,在键盘识别的开始先进行全扫描,若有键按下,则必须判别是哪个按键被操作。第二步确定哪个键被按下。一旦发现有键按下,就转入采用逐行扫描的办法来确定是那一个键被按下。先扫描第一行,即使它输出0电平,其余的行线为高电平1,然后读入列值。如果读入的列值中有一位为低电平0,则说明在此行的一个行、列交叉处有键被按下。如果读入的列值全是1,说明这一行所有按键都未被按下。接着扫描第二行。依次类推,逐行扫描,直到扫完全部的行线为止。若在扫描的过程中,发现非全1的列值,就能找出被按下的键。(2)行反转法行反转法识别闭和键时,要将行线接一个并行口,先让它工作在输出方式下;将列线也接一个并行口,先让它工作在输入方式下。程序使CPU通过输出端口,向各行线上全部送低电平0,然后读入列线的值(列值),如果此时有某一键被按下,则必定会使某一列线为0,输入的列值其中某一位为0。然后,程序在对两个并行端口进行方式设置,使行线工作在输入方式,列线工作在输出方式。利用输出指令,使列线全部输出为0值。再从行线输入行线值(行值)。行值中闭3合键所对应的位必然为底电平0。利用这种反转法,可得到一对行值和列值,每一个按键唯一对应一组行值和列值,行值和列值组合起来可以形成一个按键的识别码。(3)在扫描键盘的过程中,应注意解决以下问题:①键抖动:当用手按下一个键时,往往会出现按键在闭合和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况,这就是抖动。这种抖动经常发生在键被按下或抬起的瞬间,一般持续几毫秒到几十毫秒,随键的结构不同而不同。在扫描键盘过程中,必须想办法消除键抖动,否则会引起错误。消除键抖动可以用硬件电路来实现,它利用R—S触发器来锁定按键状态,以消除按键的影响。简单的方法是利用软件延时来消除键的抖动。也就是说,一旦发现有键按下,就延时20ms以后再去检测按键的状态,这样就避开了键发生抖动的那一段时间,再读按键状态,数据可靠。②重键:重键是指一个以上的按键同时按下而产生的不确定或错误问题。出现重键时,读取的键值必然出现有一个以上的0。于是就产生了到底是否给予识别哪一键的问题。解决重键可采取的方法有:一是无效处理,当发现有一个以上按键同时按下时,认为此次按键输入无效。二是等待释放,将最后释放的按键作为有效键处理。三是硬件封锁,当发现有一按键按下时,硬件电路即刻封锁其他按键的输入直到该键处理完毕。③应防止按一次键而产生多次处理