微型计算机原理与接口技术简易计算器系统设计(共27页).doc
《微型计算机原理与接口技术简易计算器系统设计(共27页).doc》由会员分享,可在线阅读,更多相关《微型计算机原理与接口技术简易计算器系统设计(共27页).doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微型计算机 原理 接口 技术 简易 计算器 系统 设计 27
限制150内