《微型计算机原理与接口技术简易计算器系统设计(共27页).doc》由会员分享,可在线阅读,更多相关《微型计算机原理与接口技术简易计算器系统设计(共27页).doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上学号 微型计算机原理与接口技术课 程 设 计( 2008级本科)题 目: 简易计算器系统设计 系(部)院: 专 业: 电气工程及其自动化 作者姓名: 指导教师: 职称: 完成日期: 年 月 日课程设计任务书学生姓名学号专业方向电气工程及其自动化班级题目名称简易计算器系统设计一、 设计内容及技术要求:设计一个可以进行十进制数四则运算的计算器;1.用按键输入数据;2.能够完成加减乘除运算;3.具有清零和复位功能;4.具有连续运算功能;二、课程设计说明书撰写要求:1.选用8086/8088CPU和适当的储存储器芯片、接口芯片完成相应的功能。 2.用汇编语言编写程序实现应用程
2、序的功能,并添加适当注释。3.设计子程序及源程序。4.给出程序设计思路、画出各程序适当的流程图。5.给出所有程序清单并加上必要注释。6.完成设计说明书(包括封面、目录、设计任务书、设计思路、硬件设计图、程序流程框图、程序清单、所用器件型号、总结体会、参考文献等)。三、设计进度第一周星期一上午 讨论论文题目星期一下午 查资料星期二至星期五 查找分析资料,确定各程序模块的功能第二周星期一至星期二 完成硬件设计,软件流程图及软件设计星期三至星期四 完成设计,进行编程,调试,画图星期五 答辩 指导老师签字: 目录专心-专注-专业一、设计目的1、进一步加深对微机系统的理解和认识,提高微机系统的应用水平。
3、2、进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程序调试方法。3、初步加强自己的科学研究方法训练和实践锻练,增强分析问题和解决问题的能力,了解微机原理和接口技术的新发展。 二、设计任务与要求1、可以进行十进制数四则运算。用按键输入数据;具有清零和复位功能;具有连续运算功能。2、在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。学会掌握和使用各种已有的技术资料,不要盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。要在老师的指导下制定好自己各环节的详细设计进程计划,
4、按给定的时间计划保质保量的完成个阶段的设计任务。设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。三、总体方案论证根据本次设计的设计目的及设计要求,可有下列两种方案:3.1 方案1 789/456*1230=C+图1模拟计算器模拟简易计算器主要由键盘输入和LED数码管显示两部分组成,其界面如图1所示:要设计一个模拟计算器,要用到可编程并行I/O接口芯片8255A,主要要解决8255A与键盘接口和8255A与LED数码管接口的问题。3.1.1 8255A与键盘接口键盘是计算器的输入设备,通过键盘把数据和
5、操作命令输入到计算器,实现人机对话。目前使用的键盘分为编码键盘和非编码键盘。编码键盘带有必要的硬件电路,能自动提供按键的ASC编码,并能将数据保持到新键按下为止,还有消除抖动和防止多键、串键等保护装置。编码键盘软件简短,它根据编码就能识别是什么键按下,但硬件电路复杂,价格较贵。 非编码键盘仅仅是按行、列排列起来的矩阵开关,其他的工作如识别键、提供代码、去抖动等由软件来解决。为了识别键盘上的闭合键,通常可以采用两种方式:行扫描法和行反转法。(1)行扫描法行扫描法识别按键的原理如下:首先判别是否有键按下。将所有行线置成0电平,然后通过列线输入全部列值,如果读入的列值全是1,则说明没有任何一个键按下
6、;反之,如果读入的列值不全是1,着说明有键按下。也就是说,在键盘识别的开始先进行全扫描,若有键按下,则必须判别是哪个按键被操作。第二步确定哪个键被按下。一旦发现有键按下,就转入采用逐行扫描的办法来确定是那一个键被按下。先扫描第一行,即使它输出0电平,其余的行线为高电平1,然后读入列值。如果读入的列值中有一位为低电平0,则说明在此行的一个行、列交叉处有键被按下。如果读入的列值全是1,说明这一行所有按键都未被按下。接着扫描第二行。依次类推,逐行扫描,直到扫完全部的行线为止。若在扫描的过程中,发现非全1的列值,就能找出被按下的键。 (2)行反转法行反转法识别闭和键时,要将行线接一个并行口,先让它工作
7、在输出方式下;将列线也接一个并行口,先让它工作在输入方式下。程序使CPU通过输出端口,向各行线上全部送低电平0,然后读入列线的值(列值),如果此时有某一键被按下,则必定会使某一列线为0,输入的列值其中某一位为0。然后,程序在对两个并行端口进行方式设置,使行线工作在输入方式,列线工作在输出方式。利用输出指令,使列线全部输出为0 值。再从行线输入行线值(行值)。行值中闭合键所对应的位必然为底电平0。利用这种反转法,可得到一对行值和列值,每一个按键唯一对应一组行值和列值,行值和列值组合起来可以形成一个按键的识别码。(3)在扫描键盘的过程中,应注意解决以下问题:键抖动:当用手按下一个键时,往往会出现按
8、键在闭合和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况,这就是抖动。这种抖动经常发生在键被按下或抬起的瞬间,一般持续几毫秒到几十毫秒,随键的结构不同而不同。在扫描键盘过程中,必须想办法消除键抖动,否则会引起错误。消除键抖动可以用硬件电路来实现,它利用RS触发器来锁定按键状态,以消除按键的影响。简单的方法是利用软件延时来消除键的抖动。也就是说,一旦发现有键按下,就延时20ms以后再去检测按键的状态,这样就避开了键发生抖动的那一段时间,再读按键状态,数据可靠。重键:重键是指一个以上的按键同时按下而产生的不确定或错误问题。出现重键时,读取的键值必然出现有一个以上的0。
9、于是就产生了到底是否给予识别哪一键的问题。解决重键可采取的方法有:一是无效处理,当发现有一个以上按键同时按下时,认为此次按键输入无效。二是等待释放,将最后释放的按键作为有效键处理。三是硬件封锁,当发现有一按键按下时,硬件电路即刻封锁其他按键的输入直到该键处理完毕。应防止按一次键而产生多次处理的情况:这种情况的发生是由于键扫描速度和键处理速度较快,当某一个按下的按键还未及时释放时,键扫描程序和键处理程序已执行了多遍,这样由于程序执行和按键动作不同步,而造成一次键有多个键输入的错误状态。为了避免发生这种情况,必须保证按一次键,CPU只对该键作一次键处理,为此,在键扫描程序中不仅要检测是否有键按下,
10、在有键按下的情况下,作一次键处理;而且在键处理完毕后,还应检测按下的键是否释放,只有当按下的键释放以后,程序才继续往下执行。这样每按一次键,只有一次键处理,使两者达到了同步。0123456789+*/=C+5VPB0PB1PB2PB3PB4PB5PB6PB7PC6PC7图2键盘的结构8*2键盘是一种行列式键盘,如图2所示图中有8行2列,8根行线与PB口相连,2根列线与PC口的PC6、PC7相连按键设置在行、列交交点处(数字或字符为其键号),行、列线分别连接到按键开关的两端。当列线通过上拉电阻接+5V时,接被钳位在高电平行列式键盘电路状态。键盘中有无按键按下是由列线送入全扫描字、列线读入行线状态
11、来判断的。这就是:被行线所有I/O线均置成低电平,然后读入列线电平状态。如果有键按下,总会有一根列线电平被拉至低电平,从而时列线输入不全为1。 键盘中哪一个键是由行线逐行置成低电平后,检查列线输入状态予以确定的。其方法是:依次给行线送低电平,然后查所有行线状态,如果全为1,则所按下之键必在此行。而且与0电平行线相交的交点上的那个键。键盘的工作方式采用编程扫描的工作方式,即通过调用子程序来响应键输入的要求,在按键扫描子程序中完成下述功能:判断键盘上有无键按下。其方法是先使PB7PB00,然后读PC6、PC7的状态,若为全1则键盘中无键按下;若不全为1,则说明键盘中有键按下。去除按键的机械抖动影响
12、。可作这样的处理:当判断有键按下后,软件延时一段时间后再判断键盘状态,如果仍为键按下状态,则认为有一个确定的键按下,否则按按键抖动处理。求按下键的键值及键号。键盘上的每一个键都对应一个键值。键盘中键号排列没有规律,不能通过对键值直接运算得到键号。因此必须先判断按下键是使PC70还是PC6=0,然后再查为零的列线上键按时其8位键值中是否有一位为零,若为零则可得到键值。求按下键值及键号的目的是使程序转到相应的地址去完成该键的操作。一般,对数字键就是直接将该号送到显示缓冲区进行显示,对功能键则必须先找到完成该功能键处理子程序的入口地址,并转去执行该键的命令。因此,当键号求到后,还必须找到功能键处理程
13、序入口。 为保证键闭合一次CPU仅进行一次键功能操作。程序中需要等待键释放以后再将键号送累加器AH。3.1.2 8255A与LED数码管接口发光二级管数码显示器简称为LED(Light Emitting Diode)数码显示器,它由七段发光二级管组成。这种显示器价格低廉、体积小、功耗低,而可靠性有很好,因此,从单板微型机、袖珍计算机到许多微型机控制系统及数字化仪器都用LED作为输出显示。LED数码管的主要部分是七段发光二极管,如图3所示。这七段发光二极管分别称为a、b、c、d、e、f、g,有的产品还附带有一个小数点h,通过7个发光段的不同组合,可以显示09和AF共16个字母数字或其它异形字符。
14、图3数码管外型abfgecdhLED数码管有共阳极、共阴极两种结构,如图4所示。如为共阳极结构,则共用的阳极应接高电平,各段则输入低电平,方为有效。如为共阴极结构,共用的阴极必须接低电平,而各段处于高电平时便发光。阳极abcdefgh阴极abcdefgh+5V共阳极结构 共阴极结构图4表1表示了共阴极与共阳极结构字符0F的编码表。编码的低位为a,高位为g。表1:七段LED编码表显示数字编码共阴极共阳极0123456789ABCDEF.3FH06H5BH4FH66H6DH7DH07H7FH67H77H7CH39H5EH79H71H80HC0HF9HA4HB0H99H92H82HF8H80H98H
15、88H83HC6HA1H86H8EH7FH要实现计算器的显示功能,需要用6位七段LED数码管来实现多位显示。在这种方案中,硬件上用公共的驱动电路来驱动各数码管;软件上用扫描方法实现数字显示。由于要显示6位十进制数,因此采用6位七段LED动态显示电路,需要一个8位I/O口和一个6位I/O口,其中8位I/O控制段选码,6位I/O控制位选。进行6位字符显示时,采用扫描显示方式,即在每一瞬间只使某一位显示相应字符,在此瞬间,段选控制I/O输出相应字符段选码,位选控制I/O口在该显示位送入选通电平(共阴极送低电平,共阳极送高电平),以保证该位显示相应字符,如此轮流,使每位显示该位应显示字符,并保持延迟一
16、段时间(15ms),以造成视觉暂留效果,不断循环送出相应的段选码、位选码,就可以获得视觉稳定的显示状态。只要CPU通过段控制端口送出段代码,然后通过位控制端口送出位代码,指定的数码管便显示相应的数字。如果CPU顺序地输出段码和位码,依次让每个数码管显示数字,并不断地重复,当重复频率达到一定程度,利用人眼的视觉暂留特性,从数码管上便可见到相当稳定的数字显示。图5是一个由8255A控制的6位共阴极显示系统,A口输出LED字符7段代码信息,C口输出6个LED位选信号,由程序控制依次使Q0Q5低电平轮流有效,使得LED0LED5轮流显示。PA078255APC05 驱动器驱动器LED0LED1LED2
17、LED3LED4LED5图5多位数码管显示电路示意图3.2 方案2 用汇编语言编写程序实现应用程序的功能,从而实现简易计算器汇编程序的设计与实现。3.2.1使用设备含有Windows汇编编译环境的MASM软件及Office 2003软件的计算机一台。3.2.2 参数定义在本程序中,定义了变量B1B8用来显示提示信息的8个参数。定义了变量X和Y用来保存输入的操作数。定义了变量C用来保存除法运算中的余数。定义了变量D用来保存输入的操作符。定义了变量E等于10。3.2.3使用方法在masm环境下运行本程序,按提示依次输入操作数、操作符,回车经运算后便可得到运算结果,在屏幕上显示出来;在提示下按下“g
18、”或是回车,则继续进行运算或是退出程序。四、硬件设计8255A与键盘、显示器的接口见下图6,键盘的16个按键组成82矩阵,其中8根作为8255A的输出线与PA7-PA0连接,2根作为8255A的输入线与PC7、PC6连接。PB0-PB7向显示器提供段码,PC0、PC1、PC2给出位码之后经74LS138译码之后选中6个数码管中的一个。PA0PA1PA6PA7PC 0PC1PC2PB 0PB1PB 6PB7021893+465*/7=CPC6PC7ABCabghA1A2A7A8a1a2CPU808674LS138图6 8255A与键盘、显示器的连接五、软件设计5.1 程序设计思路经研究分析,本程
19、序设计思路如图7所示:输入操作数,操作符判断是哪种运算开始运算后,十六进制转化为十进制输出结果结束 图 7 程序设计思路图5.2 程序中的关键技术INT 21H 指令01H号功能:等待从标准设备输入一个字符,将该字符的ASCII码送给AL,并在标准输出设备上显示该字符。入口参数:无。出口参数:AL的内容为输入字符的ASCII码。02H号功能:显示器输出,用文本坐标下设置光标位置。入口参数:DL的内容为输出字符的ASCII码。出口参数:无09H号功能:在标准输出设备上显示某个字符串。入口参数:DX的内容为要显示的字符串的首地址。出口参数:无从设计方案的可行性及经济技术指标等方面综合考虑,方案二更
20、合理,具有可行性且运算方便快捷。故选择方案二。六、流程图设计输入第一个操作数,从DAT_1开始,与0DH(回车)相比,若相同则跳转到DAT_2除以10,保存余数;否则乘以10保存,等待接收下一个数字。部分程序流程如图8所示DAT_1开始输入数字是否为回车?MUL E保存在AX和DI跳到DAT_2DIV E保存在A中NY图 8 输入数据流程图简易计算器程序总流程图如图9。图 9 输入数据流程总图七、程序调试运行7.1程序编写第一步:对要实现的功能进行大体分析,画出程序的总流程图。第二步:将这些功能的实现分别编写程序来实现。第三步;编写代码,上机调试和运行程序。7.2 上机编译与调试第一步:编辑源
21、程序:即建立.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:_程序运行结
22、束后,返回DOS.如果运算结果正确且程序已把结果直接显示在屏幕上,那么程序运行结束时结果也就得到了。如果程序不显示结果,我们如何知道程序是否正确呢?这时,就要使用TD.EXE调试工具来查看运行结果。此外,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时也要使用TD.EXE。7.3 运行结果在masm环境下运行本程序,按提示依次输入操作数、操作符,回车经运算后便可得到运算结果,在屏幕上显示出来;在提示下按下“g”,则继续进行运算或是退出程序。结果图12和图13所示:图 12 加法和减法运行结果图 13 乘法和除法运行结果本课程设计从汇编语言程序的编写及应用出发,设计了一个简易计算器
23、系统,本设计能够完成5位数以内的加减乘除四则运算,并且能够显示除法所得余数,同时具有清零和复位功能,达到了连续运算的效果,可以解决日常生活中一些简单四则运算,通过两种方案的比较最终确定了可行性较高的方案2。同时,此方案也具有其优缺点;优点:设计结构比较简单,成本比较低,能够满足生活中的一般需求。缺点:由于结构比较简单(只能显示5位数据),因此不能处理位数大于5位数的数据,运算速度和能力不是很高。八、总结通过本次微机原理及应用课程设计,收获颇多。首先是对汇编语言知识加深了认识,在课程设计中参考一些资料时,发现大量用汇编语言编写的实例或者用8086和其他芯片组合成的电路解决大量问题,涉及各个方面,
24、使我认识到微机应用的一些方面,同时通过设计巩固了微机原理与接口技术这门课的知识,在平时只是纸上谈兵,只是学习书本上的知识,没有真正的运用过,就是在平时上机实验时,也就是运用一、两个知识点,而且没有考察真正的实际能力。而在课程设计中就不同了,必须运用大量的知识,而且要使他们综合运用,这就不同于一般简单的编程了。其次,通过这短短一周的实践,我感觉到自己在课本上学到的理论知识和实践仍有一定的差距。有的知识,自己感觉已经掌握得差不多了,但是实际操作起来就有问题出现了,也许这就是要我们搞课程设计的目的吧。再次,在课程设计中拓宽了我的视野,通过查找程序和参阅书籍,使我认识到书本上的关于微机原理的知识只是我
25、们学习微机的入门知识准备而已,要想应用到实际设计中还必须深入学习,这就无形中我们的知识从拓宽了许多,这些都是课程设计的一些功劳。最后,在课程设计中感到个人的力量是不及群体的力量的,我们几个人分工合作,做事的效率高了很多。虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。同时通过“讨论”也知道了各自的想法,这给自己和别人都可以提示。一周课程设计也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。个人力量有限,集体力量才是无穷!同时也很感谢张静老师的细心辅导,让我得以完成本次设计,谢谢。参考文献1 陆红伟. 微机原理实验与课程设计指导书M. 中国电力出版社.2006.2
26、 顾滨. 8086微型计算机组成、原理及接口M. 机械工业出版社. 2001.3 吕淑萍. 微型计算机原理及应用M. 哈尔滨工程大学出版社. 20044 戴梅萼. 微型计算机技术及应用M. 清华大学出版社. 20055 冯博琴.微型计算机原理与接口技术M .清华大学出版社.20076 赵欢.微机原理应用及实训M.北京:高等教育出版社.2003.7 贾金玲.微型计算机原理与接口技术课程设计指导.重庆大学出版社.2002附录源程序STACK SEGMENT DW 512 DUP(0)STACK ENDSDATA SEGMENTB1 DB 0DH,0AH, The SIMPLE CALCULATOR
27、 $ B2 DB 0DH,0AH, PLEASE INPUT THE FIRST NUMBER: $ B3 DB 0DH,0AH, PLEASE INPUT THE SECOND NUMBER: $ B4 DB 0DH,0AH, PLEASE INPUT THE OPERATOR(+,-,*,/): $ B5 DB 0DH,0AH, JIE GUO SHI: $ B6 DB 0AH,0DH, YU SHU SHI: $ B7 DB 0DH,0AH, $B8 DB 0DH,0AH, please INPUT THE KEY (g) to CONTINUE $X DW 0 ;存放第一个操作数Y D
28、W 0 ;存放第二个操作数C DW 0 ;存放余数D DB 0 ;存放输入的操作符号E DW 10DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX S:MOV BX,0 MOV DI,0 MOV DX,0 LEA DX,B1 MOV AH,9 INT 21H LEA DX,B2 MOV AH,9 INT 21H ;输出提示信息DAT_1:MOV AX,0 MOV AH,1 INT 21H ;输入第一个操作数 CMP AL,0DH JE DAT_2 AND AL,0FH ;取AX的低四位 MOV AH,0
29、 ADD DI,AX MOV AX,DI MUL E MOV DI,AX JMP DAT_1 ;把数字字符转化为数字DAT_2:MOV AX,0 MOV AX,DI DIV E MOV X,AX MOV DI,0 MOV AX,0 LEA DX,B3 MOV AH,9 INT 21HDAT_3:MOV AH,1 INT 21H ;输入第二个操作数 CMP AL,0DH JE DAT_4 AND AL,0FH MOV AH,0 ADD DI,AX MOV AX,DI MUL E MOV DI,AX JMP DAT_3 ;将数字字符转化为数字DAT_4:MOV AX,0 MOV AX,DI DIV
30、 E MOV Y,AX MOV DI,0 MOV AX,0 DAT_5:LEA DX,B4 MOV AH,9 INT 21H MOV AH,1 ;输入操作符 INT 21H MOV D,AL CMP AL,+ JE ADD_1 CMP AL,- JE SBB_1 CMP AL,* JE MUL_1 CMP AL,/ JE DIV_1 JMP DAT_5ADD_1:MOV AX,0 ;加法运算 MOV AX,X ADD AX,Y MOV SI,AX ;si存放源操作数地址,这里存放ax的内容 JMP R SBB_1:MOV AX,0 ;减法运算 MOV AX,X SBB AX,Y MOV SI,
31、AX JMP R MUL_1:MOV AX,0 ;乘法运算 MOV AX,X MUL Y MOV SI,AX JMP R DIV_1:MOV AX,0 ;除法运算 MOV DX,0 MOV AX,X DIV Y MOV SI,AX ;字除法中商放进AX,余数放进dx MOV C,DX JMP R R: LEA DX,B5 MOV AH,9 INT 21H MOV CX,SP MOV AX,SI pp1:MOV DX,0 MOV BX,10 DIV BX PUSH DX ;将16进制数转化为10进制数 CMP AX,0 JNZ pp1 pp2: CMP SP,CX JE EXIT1 POP DX
32、 ADD DL,30H MOV AH,2 INT 21H JMP pp2 ;输出结果EXIT1:CMP D,4 JE LOPAENDS LEA DX,B6 MOV AH,9 INT 21H MOV AX,C MOV CX,SPpp3: MOV DX,0 MOV BX,10 DIV BX PUSH DX ;将16进制数转化为10进制数 CMP AX,0 JNZ pp3 pp4: CMP SP,CX JE LOPAENDS POP DX ADD DL,30H ;将字符转化为ASCII码 MOV AH,2 ;显示DL给定字符,且光标移到下一个字符位置 INT 21H JMP pp4LOPAENDS:
33、 LEA DX,B7 MOV AH,9 INT 21H LEA DX,B8 MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,g JNE EXIT2 JMP SEXIT2: MOV AH,4CH INT 21HCODE ENDS END START微机原理与接口技术课程设计成绩评定表姓 名学 号专业班级 电气工程及其自动化课程设计题目: 简易计算器系统设计课程设计答辩或质疑记录:成绩评定依据:评 定 项 目评 分 成 绩1.设计方案可行性及其选优(20分)2.设计过程及结果(40分)3.平时成绩(态度认真、遵守纪律)(10分)5.设计报告的规范性、参考文献充分(不少于5篇)(10分)6.答辩(20分)总 分最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字: 年 月 日