计算机通讯系统设计.docx
《计算机通讯系统设计.docx》由会员分享,可在线阅读,更多相关《计算机通讯系统设计.docx(24页珍藏版)》请在冰点文库上搜索。
计算机通讯系统设计
学号:
课程设计
题目
计算机通讯系统设计
学院
自动化学院
专业
电气工程及其自动化
班级
姓名
指导教师
年
1
月
5
日
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
自动化学院
题目:
计算机通信系统设计
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.画出简要的硬件原理图,编写通信程序。
2.程序运行后,完成以下任务之一:
(1)实现两个PC机之间的并行通信;
(2)实现PC机和单片机之间的串行通信;(3)通过并行口控制打印机;(4)实现两个PC机之间的串行通信;
3.撰写课程设计说明书。
内容包括:
摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:
设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:
12月26日-----12月28日查阅资料及方案设计
12月29日-----1月2日编程
1月3日-----1月7日调试程序
1月8日-----1月9日撰写课程设计报告
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
摘要1
1.并行接口简介2
2.可编程并行接口芯片8255A2
2.1可编程接口的概念2
2.28255A的内部结构3
2.2.1并行输入/输出端口3
2.2.2A组和B组控制3
2.2.3读/写控制电路3
2.2.4数据总线缓冲器4
2.38255A的管脚4
2.3.1与外设连接的管脚4
2.3.2与CPU连接的管脚4
2.3.3电源线与地线5
2.48255A的工作方式及编程5
2.4.18255A的工作方式5
2.4.28255A的编程6
2.4.38255A的初始化7
3.74LS138译码器8
4.打印机并行标准接口信号8
5.并行打印机控制设计10
5.1硬件接线图10
5.2程序设计12
5.2.1程序流程图12
5.2.2源程序13
5.2.3程序调试及结果分析15
6.心得体会16
参考文献17
附录18
本科生课程设计成绩评定表19
摘要
打印机是微机系统中主要的硬拷贝输出设备,可以打印文字、数字和图形等,常用的打印机有针式打印机、喷墨打印机和激光打印机,常用的打印机接口类型有标准并行接口、串行USB接口等,除此外还发展了增强型并行接口、扩展型并行接口等。
本次课设采用的是并行接口,能够满足数据传输速度快、传输距离短等条件限制的要求。
本次课设采用8255A工作方式0,其A口充当打印机数据线,C口的PC0接打印机选通信号线
,C口的PC4接打印机“忙”线BUSY,B口不用,8255A的初始化可以通过74LS138译码器来实现。
为了用键盘来设定打印内容,可以先定义一个数据段,然后调用DOS的1号功能完成数据存储。
在满足一定的条件下,CPU现将打印内容依次送到8255A,然后再送到打印机打印,数据全部传送并打印完毕后退出程序。
关键词:
打印机8255A译码器DOS调用
1.并行接口简介
一般来说,外设接口可以分为两类:
[1]串行接口:
一组数据按位顺序在一根线上一次传输。
[2]并行接口:
一组数据在多根线上同时传输。
并行接口连接CPU与并行外设,实现两者间的并行通信,在信息传送过程中,起到输出锁存或输入缓冲的作用。
并行接口的典型硬件结构包括:
[1]一个或一个以上具有锁存或缓冲的数据端口
[2]与CPU进行数据交换所必须的控制和状态信号
[3]与外设进行数据交换所必须的控制和状态信号
[4]端口译码电路
[5]控制电路
2.可编程并行接口芯片8255A
2.1可编程接口的概念
8255A是常用的可编程接口芯片,可编程接口芯片即指电路的工作状态可由计算机指令编程控制的芯片。
目前所用的接口芯片大部分是多通道、多功能的。
多通道即指一个接口芯片一面与CPU连接,另一面可接几个外设。
多功能即指一个接口芯片能实现多种接口功能。
接口芯片中的各硬件单元不是固定接死而是可以通过编程来控制。
编程控制是指通过计算机指令选择通用接口中的不同通道和不同功能。
8255A是一个通用的可编程的并行接口芯片,它有三个并行I/O口,又可通过编程设置多种工作方式,价格低廉,使用方便,可以直接与Intel系列的芯片连接使用,在中小系统中有着广泛的应用。
2.28255A的内部结构
2.2.1并行输入/输出端口
8255A的内部结构如图2.1所示。
8255A芯片包括3个8位端口:
A口、B口和C口,它们均可作为CPU与外设通信时的缓冲器或锁存器,用作缓冲器时是输入接口,用作锁存器时是输出接口。
图2.18255A内部结构图
2.2.2A组和B组控制
8255A的3个端口都没有自己独立的控制部件,内部将端口分为两组,A组由A口和C口的高4位组成,B组由B口和C口的低4位组成。
2.2.3读/写控制电路
8255A的读/写控制电路接收来自CPU的控制命令,并根据命令向片内各功能部件发出操作命令。
例如
为低电平时表示8255A芯片被选中,该片选信号由CPU的地址线通过译码产生。
和
控制8255A和CPU之间的数据或信息的传输方向。
端口选择控制由A1和A0的组合状态提供,这两个控制信号提供4个端口地址,即A、B、C三个端口和一个控制端口地址。
2.2.4数据总线缓冲器
这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。
输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。
2.38255A的管脚
8255A是一个标准的40管脚芯片(见附录),可分为3个部分:
与外设连接的I/O线,与CPU连接的系统总线以及电源线。
2.3.1与外设连接的管脚
8255A共有3个8位数据端口,与外设连接的管脚共有24位。
其中A口为PA0至PA7,B口为PB0至PB7,C口为PC0至PC7,特别地,C口可有若干根复用线用于联络信号或状态信号,其具体定义与端口的工作方式有关。
2.3.2与CPU连接的管脚
与CPU连接的管脚包括:
D0至D7:
8位,双向,三态数据线,用来与系统数据总线相连;
RESET:
复位信号,高电平有效,输入,用来清除8255A的内部寄存器,并置A口,B口,C口均为输入方式;
:
片选,输入,用来决定芯片是否被选中;
:
读信号,输入,控制8255A将数据或状态信息送给CPU;
:
写信号,输入,控制CPU将数据或控制信息送到8255A;
A1A0状态组合与端口操作关系如表2-1所示。
2.3.3电源线与地线
8255A的电源引脚为Vcc和GND,Vcc一般取+5V,与其他常用芯片相同。
表2-1A1A0组合与端口操作关系
A1
A0
功能
0
0
0
1
0
读端口A数据
0
1
0
1
0
读端口B数据
1
0
0
1
0
读端口C数据
0
0
1
0
0
写数据到端口A
0
1
1
0
0
写数据到端口B
1
0
1
0
0
写数据到端口C
1
1
1
0
0
写命令到控制寄存器
X
X
X
X
1
数据总线呈高阻状态
1
1
0
1
0
非法条件
X
X
1
1
0
数据总线呈高阻状态
2.48255A的工作方式及编程
2.4.18255A的工作方式
8255A有3中工作方式:
[1]方式0——基本输入/输出方式
[2]方式1——选通输入/输出方式
[3]方式2——双向传输方式
方式0主要工作在无条件的输入/输出方式下,A口、B口和C口均可工作在此方式下被设置成输入/输出口,但不能既做输入口又做输出口C口的输出位可由用户直接独立设置为0或1。
方式1主要工作在异步或条件传输方式下,需要先检查状态然后才能传输数据,仅有A口和B口可工作在方式1,由于条件传输需要联络线,所以C口的某些位分别作为A口和B口提供3根联络线,以便于8255A和CPU之间传送信息和中断请求信号。
方式2的双向传输方式是指在同一端口内分时进行输入/输出操作。
只有A口可以工作在此方式下,需要由C口提供PC3至PC7共5个控制信号进行联络。
这种联络信号是由8255A内部规定的,而不由使用者指定。
此方式应用于并行外部设备既可以作为输入设备,又可以作为输出设备,并且输入输出动作不会同时进行的场合。
2.4.28255A的编程
8255A的编程就是用户在使用8255A之前,用软件来定义端口的工作方式,选择所需要的功能,工作方式是由方式控制字来决定的。
(1)方式控制字
8255A分为A口、B口和C口即A、B两组,其控制字格式如图2所示。
D7D6D5D4D3D2D1D0
1
A组控制B组控制
图2.2方式控制字
D7=1为控制字的标志,A组由D6、D5、D4和D3组成,B组由D2、D1、D0组成,各口工作方式的选择如表2所示。
表2-2工作方式选择
D6D5
00
01
1X
D2
0
1
A口
方式0
方式1
方式2
B口
方式0
方式1
对应的各口I/O选择如表3所示。
表2-3各口输入/输出选择
D4
A口
D1
B口
D3
C口上半部
D0
C口下半部
0
输出
0
输出
0
输出
0
输出
1
输入
1
输入
1
输入
1
输入
(2)C口清0/置1控制字
清0称为复位操作,置1称为置位操作,其格式如图3所示。
D7D6D5D4D3D2D1D0
0
X
X
X
PC0至PC7的编码
图2.3C口置位复位控制字
D7=0为该控制字的标志,D6、D5和D4没有定义,可为任意态,通常取0,D3、D2和D1共组成8种编码对应C口的PC0至PC7,D0=0将D3D2D1编码所对应的C口某位清0,D0=1则是进行对应的置1操作。
例如,要对C口的PC2为进行置1操作,则D7D6D5D4=0,D3D2D1=010,D0=1,控制字为00000101B,相应的置1程序段如下。
MOVDX,控制口地址
MOVAL,00000101B
OUTDX,AL
特别注意:
该控制字是通过写入8255A的控制寄存器来达到对C口的指定位进行置位/复位操作的,对A口和B口均不适用。
2.4.38255A的初始化
初始化就是在完成硬件连接之后,使用8255A接口芯片时,我们要对它进行编程,即将相关的方式控制字和C口置位/复位控制字送入8255A,以设定接口芯片的工作方式和选择芯片的接口功能。
这是8255A进入工作状态前,必须要做的工作。
需要特别注意的是:
两种不同类型的控制字都是写入同一个端口,或者说在“out”指令中,使用的是同一个端口地址。
初始化完成后:
当数据端口作为输入接口时,执行输入IN指令从输入设备得到外设数据;
当数据端口作为输出接口时,执行输出OUT指令将把CPU的数据送给输出设备。
3.74LS138译码器
由于在设定8255A初始化编写控制字时需要利用译码器,我选用了常用的74LS138译码器,它有3个输入控制使能端,C、B、A共3个输入端,对应8种状态组合,还有8个输出端,输出为低电平有效,其功能表如表3-1所示。
表3-174LS138功能表
输入
输出
G
C
B
A
X
H
X
X
X
X
H
H
H
H
H
H
H
H
X
X
H
X
X
X
H
H
H
H
H
H
H
H
L
X
X
X
X
X
H
H
H
H
H
H
H
H
H
L
L
L
L
L
L
H
H
H
H
H
H
H
H
L
L
L
L
H
H
L
H
H
H
H
H
H
H
L
L
L
H
L
H
H
L
H
H
H
H
H
H
L
L
L
H
H
H
H
H
L
H
H
H
H
H
L
L
H
L
L
H
H
H
H
L
H
H
H
H
L
L
H
L
H
H
H
H
H
H
L
H
H
H
L
L
H
H
L
H
H
H
H
H
H
L
H
H
L
L
H
H
H
H
H
H
H
H
H
H
L
4.打印机并行标准接口信号
打印机并行标准接口(Centronics)信号如表4-1所示。
表4-1Centronics标准引脚信号
引脚
名称
方向
功能
1
入
数据选通,有效时接收数据
2-9
DATA1至DATA8
入
数据线
10
出
响应信号,有效时准备接收数据
11
BUSY
出
忙信号,有效时不能接收数据
12
PE
出
纸用完
13
SLCT
出
选择联机,指出打印机不能工作
14
入
自动换行
31
入
打印机复位
32
ERROR
出
出错
36
SLCTIN
入
有效时打印机不能工作
简写
,用于数据选通,来自CPU的数据选通信号使打印机控制器转入数据接收处理。
DATA1至DATA8是与计算机相连的8根数据线。
简写
,是打印机对CPU的回答信号,表示已处理好CPU所发来的数据。
用于初始化输入,是来自CPU的信号,它对打印机进行初始化。
BUSY是“忙”线,高电平有效,表示打印机忙,不能接收数据。
忙的原因:
[1]打印机脱机。
[2]打印机正在接收数据。
[3]打印纸用完。
[4]打印机故障。
打印机接收CPU数据过程是:
当CPU准备好输出打印的一个数据时,通过并行接口送给打印机的数据引脚D0至D7同时将数据选通信号
送给打印机。
答应应急收到该信号后,把数据锁存到内部缓冲区,同时在BUSY信号线上发出忙信号。
打印机处理完数据后撤销忙信号,同时向CPU发送响应信号
,CPU根据BUSY信号和
信号判断是否发送下一个打印数据。
5.并行打印机控制设计
5.1硬件接线图
本设计所需的硬件设施主要有PC机、打印机、8255A芯片和74LS138芯片以及导线若干,示意图如图4所示。
在Protel99se中硬件接线图如图5.1所示。
8086CPU8255A打印机
图5.1并行打印机控制设计硬件接线示意图
说明:
CPU与8255A对应的8位数据线以及读/写信号线相连,8255A选择工作方式0,在实验室8086CPU提供起始地址为300H,因此选择A9至A3以及M/
参与74LS138译码。
CPU提供A15至A0共16根地址线,选择A15至A10不定义,即为0。
A9和A8都为1,相与后输出接译码器的高电平有效使能端。
A7不定义,即为0。
M/
和A6都为0,分别接到译码器的低电平有效使能端。
A2和A1分别接8255A的A1和A0。
A5A4A3全为0,接到译码器的3个信号输入端,则译码器输出端为
。
A0不用,即为0。
则完整的16根地址线A15至A0为:
XXXXXX1100000000B,其中高位X取0,则有输出端输出地址为:
1100000000B,即300H,将
输出接到8255A的选通信号端
即可。
对于8255A的3个8位输出端,选择A口的PA0至PA7分别接到打印机的D0至D7,作为打印机的数据线。
C口的PC0接打印机的
,作为打印机的数据选通信号,PC7接打印机的BUSY线,用于接收打印机是否“忙”的信息。
则有A口为输出方式,C口高4位为输入方式,低4位为输出方式,B口没用,设为输出方式。
由此知8255A在方式0下的方式控制字为:
10001000B,即88H,则可对8255A进行初始化。
对于C口,初始化后,首先要使打印机的数据选通信号线无效,即为高电平,PC0置1控制字为00000001B。
一定条件下,CPU将打印内容下先送到8255A再送到打印机,使打印机选通信号有效,PC0清0控制字为00000000B,打印机接收数据打印后再次使选通信号无效,循环完成打印。
图5.2硬件接线图
5.2程序设计
5.2.1程序流程图
图5.3程序流程图
5.2.2源程序
A_PORTEQU300H
B_PORTEQU302H
C_PORTEQU304H
CTRL_PORTEQU306H
DATASEGMENT
BUFFDB200DUP(?
)
MESSAGEDB'pleaseinputinformationandstrike"Enter"toprint'
DB0dh,0ah
DB'strike"Esc"toexit',0dh,0ah,'$';系统提示信息
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,200;循环次数设定
LEASI,BUFF
MOVAH,09H;显示系统提示信息
LEADX,MESSAGE
INT21H
L1:
MOVAH,1;键盘设定打印内容
INT21H
MOV[SI],AL;将打印内容存入BUFF中
CMP[SI],1BH;判断是否是ESC键
JEFINISH;若是则退出
CMPAL,0DH;回车键结束数据输入
JEL2;转入打印程序
INCSI;转入循环存数
LOOPL1
L2:
MOVDX,CTRL_PORT;初始化8255A
MOVAL,88H;初始化控制字10001000B
OUTDX,AL
MOVAL,0FH;使数据选通信号
为高电平
OUTDX,AL;置pc0=1,置1控制字00000001B
MOVCX,200;设置循环次数
LEADI,BUFF
L3:
MOVAL,[DI];从BUFF中取数据
MOVBL,AL;保存数据
L4:
MOVDX,C_PORT;判断打印机的状态
INAL,DX;查看BUSY信息
TESTAL,80H;检测pc7口状态
JNZL3;若忙,则等待
MOVDX,A_PORT;送数据到8255A
MOVAL,BL
OUTDX,AL
CMPAL,0DH;判断回车键
JNEL5
MOVDL,0AH;若是回车键,则输出一行空行
MOVAH,02H
INT21H
L5:
MOVDX,CTRL_PORT;送数据选通信号
MOVAL,0H;
清0,清0控制字00000000B
OUTDX,AL
NOP;延时
NOP
MOVAL,1H;
置1,置1控制字00000001B
OUTDX,AL
INCDI
LOOPL3;进行下一轮循环
FINISH:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
5.2.3程序调试及结果分析
根据题意要求,本程序主要需要完成以下三个步骤:
[1]设定数据段用于存放需要打印的内容。
[2]通过并行接口讲一个打印数据由CPU送入8255A锁存,在打印机BUSY信号不忙,将打印机数据选通信号
信号置为有效,8255A将打印数据再送给打印机,然后置
无效完成本次打印任务。
[3]步骤[2]完成后,通过程序中的循环结构依次完成打印数据由CPU经8255A再到打印机打印。
在Masmforwindows实验集成环境2007中调试程序过程如下:
完成汇编和连接后按运行屏幕分两行显示:
pleaseinputinformationandstrike“Enter”toprint
strike“Esc”toexit
按Esc后退出程序。
在汇编连接后在DOS环境下进行调试,利用Addwatch查看用于存放打印机打印内容的数据段BUFF,显示:
BUFFbyte[200]“”,按F9运行程序后,根据屏幕显示内容输入打印字符例如“hjsdfhsjdfhh”,再按Esc,利用Addwatch查看BUFF,显示“BUFFbyte[200]hjsdfhsjdfhh←”。
由于程序设计由按下回车键“Enter”来结束打印字符的输入,再转入打印阶段,受硬件条件限制没有接到打印机,按照这运行后因无外设程序不再响应。
调试发现,用键盘来设定打印内容已完成。
打印阶段,从上文程序及下文流程图检验:
8255初始化后CPU将打印字符由数据缓冲器送到打印机,不忙并置选通信号有效,接受打印再封锁选通信号执行打印,再循环控制完成所有打印。
6.心得体会
通过学习先期课程C语言、微机原理,我对程序设计有了一定的了解,学习到了程序设计的一般方法和步骤。
模拟电子技术和数字电子技术的学习使我对硬件有了更深的认识。
综合到微机原理与接口技术,我发现自己还有很多知识还很不全面。
在本次设计并行打印机控制接口过程中,我重温了相关知识,有了进一步的提高。
特别地对于8255A这一微机系统中应用最广泛的并行I/O接口芯片,我更了解了其内部结构、各管脚功能、工作方式、初始化以及如何进行并行接口的设计。
在设计的过程中,我曾遇到一些难题,查阅资料特别是在同学的帮助下基本解决。
同时更感觉到自己所学的知识非常有限,不能很好的应用到实际问题中来,以后要加强相关知识的学习,提高自己的理论水平和动手能力。
参考文献
[1]周佩玲.微机原理与接口技术第2版.北京:
电子工业出版社,2008.3
[2]谭浩强.C语言程序设计.北京:
清华大学出版社,1999
[3]赵国相.微机计算机原理与接口技术第四版.北京:
科学出版社,2004.4
[4]耿恒山.微机原理与接口第一版.北京:
中国水利水电出版社,2005.10
[5]杨立.微型计算机原理与接口技术第一版.北京:
中国水利水电出版社,2005.4
[6]段承先.微型计算机原理及接口技术.北京:
兵器工业出版社,2000
[7]谢瑞和.微型计算机原理与接口技术教程第一版.北京:
科学出版社,2005.8
[8]康华光.电子技术基础数字部分第五版.北京:
高等教育出版社,2006.1
附录
1、8255A管脚如图8.1所示:
图8.18255A管脚图
2、74LS138管脚如图8.2所示: