简易计算机系统设计文档格式.docx
《简易计算机系统设计文档格式.docx》由会员分享,可在线阅读,更多相关《简易计算机系统设计文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
具有清零和复位功能;
具有连续运算功能。
2、在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。
学会掌握和使用各种已有的技术资料,不要盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。
要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。
设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。
二、设计思路
根据本次设计的设计目的及设计要求,可有下列两种方案:
1.方案1
模拟简易计算器主要由键盘输入和LED数码管显示两部分组成,其界面如图1所示:
要设计一个模拟计算器,要用到可编程并行I/O接口芯片8255A,主要要解决8255A与键盘接口和8255A与LED数码管接口的问题。
1.18255A与键盘接口
键盘是计算器的输入设备,通过键盘把数据和操作命令输入到计算器,实现人机对话。
目前使用的键盘分为编码键盘和非编码键盘。
编码键盘带有必要的硬件电路,能自动提供按键的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.28255A与LED数码管接口
发光二级管数码显示器简称为LED(LightEmittingDiode)数码显示器,它由七段发光二级管组成。
这种显示器价格低廉、体积小、功耗低,而可靠性有很好,因此,从单板微型机、袖珍计算机到许多微型机控制系统及数字化仪器都用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编码表
显示数字
编码
共阴极
共阳极
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
98H
88H
83H
C6H
A1H
86H
8EH
要实现计算器的显示功能,需要用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软件及Office2003软件的计算机一台。
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所示