E5机设计.docx
《E5机设计.docx》由会员分享,可在线阅读,更多相关《E5机设计.docx(10页珍藏版)》请在冰豆网上搜索。
E5机设计
微机原理课程设计
学生姓名:
学号:
学生姓名:
学号:
学生姓名:
学号:
学生姓名:
学号:
学院:
信息与通信工程学院
专业:
测控技术与仪器
题目:
I/O接口卡设计
指导教师:
I/O接口卡设计
一.设计内容:
设计一块I/O卡,该卡具有3个8位I/O口(A,B,C口),利用该I/O卡控制一个四位LED显示器,该卡插在PC机的IBM—PC扩展总线插槽上(ISA),选用芯片8255接口芯片。
二.设计要求:
a)画出电路原理图。
b)说明工作原理。
c)编写利用该接口卡对键盘上键入的数字进行显示程序。
三.主要元件:
1.8255简介RESET:
复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:
片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。
RD:
读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:
写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写入8255。
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:
端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:
端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:
端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输或状态信号输入端口。
A1、A0:
端口地址总线,8255中有端口A、B、C和一个内部控制字寄存器,共4个端口,由A0、A1输入地址信号来寻址
2.ISA总线简介:
ISA总线是在早期IBMPC/XT总线基础上发展起来的,IBMPC/XT总线具有62条引线,分为A、B两面,其中包括20位地址总线、8位数据总线,4个DMA通道的联络信号和6个中断请求输入端,还有存储器读写信号、I/O读写信号、时钟信号、地址锁存信号、电源和地等众多信号。
ISA总线也称为AT总线,产生于二十世纪八十年代初,最初是为16位的AT系统设计的。
当前,微型机系统中已经不再采用单一的ISA总线,但是,为了和大量的ISA适配卡兼容,所以,即使以Pentium为CPU的当前最先进的微型机系统中,也仍然通过“桥”来扩展出ISA总线。
ISA有主槽和附加槽组成,每个槽都有正反两面插脚。
主槽有A1~A31、B1~B31、共62脚,这就是IBMPC/XT系统中的62芯总线槽;附加槽有C1~C18、D1~D18、共36脚。
两个槽共98脚。
A面和C面主要连接数据线和地址线,B面和D面则主要连接其他信号,包括+12V、+5V电源、地、中断输入线和DMA信号线等各种信号。
这种设计时数据线和地址线尽量和其他信号分开,减少干扰。
四、设计思路:
I/O卡直接用来插入微机系统的扩展槽中,8255芯片是接口卡设计中的主芯片,将A~A经过译码作为8255的片选信号,而和分别作为8255的读写信号。
四位的LED显示器连接成共阴极,将8255的A端口的8个引脚经过驱动器与LED显示器的a~dp相连,用8255的C端口的低四位来控制选择那个显示器亮。
首先由I/O卡的RESET将8255芯片复位,由微机系统的扩展槽中20根地址线来决定8255片选信号是否选通,由其工作原理图可知A端口地址60H,B端口地址61H,C端口地址62H,控制口地址63H。
由于是I/O防止地址重叠,从而将16根地址线全部作为译码器的输入,唯一确定I/O卡的地址。
经MS—DOS功能调用从键盘输入一串字符,(调用OAH号功能,其入口参数为DS:
DX,在DX第一个单元存放输入字符的最大允许值,第二个单元存放是实际输入字符的个数,接下来的单元存放输入的字符串),不管输入多少个数,始终只显示最后输入的四个数。
通过软件设计将由键盘输入的四个ASCII码数转换成相应的BCD码,取个位数,将此BCD码转换成字形码,在将字形码送入到8255的A端口,而将0eH送入C端口,用来控制哪一个显示器亮,并调用10ms延迟程序。
依此类推,取十位,百位,千位进行相同的操作,只是送C端口的数据不同,依次为0dH,0bH,07H。
将键盘输入的数显示完以后,重新开始检查键盘输入的数字,进入新的一轮显示,周而复始。
1.硬件设计:
2.程序:
.程序流程图:
系统初始化
8255初始化
读字符
是否为数字N
Y
转换为BCD码
取个位数
转化为字形码
字形码送A口
C口←0EH
CALLDELAY
取十位数
转化为字形码
字形码送A口
C口←0DH
CALLDELAY
取百位数
转化为字形码
字形码送A口
C口←0BH
CALLDELAY
取千位数
转化为字形码
字形码送A口
C口←07H
CALLDELAY
8255端口地址:
信号线
寄存器
编址
A口
60H
IOY3
B口
61H
C口
62H
控制寄存器
63H
8255作为一个可编程器件,其绝大部分功能需要程序的支持,本设计亦不例外。
要对8255编程首先了解它的控制字和工作方式。
根据题目要求A端口作为输出端口,B端口不使用,C端口作为输出端口。
本设计A,C端口工作在方式0下即基本输入输出方式既可满足要求,因此,控制字可为1000X0X0,其中X可为0也可为1,由于B接口没有连线,因此PB工作方式对本设计没有影响,因此我们可设控制字为:
:
10000000用十六进制表示为80H,假设在该系统中8255的各端口地址为:
A:
60HB:
61HC:
62H控制口:
63H则相应的汇编程序为:
DATASEGMENT
DISP2DB100DUP(?
)
DISP3DB"pleaseinputchar"
DATAENDS
STACKSEGMENT
TOPEQULENGTHSTA
DW64DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX;设数据段寄存器的值
MOVAX,STACK
MOVSS,AX;设堆栈段寄存器的值
MOVDX,63H
MOVAL,80H
OUTDX,AL;写入模式字
NEXT:
MOVDI,OFFSETDISP3
MOVAH,09H;显示字符串功能
INT21H;读入路径名
MOVDX,OFFSETDISP2
MOVAH,0AH;从键盘读入字符功能号
INT21H
TESTDX,10H;检查输入数字否
JZNEXT
TESTDX,20H
JZNEXT
TESTDX,40H
JNZNEXT;不为数字则继续取字符
CMPDX,30H
JCNEXT
CMPDX,39H
JNCNEXT
XORDI,DI
MOVSI,DX
MOVAL,[SI];取字符
ANDAL,0FH
MOV[DI],AL
INCSI
MOVAL,[SI]
ANDAL,0FH
MOV[DI+1],AL
INCSI
MOVAL,[SI]
ANDAL,0FH
MOV[DI+2],AL
INCSI
MOVAL,[SI]
ANDAL,0FH
MOV[DI+3],AL
NEXT2:
MOVAL,[DI+3];取要显示的数字
MOVBX,OFFSETLEDADD;取显示代码表首址
XLAT;将数字转换成显示代码
MOV60H,AL;将显示代码送入A口
MOVDX,62H
MOVDX,0EH;将01H送入C口
CALLDELAY
MOVAL,[DI+2]
MOVBX,OFFSETLEDADD
XLAT
MOV60H,AL
MOVDX,62H
MOVDX,0DH
CALLDELAY
MOVAL,[DI+1]
MOVBX,OFFSETLEDADD
XLAT
MOV60H,AL
MOVDX,62H
MOVDX,0BH
CALLDELAY
MOVAL,[DI]
MOVBX,OFFSETLEDADD
XLAT
MOV60H,AL
MOVDX,62H
MOVDX,07H
CALLDELAY
JMPNEXT
DELAYMOVCX,0500H
MOVDX,0500H
P1:
DECDX
JNZP1
P2:
DECCX
JNZP2
RET
LEDADD:
DB3FH
DB06H
DB5BH
DB4FH
DB66H
DB6DH
DB7DH
DB07H
DB7FH
DB6FH
CODEENDS
END
五、设计心得:
通过本次课程设计,使我们对8255芯片有了更深刻的认识与了解,并对知识间的联系有了更好的体会,同时团队合作意识得到了更好的加强,对以后的成长有很大的帮助。
我们很感谢学校给我们这样的机会,还有老师对我们辛勤的指导。
六、参考文献:
[1]冯博琴等,微型计算机原理与接口技术.北京:
清华大学出版社,2007
[2]李顺增等,微机原理及接口技术.北京:
机械工业出版社,2005
[3]赵慧等,Protel99SE原理图与PCB及仿真.北京:
机械工业出版社,2004
[4]韩焱等,数字电子技术基础.北京:
电子工艺出版社,2009